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