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