timm/convnext_small.in12k_ft_in1k

timm
Clasificación de imagen

Un modelo de clasificación de imágenes ConvNeXt. Preentrenado en timm sobre ImageNet-12k (un subconjunto de 11821 clases del ImageNet-22k completo) y ajustado en ImageNet-1k por Ross Wightman. Entrenamiento en ImageNet-12k realizado en TPUs gracias al apoyo del programa TRC. Ajuste fino realizado en instancias en la nube de 8x GPU de 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_small.in12k_ft_in1k', pretrained=True)
model = model.eval()

# obtener transformaciones específicas del modelo (normalización, redimensionado)
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)) # añadir una dimensión al lote de imágenes

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_small.in12k_ft_in1k',
pretrained=True,
features_only=True,
)
model = model.eval()

# obtener transformaciones específicas del modelo (normalización, redimensionado)
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)) # añadir una dimensión al lote de imágenes

for o in output:
    print(o.shape) # imprimir la forma de cada mapa de características en la salida

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_small.in12k_ft_in1k',
pretrained=True,
num_classes=0, # eliminar la capa clasificadora
)
model = model.eval()

# obtener transformaciones específicas del modelo (normalización, redimensionado)
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 de forma (tamaño_lote, num_features)

# o equivalente
output = model.forward_features(transforms(img).unsqueeze(0))
# la salida es sin agrupar, un tensor de forma (1, 768, 7, 7)

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

Funcionalidades

Tipo de modelo: Clasificación de imágenes / columna vertebral de características
Parámetros (M): 50.2
GMACs: 8.7
Activaciones (M): 21.6
Tamaño de imagen: entrenamiento = 224 x 224, prueba = 288 x 288
Documentos: 'A ConvNet for the 2020s: https://arxiv.org/abs/2201.03545'
Dataset: ImageNet-1k
Pretrain Dataset: ImageNet-12k

Casos de uso

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