vit_relpos_base_patch16_224.sw_in1k

timm
Clasificación de imagen

Un modelo para clasificación de imágenes basado en Vision Transformer (ViT). Esta es una variación específica de timm de la arquitectura ViT con incrustaciones de posición relativa, sin token de clase y representación final mediante el promedio global de tokens. Entrenado en ImageNet-1k usando una receta de timm descrita a continuación.

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('vit_relpos_base_patch16_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 imagen única en lote de 1

# obtener las 5 principales probabilidades y los 5 principales índices de clase
top5_probabilities, top5_class_indices = torch.topk(output.softmax(dim=1) * 100, k=5)

Incrustaciones 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(
'vit_relpos_base_patch16_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)) # la salida es un tensor de forma (batch_size, num_features)

# o equivalente

output = model.forward_features(transforms(img).unsqueeze(0))
# la salida no está agrupada, un tensor de forma (1, 196, 768)

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

Funcionalidades

Modelo de clasificación de imágenes / columna vertebral de características
86.4 millones de parámetros
16.8 GMACs
17.6 millones de activaciones
Tamaño de la imagen: 224 x 224
Basado en la receta de entrenamiento/preparación previa de Swin Transformer con modificaciones
Optimizador AdamW, recorte de gradiente, promediado de peso EMA
Programación de tasa de aprendizaje coseno con calentamiento

Casos de uso

Clasificación de imágenes
Generación de incrustaciones de imágenes
Extracción de características de imágenes