timm/vit_relpos_small_patch16_224.sw_in1k

timm
Clasificación de imagen

Un modelo de clasificación de imágenes 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 en timm usando la receta descrita a continuación. Detalles de la receta: Basado en la receta de entrenamiento / preentrenamiento de Swin Transformer con modificaciones (relacionadas con las recetas de DeiT y ConvNeXt). Optimización AdamW, recorte de gradiente, promedio de pesos EMA. Programación LR cosenoidal con calentamiento.

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_small_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)) # descomprimir una sola imagen en un lote de 1

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_small_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 con 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, un tensor con forma (1, 196, 384)

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

Funcionalidades

Tipo de modelo: Clasificación de imágenes / columna vertebral de características
Parámetros (M): 22.0
GMACs: 4.2
Activaciones (M): 9.4
Tamaño de la imagen: 224 x 224

Casos de uso

Clasificación de imágenes
Incrustaciones de imágenes