deepmind/vision-perceiver-conv

deepmind
Clasificación de imagen

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