PoolFormer (modelo S12)

sail
Clasificación de imagen

PoolFormer es un modelo que reemplaza el mezclador de tokens de atención en transformadores con un operador extremadamente simple, el 'pooling'. Los transformadores han demostrado gran potencial en tareas de visión por computadora. Existe una creencia común de que su módulo mezclador de tokens basado en atención contribuye más a su competencia. Sin embargo, trabajos recientes muestran que el módulo basado en atención en transformadores puede ser reemplazado por MLPs espaciales y los modelos resultantes aún funcionan bastante bien. Basándonos en esta observación, hipotetizamos que la arquitectura general de los transformadores, en lugar del módulo específico de mezcla de tokens, es más esencial para el rendimiento del modelo. Para verificar esto, deliberadamente reemplazamos el módulo de atención en transformadores con un operador de 'pooling' espacial extremadamente simple para realizar únicamente la mezcla de tokens más básica. Sorprendentemente, observamos que el modelo derivado, denominado PoolFormer, logra un rendimiento competitivo en múltiples tareas de visión por computadora. Por ejemplo, en ImageNet-1K, PoolFormer alcanza un 82.1% de precisión en el top-1, superando a los modelos bien afinados de visión transformer/MLP como DeiT-B/ResMLP-B24 por 0.3%/1.1% de precisión con 35%/52% menos parámetros y 48%/60% menos MACs. La eficacia de PoolFormer verifica nuestra hipótesis y nos impulsa a iniciar el concepto de 'MetaFormer', una arquitectura general abstracta de transformadores sin especificar el mezclador de tokens. Basándonos en los extensos experimentos, argumentamos que MetaFormer es el jugador clave para lograr resultados superiores en modelos recientes tipo transformador y MLP en tareas de visión. Este trabajo llama a más investigaciones futuras dedicadas a mejorar MetaFormer en lugar de centrarse en los módulos de mezcla de tokens. Además, nuestro propuesto PoolFormer podría servir como un punto de partida básico para futuros diseños de arquitectura MetaFormer.

Como usar

Cómo usar el modelo para clasificar una imagen del dataset COCO 2017 en una de las 1,000 clases de ImageNet:

from transformers import PoolFormerFeatureExtractor, PoolFormerForImageClassification
from PIL import Image
import requests
url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = Image.open(requests.get(url, stream=True).raw)
feature_extractor = PoolFormerFeatureExtractor.from_pretrained('sail/poolformer_s12')
model = PoolFormerForImageClassification.from_pretrained('sail/poolformer_s12')
inputs = feature_extractor(images=image, return_tensors="pt")
outputs = model(**inputs)
logits = outputs.logits
# el modelo predice una de las 1000 clases de ImageNet
predicted_class_idx = logits.argmax(-1).item()
print("Clase predicha:", model.config.id2label[predicted_class_idx])

Actualmente, tanto el extractor de características como el modelo soportan PyTorch.

Funcionalidades

Reemplazo del mezclador de tokens de atención con 'pooling' espacial
Arquitectura MetaFormer desde los transformadores
Modelo de visión para clasificación de imágenes
Reduce parámetros y MACs respecto a otros modelos

Casos de uso

Clasificación de imágenes