maxvit_small_tf_224.in1k

timm
Clasificación de imagen

Un modelo oficial de clasificación de imágenes MaxViT. Entrenado en Tensorflow en ImageNet-1k por los autores del documento. Portado de la implementación oficial de Tensorflow (https://github.com/google-research/maxvit) a PyTorch por Ross Wightman.

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('maxvit_small_tf_224.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)) # agregar una dimensión para hacer un batch 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('maxvit_small_tf_224.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)) # agregar una dimensión para hacer un batch de 1

for o in output:
  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('maxvit_small_tf_224.in1k', pretrained=True, num_classes=0) # eliminar la capa clasificadora 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)) # el resultado es un tensor con forma (batch_size, num_features)

# o de forma equivalente (sin necesidad de establecer num_classes=0)

output = model._forward_features(transforms(img).unsqueeze(0))
# el resultado no está agrupado, es un tensor con forma (1, 768, 7, 7)

output = model.forward_head(output, pre_logits=True)
# el resultado es un tensor con forma (1, num_features)

Funcionalidades

Clasificación de imágenes
Extracción del mapa de características
Embeddings de imágenes

Casos de uso

Clasificación de imágenes de alta precisión
Extracción de características detalladas de las imágenes
Generación de embeddings para tareas de aprendizaje profundo