convnext_nano.in12k_ft_in1k

timm
Clasificación de imagen

Un modelo de clasificación de imágenes ConvNeXt. Pre-entrenado en timm en ImageNet-12k (un subconjunto de 11821 clases del ImageNet-22k completo) y ajuste fino en ImageNet-1k por Ross Wightman. Entrenamiento en ImageNet-12k realizado en TPUs gracias al soporte del programa TRC. Ajuste fino realizado en 8x instancias de GPU de la nube Lambda Labs.

Como usar

Clasificación de Imágenes

from urllib.request import urlopen
from PIL import Image
import timm

img = Image.open(urlopen('https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png'))

model = timm.create_model('convnext_nano.in12k_ft_in1k', pretrained=True)
model = model.eval()

# Obtener transformaciones específicas del modelo (normalización, redimensionamiento)
data_config = timm.data.resolve_model_data_config(model)
transforms = timm.data.create_transform(**data_config, is_training=False)

output = model(transforms(img).unsqueeze(0))  # Desenrollar una sola imagen en un lote de 1

top5_probabilities, top5_class_indices = torch.topk(output.softmax(dim=1) * 100, k=5)

Extracción de Mapas de Características

from urllib.request import urlopen
from PIL import Image
import timm

img = Image.open(urlopen('https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png'))

model = timm.create_model('convnext_nano.in12k_ft_in1k', pretrained=True, features_only=True)
model = model.eval()

# Obtener transformaciones específicas del modelo (normalización, redimensionamiento)
data_config = timm.data.resolve_model_data_config(model)
transforms = timm.data.create_transform(**data_config, is_training=False)

output = model(transforms(img).unsqueeze(0))  # Desenrollar una sola imagen en un lote de 1

for o in output:
    print(o.shape)

Embeddings de Imágenes

from urllib.request import urlopen
from PIL import Image
import timm

img = Image.open(urlopen('https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png'))

model = timm.create_model('convnext_nano.in12k_ft_in1k', pretrained=True, num_classes=0)  # eliminar el clasificador nn.Linear
model = model.eval()

# Obtener transformaciones específicas del modelo (normalización, redimensionamiento)
data_config = timm.data.resolve_model_data_config(model)
transforms = timm.data.create_transform(**data_config, is_training=False)

output = model(transforms(img).unsqueeze(0))  # la salida es un tensor con forma (batch_size, num_features)

# o equivalente (sin necesidad de establecer num_classes=0)

output = model.forward_features(transforms(img).unsqueeze(0))  # la salida no está poolificada, un tensor con forma (1, 640, 7, 7)

output = model.forward_head(output, pre_logits=True)  # la salida es un tensor con forma (1, num_features)

Funcionalidades

Tipo de modelo: clasificación de imágenes / columna vertebral de características
Parámetros (M): 15.6
GMACs: 2.5
Activaciones (M): 8.4
Tamaño de imagen: entrenamiento = 224 x 224, prueba = 288 x 288

Casos de uso

Clasificación de imágenes
Extracción de mapas de características
Embeddings de imágenes