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