mixnet_l.ft_in1k
timm
Clasificación de imagen
Un modelo de clasificación de imágenes MixNet. Ajustado fino en ImageNet-1k a partir de los pesos originales de relleno 'SAME' de Tensorflow para su uso en PyTorch.
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('mixnet_l.ft_in1k', pretrained=True)
model = model.eval()
# obtén 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)) # añade una dimensión al tensor para crear 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(
'mixnet_l.ft_in1k',
pretrained=True,
features_only=True,
)
model = model.eval()
# obtén 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)) # añade una dimensión al tensor para crear un lote de 1
for o in output:
# imprime la forma de cada mapa de características en la salida
# ej.:
# torch.Size([1, 32, 112, 112])
# torch.Size([1, 40, 56, 56])
# torch.Size([1, 56, 28, 28])
# torch.Size([1, 160, 14, 14])
# torch.Size([1, 264, 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(
'mixnet_l.ft_in1k',
pretrained=True,
num_classes=0, # remover la clase clasificadora nn.Linear
)
model = model.eval()
# obtén 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 con forma (batch_size, num_features)
# o equivalentemente (sin necesidad de establecer num_classes=0)
output = model.forward_features(transforms(img).unsqueeze(0))
# la salida está sin agrupar, un tensor con forma (1, 1536, 7, 7)
output = model.forward_head(output, pre_logits=True)
# la salida es un tensor con forma (1, num_features)
Funcionalidades
- Clasificación de imágenes / columna vertebral de características
- Parámetros (M): 7.3
- GMACs: 0.6
- Activaciones (M): 10.8
- Tamaño de 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