swinv2-base-patch4-window12-192-22k

microsoft
Clasificación de imagen

El modelo Swin Transformer v2 preentrenado en ImageNet-21k a una resolución de 192x192. Fue presentado en el artículo 'Swin Transformer V2: Scaling Up Capacity and Resolution' por Liu et al. y se lanzó por primera vez en este repositorio. Swin Transformer es un tipo de Vision Transformer. Construye mapas de características jerárquicas al fusionar parches de imágenes en capas más profundas y tiene complejidad computacional lineal con el tamaño de la imagen de entrada debido al cálculo de la autoatención solo dentro de cada ventana local. Por lo tanto, puede servir como una columna vertebral de propósito general tanto para tareas de clasificación de imágenes como 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 complejidad computacional cuadrática con el tamaño de la imagen de entrada debido al cálculo de la autoatención de manera global, Swin Transformer v2 agrega 3 mejoras principales: 1) un método residual post-norm combinado con atención coseno para mejorar la estabilidad del entrenamiento; 2) un método de sesgo de posición continua log-espaciada para transferir efectivamente los modelos preentrenados utilizando 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 vastas 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 clases de ImageNet de 21k:

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-base-patch4-window12-192-22k')
model = AutoModelForImageClassification.from_pretrained('microsoft/swinv2-base-patch4-window12-192-22k')

inputs = processor(images=image, return_tensors='pt')
outputs = model(**inputs)
logits = outputs.logits
# el modelo predice una de las clases de ImageNet de 21k
predicted_class_idx = logits.argmax(-1).item()
print('Clase predicha:', model.config.id2label[predicted_class_idx])

Funcionalidades

Mapas de características jerárquicas
Complejidad computacional lineal
Autoatención local
Método residual post-norm
Atención coseno
Sesgo de posición continua log-espaciada
Preentrenamiento auto-supervisado SimMIM

Casos de uso

Clasificación de imágenes
Reconocimiento denso