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