timm/maxvit_xlarge_tf_384.in21k_ft_in1k

timm
Clasificación de imagen

Un modelo oficial de clasificación de imágenes MaxViT. Entrenado previamente en tensorflow en ImageNet-21k (21843, una instancia específica de ImageNet-22k de Google) y afinado en ImageNet-1k por los autores del artículo. Portado de la implementación oficial en 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_xlarge_tf_384.in21k_ft_in1k', pretrained=True)
model = model.eval()
# get model specific transforms (normalization, resize)
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))  # unsqueeze single image into batch of 1
top5_probabilities, top5_class_indices = torch.topk(output.softmax(dim=1) * 100, k=5)

Extracción de 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_xlarge_tf_384.in21k_ft_in1k', pretrained=True, features_only=True)
model = model.eval()
# get model specific transforms (normalization, resize)
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))  # unsqueeze single image into batch of 1
for o in output:
    # print shape of each feature map in output
    # e.g.:
    # torch.Size([1, 192, 192, 192])
    # torch.Size([1, 192, 96, 96])
    # torch.Size([1, 384, 48, 48])
    # torch.Size([1, 768, 24, 24])
    # torch.Size([1, 1536, 12, 12])
    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_xlarge_tf_384.in21k_ft_in1k', pretrained=True, num_classes=0)  # remove classifier nn.Linear
model = model.eval()
# get model specific transforms (normalization, resize)
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))  # output is (batch_size, num_features) shaped tensor
# or equivalently (without needing to set num_classes=0)
output = model.forward_features(transforms(img).unsqueeze(0))  # output is unpooled, a (1, 1536, 12, 12) shaped tensor
output = model.forward_head(output, pre_logits=True)  # output is a (1, num_features) shaped tensor

Funcionalidades

Modelos Varientes en maxxvit.py
CoAtNet - Combinación de bloques MBConv (separables en profundidad) en las primeras etapas con bloques de atención automática en las 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 mayor anchura para compensar.
Detalles del modelo: Tipo de modelo: Clasificación de imágenes / columna vertebral de características; Parámetros (M): 475.3; GMACs: 292.8; Activaciones (M): 668.8; Tamaño de la imagen: 384 x 384
Papeles: MaxViT: Multi-Axis Vision Transformer: https://arxiv.org/abs/2204.01697
Conjunto de datos de preentrenamiento: ImageNet-21k

Casos de uso

Clasificación de imágenes
Extracción de mapa de características
Obtención de embeddings de imágenes