timm/swin_large_patch4_window12_384.ms_in22k_ft_in1k

timm
Clasificación de imagen

Un modelo de clasificación de imágenes utilizando transformadores Swin. Preentrenado en ImageNet-22k y ajustado en ImageNet-1k por los autores del artículo. Este modelo es altamente eficaz para la clasificación de imágenes y otras aplicaciones relacionadas con la visión por computador.

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_large_patch4_window12_384.ms_in22k_ft_in1k', pretrained=True)
model = model.eval()

# obtener las transformaciones específicas del modelo (normalización, redimensionamiento)
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 crear batch de 1 imagen

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(
'swin_large_patch4_window12_384.ms_in22k_ft_in1k',
pretrained=True,
features_only=True,
)
model = model.eval()

# obtener las transformaciones específicas del modelo (normalización, redimensionamiento)
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 crear batch de 1 imagen

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_large_patch4_window12_384.ms_in22k_ft_in1k',
pretrained=True,
num_classes=0, # eliminar la capa de clasificación nn.Linear
)
model = model.eval()

# obtener las transformaciones específicas del modelo (normalización, redimensionamiento)
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 con forma (batch_size, num_features)

output = model.forward_features(transforms(img).unsqueeze(0))
# salida sin pooling (es decir, un tensor con 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 con forma (batch_size, num_features)

Funcionalidades

Clasificación de imágenes
Extracción de mapas de características
Creación de embeddings de imágenes
Modelo de transformadores jerárquicos utilizando ventanas desplazadas

Casos de uso

Clasificación de imágenes en grandes conjuntos de datos
Análisis de imágenes para aplicaciones de visión por computador
Creación de características intermedias para modelos de aprendizaje profundo
Extracción de características relevantes de imágenes para diversas aplicaciones