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