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