deepmind/vision-perceiver-conv
El modelo Perceiver IO para procesamiento convolucional pre-entrenado en ImageNet (14 millones de imágenes, 1,000 clases) a una resolución de 224x224. El Perceiver IO es un modelo encoder transformer que puede aplicarse 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 (p. ej., 256 o 512), y solo usar las entradas para realizar atención cruzada con los latentes. Esto permite que los requerimientos de tiempo y memoria del mecanismo de auto-atención no dependan del tamaño de las entradas. Los autores emplean consultas de decodificación para decodificar flexiblemente los estados finales ocultos de los latentes y producir resultados 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_batch, num_labels). Como los requerimientos de tiempo y memoria del mecanismo de auto-atención no dependen del tamaño de las entradas, los autores de Perceiver IO pueden entrenar el modelo directamente en valores de píxeles en bruto, en lugar de en parches como se hace en ViT. Este modelo particular emplea una red de preprocesamiento conv+maxpooling 2D simple en los valores de píxeles, antes de usar las entradas para atención cruzada con los latentes. 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 muestra cómo usar este modelo en PyTorch:
from transformers import PerceiverFeatureExtractor, PerceiverForImageClassificationConvProcessing
import requests
from PIL import Image
feature_extractor = PerceiverFeatureExtractor.from_pretrained("deepmind/vision-perceiver-conv")
model = PerceiverForImageClassificationConvProcessing.from_pretrained("deepmind/vision-perceiver-conv")
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
# prepare input
inputs = feature_extractor(image, return_tensors="pt").pixel_values
# forward pass
outputs = model(inputs)
logits = outputs.logits
print("Predicted class:", model.config.id2label[logits.argmax(-1).item()])
# should print Predicted class: tabby, tabby cat
Funcionalidades
- Modelo transformer encoder
- Pre-entrenado en ImageNet con 14 millones de imágenes
- Auto-atención en un conjunto de vectores latentes pequeños
- Atención cruzada con las entradas
- Decodificación flexible con consultas de decodificador
- Preprocesamiento conv+maxpooling 2D
- Puede aplicarse a cualquier modalidad (texto, imágenes, audio, video, etc.)
Casos de uso
- Clasificación de imágenes usando el modelo en su forma bruta
- Ser fine-tuned en versiones para tareas específicas
- Extracción de características útiles para tareas posteriores con un conjunto de datos de imágenes etiquetadas