vision-perceiver-fourier de deepmind
El modelo Perceiver IO es un modelo de codificador transformador que puede ser aplicado a cualquier modalidad (texto, imágenes, audio, video, etc.). La idea principal es emplear el mecanismo de auto-atención en un conjunto de vectores latentes no demasiado grande (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 la decodificación, los autores emplean las llamadas consultas de decodificador, que permiten decodificar flexiblemente los estados finales ocultos 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 (tamaño_del_lote, num_labels). La arquitectura del Perceiver IO permite entrenar el modelo directamente en valores de píxeles sin procesar, en lugar de en parches, como se hace en ViT. Este modelo particular solo agrega incrustaciones de posición Fourier 2D fijas a los valores de píxeles. Al pre-entrenar el modelo, aprende una representación interna de las imágenes que luego puede usarse 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 reemplazando el decodificador de clasificación.
Como usar
Aquí se explica cómo usar este modelo en PyTorch:
from transformers import PerceiverImageProcessor, PerceiverForImageClassificationFourier
import requests
from PIL import Image
processor = PerceiverImageProcessor.from_pretrained("deepmind/vision-perceiver-fourier")
model = PerceiverForImageClassificationFourier.from_pretrained("deepmind/vision-perceiver-fourier")
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
# preparar entrada
inputs = processor(image, return_tensors="pt").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
- Puede aplicarse a cualquier modalidad (texto, imágenes, audio, video, etc.)
- Emplea el mecanismo de auto-atención en un conjunto de vectores latentes no demasiado grande
- Los requisitos de tiempo y memoria del mecanismo de auto-atención no dependen del tamaño de las entradas
- Usa consultas de decodificador para decodificar flexiblemente los estados finales ocultos de los latentes
- El modelo se entrena directamente en valores de píxeles sin procesar
- Agrega incrustaciones de posición Fourier 2D fijas a los valores de píxeles
- Aprende una representación interna de las imágenes que puede usarse para tareas posteriores
Casos de uso
- Clasificación de imágenes