google/vit-base-patch16-224
El modelo Vision Transformer (ViT) está preentrenado en ImageNet-21k (14 millones de imágenes, 21,843 clases) a una resolución de 224x224, y ajustado en ImageNet 2012 (1 millón de imágenes, 1,000 clases) a una resolución de 224x224. Fue presentado en el artículo 'An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale' por Dosovitskiy et al. y lanzado por primera vez en este repositorio. Sin embargo, los pesos fueron convertidos del repositorio timm por Ross Wightman, quien ya había convertido los pesos de JAX a PyTorch. Los créditos son para él. El Vision Transformer (ViT) es un modelo de codificador transformador (similar a BERT) preentrenado en una gran colección de imágenes de manera supervisada, específicamente en ImageNet-21k, a una resolución de 224x224 píxeles. Luego, el modelo fue ajustado en ImageNet (también conocido como ILSVRC2012), un conjunto de datos compuesto por 1 millón de imágenes y 1,000 clases, también a una resolución de 224x224. Las imágenes se presentan al modelo como una secuencia de parches de tamaño fijo (resolución de 16x16), que se incrustan linealmente. También se añade un token [CLS] al comienzo de una secuencia para usarlo en tareas de clasificación. Además, se agregan incrustaciones de posición absoluta antes de alimentar la secuencia a las capas del codificador del Transformador.
Como usar
Aquí hay un ejemplo de 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 ViTImageProcessor, ViTForImageClassification
from PIL import Image
import requests
url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = Image.open(requests.get(url, stream=True).raw)
processor = ViTImageProcessor.from_pretrained('google/vit-base-patch16-224')
model = ViTForImageClassification.from_pretrained('google/vit-base-patch16-224')
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])
Funcionalidades
- Preentrenado en ImageNet-21k
- Ajustado en ImageNet 2012
- Transformador codificador (similar a BERT)
- Resolución de imagen de entrada: 224x224
- Parches de imagen de tamaño fijo: 16x16
- Capacidad para tareas de clasificación de imagen
Casos de uso
- Clasificación de imágenes
- Extracción de características para tareas de visión por computadora
- Entrenamiento de nuevos clasificadores usando capas lineales sobre el codificador preentrenado