google/vit-base-patch32-384
El Vision Transformer (ViT) es un modelo de codificador transformer (similar a BERT) preentrenado en una gran colección de imágenes de manera supervisada, a saber, ImageNet-21k, a una resolución de 224x224 píxeles. Luego, el modelo fue afinado 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 más alta de 384x384. Las imágenes se presentan al modelo como una secuencia de parches de tamaño fijo (resolución 32x32), que se incrustan linealmente. También se agrega un token [CLS] al comienzo de una secuencia para usarlo en tareas de clasificación. Además, se agregan incrustaciones de posición absolutas antes de pasar la secuencia a las capas del codificador Transformer. Al preentrenar el modelo, aprende una representación interna de las imágenes que luego puede ser utilizada para extraer características útiles para tareas posteriores. Por ejemplo, si se tiene un conjunto de datos de imágenes etiquetadas, se puede entrenar un clasificador estándar colocando una capa lineal sobre el codificador preentrenado. Es común colocar una capa lineal sobre el token [CLS], ya que el último estado oculto de este token puede verse como una representación de toda la imagen.
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 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-base-patch32-384')
model = ViTForImageClassification.from_pretrained('google/vit-base-patch32-384')
inputs = feature_extractor(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])
Funcionalidades
- Codificador transformer similar a BERT
- Preentrenado en ImageNet-21k
- Afinado en ImageNet con resolución 384x384
- Incrustación lineal de parches de imagen
- Token [CLS] para tareas de clasificación
- Incrustaciones de posición absolutas
Casos de uso
- Clasificación de imágenes
- Extracción de características de imágenes para tareas posteriores
- Entrenamiento de un clasificador utilizando el codificador preentrenado
- Aplicaciones de visión por computadora