microsoft/beit-base-patch16-224
El modelo BEiT (Imagen-BERT Titulización Pre-Entrenada) es un Transformer de Visión (ViT), que es un modelo de codificador de transformador (similar a BERT). A diferencia del modelo ViT original, BEiT está preentrenado con una gran colección de imágenes de manera auto-supervisada, específicamente en ImageNet-21k, con una resolución de 224x224 píxeles. El objetivo del preentrenamiento es predecir tokens visuales del codificador VQ-VAE de DALL-E de OpenAI, basado en parches enmascarados. Luego, el modelo fue afinado de manera supervisada en ImageNet, un conjunto de datos que comprende 1 millón de imágenes y 1,000 clases, también con resolución de 224x224. Las imágenes se presentan al modelo como una secuencia de parches de tamaño fijo (resolución 16x16), que están linealmente embebidos. A diferencia de los modelos ViT originales, los modelos BEiT utilizan embeddings de posición relativa (similares a T5) en lugar de embeddings de posición absoluta, y realizan la clasificación de imágenes mediante el pooling promedio de los estados ocultos finales de los parches, en vez de colocar una capa lineal encima del estado oculto final del token [CLS]. Al preentrenar el modelo, aprende una representación interna de las imágenes que luego puede ser usada 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. Normalmente, se coloca una capa lineal encima del token [CLS], ya que el último estado oculto de este token puede verse como una representación de toda una imagen. Alternativamente, se pueden agrupar promedio los estados ocultos finales de los embeddings de los parches, y colocar una capa lineal encima de eso.
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 BeitImageProcessor, BeitForImageClassification
from PIL import Image
import requests
url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = Image.open(requests.get(url, stream=True).raw)
processor = BeitImageProcessor.from_pretrained('microsoft/beit-base-patch16-224')
model = BeitForImageClassification.from_pretrained('microsoft/beit-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])
Actualmente, tanto el extractor de características como el modelo son compatibles con PyTorch.
Funcionalidades
- Clasificación de imágenes
- Preentrenamiento auto-supervisado en ImageNet-21k
- Fino-tuned en ImageNet 2012
- Utiliza embeddings de posición relativa
- Pooling promedio de los estados ocultos finales de los parches
Casos de uso
- Clasificación de imágenes a partir de conjuntos de datos etiquetados
- Extracción de características útiles para tareas posteriores
- Despliegue de modelos afinados en tareas específicas