microsoft/swinv2-tiny-patch4-window8-256
El modelo Swin Transformer v2 está preentrenado en ImageNet-1k a una resolución de 256x256. Fue introducido en el artículo Swin Transformer V2: Scaling Up Capacity and Resolution por Liu et al. y lanzado por primera vez en este repositorio. El Swin Transformer es un tipo de Vision Transformer que construye mapas de características jerárquicos mediante la fusión de parches de imagen en capas más profundas y tiene una complejidad computacional lineal con respecto al tamaño de la imagen de entrada debido al cálculo de la autoatención solo dentro de cada ventana local. Puede servir como una columna vertebral de propósito general tanto para la clasificación de imágenes como para tareas de reconocimiento denso. A diferencia de los transformadores de visión anteriores, que producen mapas de características de una sola resolución baja y tienen una complejidad computacional cuadrática en relación con el tamaño de la imagen de entrada debido al cálculo de la autoatención global. Swin Transformer v2 agrega tres principales mejoras: 1) un método de residual-post-norm combinado con atención coseno para mejorar la estabilidad del entrenamiento; 2) un método de sesgo de posición continua espaciada logarítmicamente para transferir de manera efectiva modelos preentrenados usando imágenes de baja resolución a tareas posteriores con entradas de alta resolución; 3) un método de preentrenamiento auto-supervisado, SimMIM, para reducir la necesidad de grandes cantidades de imágenes etiquetadas.
Como usar
Aquí se muestra cómo usar este modelo para clasificar una imagen del conjunto de datos COCO 2017 en una de las 1,000 clases de ImageNet:
from transformers import AutoImageProcessor, AutoModelForImageClassification
from PIL import Image
import requests
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
processor = AutoImageProcessor.from_pretrained("microsoft/swinv2-tiny-patch4-window8-256")
model = AutoModelForImageClassification.from_pretrained("microsoft/swinv2-tiny-patch4-window8-256")
inputs = processor(images=image, return_tensors="pt")
outputs = model(**inputs)
logits = outputs.logits
# el modelo predice una de las 1000 clases de ImageNet
predicted_class_idx = logits.argmax(-1).item()
print("Clase predicha:", model.config.id2label[predicted_class_idx])
Para más ejemplos de código, nos referimos a la documentación.
Funcionalidades
- Residuos post-norm
- Atención coseno
- Sesgo de posición continua espaciada logarítmicamente
- Preentrenamiento auto-supervisado SimMIM
Casos de uso
- Clasificación de imágenes
- Tareas de reconocimiento denso