Perceptor IO para visión (embeddings de posición aprendidos)
El modelo Perceptor IO está preentrenado en ImageNet (14 millones de imágenes, 1,000 clases) a una resolución de 224x224. Fue presentado en el artículo Perceiver IO: Una arquitectura general para entradas y salidas estructuradas por Jaegle et al. y fue liberado por primera vez en este repositorio. Perceptor IO es un modelo de codificador transformer que se puede aplicar a cualquier modalidad (texto, imágenes, audio, video, ...). La idea principal es emplear el mecanismo de auto-atención en un conjunto no muy grande de vectores latentes (por ejemplo, 256 o 512), y solo usar las entradas para realizar atención cruzada con los latentes. Esto permite que los requisitos de tiempo y memoria del mecanismo de auto-atención no dependan del tamaño de las entradas. Para decodificar, los autores emplean consultas de descodificador, que permiten decodificar de manera flexible los estados ocultos finales de los latentes para producir salidas de tamaño y semántica arbitrarios. Para la clasificación de imágenes, la salida es un tensor que contiene los logits, de forma (batch_size, num_labels).
Como usar
Aquí está cómo usar este modelo en PyTorch:
from transformers import PerceiverFeatureExtractor, PerceiverForImageClassificationLearned
import requests
from PIL import Image
feature_extractor = PerceiverFeatureExtractor.from_pretrained("deepmind/vision-perceiver-learned")
model = PerceiverForImageClassificationLearned.from_pretrained("deepmind/vision-perceiver-learned")
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
# preparar la entrada
encoding = feature_extractor(image, return_tensors="pt")
inputs = encoding.pixel_values
# paso hacia adelante
outputs = model(inputs)
logits = outputs.logits
print("Clase predicha:", model.config.id2label[logits.argmax(-1).item()])
Debería imprimir Clase predicha: tabby, tabby cat
Funcionalidades
- Preentrenado en ImageNet con 14 millones de imágenes y 1,000 clases
- Utiliza embeddings de posición 1D aprendidos
- Requisitos de tiempo y memoria del mecanismo de auto-atención no dependen del tamaño de las entradas
- Puede ser entrenado directamente en valores de píxeles sin información privilegiada sobre la estructura 2D de las imágenes
Casos de uso
- Clasificación de imágenes