vision-perceiver-fourier de deepmind

deepmind
Clasificación de imagen

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