timm/mobilenetv2_140.ra_in1k
timm
Clasificación de imagen
Un modelo de MobileNet-v2 para clasificación de imágenes. Entrenado en ImageNet-1k en timm usando una plantilla de receta específica. Detalles de la receta: Receta RandAugment RA, inspirada y evolucionada de las recetas RandAugment de EfficientNet, publicada como receta B en ResNet Strikes Back. Optimización de RMSProp (comportamiento de TF 1.0) y promedio de pesos de EMA. Programación de tasa de aprendizaje escalonada (decaimiento exponencial) con calentamiento.
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('mobilenetv2_140.ra_in1k', pretrained=True)
model = model.eval()
# obtener 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 para imagen única en lote de 1
top5_probabilities, top5_class_indices = torch.topk(output.softmax(dim=1) * 100, k=5)
Extracción del 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(
'mobilenetv2_140.ra_in1k',
pretrained=True,
features_only=True,
)
model = model.eval()
# obtener 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 para imagen única en lote de 1
for o in output:
# imprimir forma de cada mapa de características en la salida
# e.g.:
# torch.Size([1, 24, 112, 112])
# torch.Size([1, 32, 56, 56])
# torch.Size([1, 48, 28, 28])
# torch.Size([1, 136, 14, 14])
# torch.Size([1, 448, 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(
'mobilenetv2_140.ra_in1k',
pretrained=True,
num_classes=0, # eliminar clasificador nn.Linear
)
model = model.eval()
# obtener 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 con forma (batch_size, num_features)
# o equivalentemente (sin necesidad de configurar num_classes=0)
output = model.forward_features(transforms(img).unsqueeze(0))
# la salida es sin pool, un tensor con forma (1, 1792, 7, 7)
output = model.forward_head(output, pre_logits=True)
# la salida es un tensor con forma (1, num_features)
Funcionalidades
- Modelo de clasificación de imágenes / backbone de características
- Parámetros (M): 6.1
- GMACs: 0.6
- Activaciones (M): 9.6
- Tamaño de la imagen: 224 x 224
- Receta RandAugment RA
- Optimización RMSProp (comportamiento de TF 1.0)
- Promedio de pesos EMA
- Programación de tasa de aprendizaje escalonada con calentamiento
Casos de uso
- Clasificación de imágenes
- Extracción de mapas de características
- Generación de embeddings de imágenes