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