maxvit_base_tf_224.in21k

timm
Clasificación de imagen

Un modelo oficial de clasificación de imágenes MaxViT. Entrenado en TensorFlow en ImageNet-21k (21843 instancias específicas de Google de ImageNet-22k) por los autores del trabajo. Portado de la implementación oficial de TensorFlow (https://github.com/google-research/maxvit) a PyTorch por Ross Wightman.

Como usar

Clasificación de Imagen

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_base_tf_224.in21k', 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)) # añadir una dimensión para lotes 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_base_tf_224.in21k',
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)) # añadir una dimensión para lotes de 1

for o in output:
# imprimir forma de cada mapa de características en la salida
print(o.shape)

Embeddings de Imagen

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_base_tf_224.in21k',
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 de forma (batch_size, num_features)

# o equivalientemente (sin necesidad de configurar num_classes=0)

output = model.forward_features(transforms(img).unsqueeze(0))
# la salida no está agrupada, es un tensor de forma (1, 768, 7, 7)

output = model.forward_head(output, pre_logits=True)
# la salida es un tensor de forma (1, num_features)

Funcionalidades

CoAtNet - Combinación de bloques MBConv (convolución separable en profundidad) en etapas iniciales con bloques transformadores de autoatención en etapas posteriores.
MaxViT - Bloques uniformes en todas las etapas, cada uno contiene un bloque de convolución MBConv (separable en profundidad) seguido de dos bloques de autoatención con diferentes esquemas de partición (ventana seguida de cuadrícula).
CoAtNeXt - Una arquitectura específica de timm que utiliza bloques ConvNeXt en lugar de bloques MBConv en CoAtNet. Todas las capas de normalización son LayerNorm (sin BatchNorm).
MaxxViT - Una arquitectura específica de timm que utiliza bloques ConvNeXt en lugar de bloques MBConv en MaxViT. Todas las capas de normalización son LayerNorm (sin BatchNorm).
MaxxViT-V2 - Una variación de MaxxViT que elimina la atención de bloque de ventana dejando solo bloques ConvNeXt y atención de cuadrícula con más ancho para compensar.

Casos de uso

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