facebook/dinov2-giant-imagenet1k-1-layer
El Vision Transformer (ViT) es un modelo de codificador transformer (similar a BERT) preentrenado en una gran colección de imágenes de manera autogestionada. Las imágenes se presentan al modelo como una secuencia de parches de tamaño fijo, que se incrustan linealmente. También se agrega un token [CLS] al principio de una secuencia para usarlo en tareas de clasificación. Además, se agregan embeddings de posición absoluta antes de alimentar la secuencia a las capas del codificador Transformer. Cabe destacar que este modelo no incluye ninguna capa afinada. Al preentrenar el modelo, este aprende una representación interna de las imágenes que luego se puede utilizar 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 encima del codificador preentrenado. Se coloca típicamente una capa lineal encima del token [CLS], ya que el último estado oculto de este token puede verse como una representación de una imagen completa.
Como usar
Aquí hay cómo usar este modelo:
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('facebook/dinov2-giant-imagenet1k-1-layer')
model = AutoModelForImageClassification.from_pretrained('facebook/dinov2-giant-imagenet1k-1-layer')
inputs = processor(images=image, return_tensors="pt")
outputs = model(**inputs)
logits = outputs.logits
predicted_class_idx = logits.argmax(-1).item()
print("Clase predicha:", model.config.id2label[predicted_class_idx])
Funcionalidades
- Modelo de codificador transformer (similar a BERT)
- Preentrenado en una colección grande de imágenes
- Aprendizaje autogestionado
- Secuencia de parches de tamaño fijo
- Incrustación lineal
- Token [CLS] para tareas de clasificación
- Embeddings de posición absoluta
- Sin cabezas afinadas
Casos de uso
- Clasificación de imágenes entre una de las 1000 etiquetas ImageNet
- Entrenamiento de clasificadores estándar colocando una capa lineal encima del codificador preentrenado