timm/swin_tiny_patch4_window7_224.ms_in22k

timm
Clasificación de imagen

Un modelo de clasificación de imágenes Swin Transformer. Preentrenado en ImageNet-22k por los autores del artículo. El modelo es del tipo "clasificación de imágenes y extracción de características" con 44.3 millones de parámetros, 4.5 GMACs, 17.1 millones de activaciones, y utiliza imágenes de tamaño 224x224.

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('swin_tiny_patch4_window7_224.ms_in22k', 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)) # ampliar imagen única a lote de 1

from torch import topk, softmax

probabilidades_top5, indices_clase_top5 = topk(softmax(output, 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('swin_tiny_patch4_window7_224.ms_in22k', 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)) # ampliar imagen única a lote 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('swin_tiny_patch4_window7_224.ms_in22k', pretrained=True, num_classes=0)  # eliminar el 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 equivalentemente (sin necesidad de establecer num_classes=0)

output = model.forward_features(transforms(img).unsqueeze(0))
# la salida no está agrupada (es decir, un tensor de forma (batch_size, H, W, num_features) para swin/swinv2 o (batch_size, num_features, H, W) para swinv2_cr

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

Funcionalidades

Clasificación de imágenes
Extracción de mapas de características
Embeddings de imágenes
Preentrenado en ImageNet-22k

Casos de uso

Clasificación de imágenes para diversas aplicaciones
Extracción de características para sistemas de visión por computador
Generación de embeddings para imágenes que pueden usarse en tareas de recuperación o reconocimiento