mnasnet_small.lamb_in1k
timm
Clasificación de imagen
Un modelo de clasificación de imágenes MNasNet. Entrenado en ImageNet-1k utilizando timm con la plantilla de receta descrita a continuación: Una receta de optimizador LAMB similar a ResNet Strikes Back A2 pero 50% más larga con promediado de peso EMA, sin CutMix RMSProp (comportamiento TF 1.0), promediado de peso EMA Programa de tasa de aprendizaje con decaimiento exponencial con warmup.
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('mnasnet_small.lamb_in1k', pretrained=True)
model = model.eval()
# obtenga las transformaciones específicas del modelo (normalización, cambio de tamaño)
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)) # unsqueeze 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 Mapa 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(
'mnasnet_small.lamb_in1k',
pretrained=True,
features_only=True,
)
model = model.eval()
# obtenga las transformaciones específicas del modelo (normalización, cambio de tamaño)
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)) # unsqueeze una sola imagen en un lote de 1
for o in output:
# imprimir la forma de cada mapa de características en la salida
# e.g.:
# torch.Size([1, 8, 112, 112])
# torch.Size([1, 16, 56, 56])
# torch.Size([1, 16, 28, 28])
# torch.Size([1, 32, 14, 14])
# torch.Size([1, 144, 7, 7])
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(
'mnasnet_small.lamb_in1k',
pretrained=True,
num_classes=0, # eliminar clasificador nn.Linear
)
model = model.eval()
# obtenga las transformaciones específicas del modelo (normalización, cambio de tamaño)
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 en forma de (batch_size, num_features)
# o equivalentemente (sin necesidad de establecer num_classes=0)
output = model.forward_features(transforms(img).unsqueeze(0))
# la salida no es agrupada, es un tensor en forma de (1, 1280, 7, 7)
output = model.forward_head(output, pre_logits=True)
# la salida es un tensor en forma de (1, num_features)
Funcionalidades
- Modelo de clasificación de imágenes / backbone de características
- Parámetros (M): 2.0
- GMACs: 0.1
- Activaciones (M): 2.2
- Tamaño de la imagen: 224 x 224
Casos de uso
- Clasificación de imágenes
- Extracción de mapas de características
- Generación de embeddings de imágenes