timm/maxvit_tiny_rw_224.sw_in1k
timm
Clasificación de imagen
Un modelo de clasificación de imágenes MaxViT específico de timm. Entrenado en timm en ImageNet-1k por Ross Wightman. El entrenamiento en ImageNet-1k se realizó en TPUs gracias al apoyo del programa TRC.
Como usar
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_tiny_rw_224.sw_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)) # añadir dimensión batch
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(
'maxvit_tiny_rw_224.sw_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)) # añadir dimensión batch
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_tiny_rw_224.sw_in1k',
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)) # el output es un tensor (batch_size, num_features)
# o equivalentemente (sin necesidad de configurar num_classes=0)
output = model.forward_features(transforms(img).unsqueeze(0))
# el output no está agrupado, es un tensor (1, 512, 7, 7)
output = model.forward_head(output, pre_logits=True)
# el output es un tensor (1, num_features)
Funcionalidades
- Bloques uniformes en todas las etapas, cada uno contiene un bloque de convolución MBConv (separable en profundidad) seguido por dos bloques de autoatención con diferentes esquemas de partición (ventana seguida de cuadrícula).
- Utiliza bloques ConvNeXt en lugar de bloques MBConv en MaxViT.
- Normas de normalización LayerNorm (sin BatchNorm).
Casos de uso
- Clasificación de imágenes
- Extracción de mapas de características
- Cálculo de embeddings de imágenes