google/vit-large-patch16-384

google
Clasificación de imagen

El Vision Transformer (ViT) es un modelo de codificador transformer (similar a BERT) preentrenado en una gran colección de imágenes de forma supervisada, específicamente ImageNet-21k, a una resolución de 224x224 píxeles. Luego, el modelo se ajustó en ImageNet (también conocido como ILSVRC2012), un conjunto de datos que comprende 1 millón de imágenes y 1,000 clases, a una resolución mayor de 384x384. Las imágenes se presentan al modelo como una secuencia de parches de tamaño fijo (resolución 16x16), que se incrustan linealmente. También se agrega un token [CLS] al comienzo de una secuencia para usarlo en tareas de clasificación. Al preentrenar el modelo, aprende una representación interna de las imágenes que luego se puede usar para extraer características útiles para tareas posteriores: si tienes un conjunto de datos de imágenes etiquetadas, por ejemplo, puedes entrenar un clasificador estándar colocando una capa lineal sobre el codificador preentrenado. Normalmente se coloca una capa lineal sobre el token [CLS], ya que el último estado oculto de este token puede considerarse como una representación de toda una imagen.

Como usar

Aquí está 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 ViTFeatureExtractor, ViTForImageClassification
from PIL import Image
import requests
url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = Image.open(requests.get(url, stream=True).raw)
feature_extractor = ViTFeatureExtractor.from_pretrained('google/vit-large-patch16-384')
model = ViTForImageClassification.from_pretrained('google/vit-large-patch16-384')
inputs = feature_extractor(images=image, return_tensors="pt")
outputs = model(**inputs)
logits = outputs.logits
# model predicts one of the 1000 ImageNet classes
predicted_class_idx = logits.argmax(-1).item()
print("Predicted class:", model.config.id2label[predicted_class_idx])

Actualmente, tanto el extractor de características como el modelo soportan PyTorch. Tensorflow y JAX/FLAX están llegando pronto, y la API de ViTFeatureExtractor podría cambiar.

Funcionalidades

Preentrenado en ImageNet-21k con 14 millones de imágenes y 21,843 clases a una resolución de 224x224.
Ajustado en ImageNet 2012 con 1 millón de imágenes y 1,000 clases a una resolución de 384x384.
Transforma imágenes en secuencias de parches de tamaño fijo (16x16).
Uso del token [CLS] para tareas de clasificación.
Embeddings de posición absolutas agregadas antes de alimentar la secuencia a las capas del codificador Transformer.

Casos de uso

Clasificación de imágenes.
Extracción de características de imágenes para tareas posteriores.