Ultralytics YOLO27: Únete a la lista de espera.
Licencia YOLO
Volver al glosario de Ultralytics

Vision Transformer (ViT)

Un Vision Transformer (ViT) divide una imagen en parches y los relaciona mediante autoatención. Explica su arquitectura, variantes y ventajas e inconvenientes frente a las CNN.

Un Vision Transformer (ViT) es una red neuronal que aplica a las imágenes la arquitectura Transformer del modelado del lenguaje. Divide una imagen en parches de tamaño fijo, convierte cada parche en un embedding de token y procesa la secuencia mediante autoatención, de modo que cada parche puede utilizar la información de los demás desde la primera capa. Investigadores de Google presentaron la arquitectura en «An Image is Worth 16x16 Words», donde demostraron que un Transformer puro, sin capas de convolución, iguala a las redes neuronales convolucionales (CNN) de vanguardia en clasificación de imágenes si se preentrena con suficientes datos. Actualmente, los ViT se utilizan como codificadores de imagen en modelos de visión y lenguaje, modelos fundacionales de segmentación y redes troncales autosupervisadas.

Cómo funcionan los Transformers visuales#

Un ViT convierte una imagen en una secuencia y luego la procesa como si fuera texto. Los pasos siguientes utilizan ViT-Base/16 con una imagen de 224×224:

  1. Embedding de parches: La imagen se divide en parches de 16×16 píxeles, formando una cuadrícula de 14×14 con 196 parches. Cada parche se aplana y se multiplica por una matriz aprendida para convertirse en un embedding de 768 dimensiones, que normalmente se implementa como una convolución 16×16 con stride 16.
  2. Token de clase y embeddings de posición: Se antepone a la secuencia un token de clase aprendible y se añaden embeddings de posición aprendibles a cada token. La atención por sí sola ignora el orden, por lo que estos embeddings son la única fuente de información sobre la ubicación original de cada parche.
  3. Codificador Transformer: Una pila de bloques idénticos —12 en ViT-Base— alterna entre la autoatención multi-cabeza, que combina información de todos los tokens, y un perceptrón multicapa de dos capas que utiliza activaciones GELU y transforma cada token por separado. La normalización de capas precede a cada subcapa, que está rodeada por una conexión residual.
  4. Cabezal: La salida final del token de clase alimenta un clasificador lineal. En las tareas densas, como la segmentación, se utilizan en su lugar los tokens de parche, que se reorganizan en una cuadrícula de 14×14.

El código de PyTorch siguiente crea la secuencia de tokens de una imagen y la pasa por un único bloque codificador.

import torch
from torch import nn

# Configuración de ViT-Base/16: parches de 16x16, tokens de 768 dimensiones, 12 cabezas de atención
image = torch.randn(1, 3, 224, 224)
patch_embed = nn.Conv2d(3, 768, kernel_size=16, stride=16)  # una proyección lineal por parche

# Divide la imagen en una cuadrícula de parches de 14x14 y aplánala en 196 tokens
tokens = patch_embed(image).flatten(2).transpose(1, 2)

# Anteponer un token de clase aprendible y añadir embeddings de posición aprendibles
cls_token = nn.Parameter(torch.zeros(1, 1, 768))
pos_embed = nn.Parameter(torch.zeros(1, 197, 768))
tokens = torch.cat([cls_token, tokens], dim=1) + pos_embed

# Un bloque codificador con prenormalización en el que cada token presta atención a todos los demás
block = nn.TransformerEncoderLayer(
    d_model=768, nhead=12, dim_feedforward=3072, activation="gelu", batch_first=True, norm_first=True
)
print(block(tokens).shape)

Muestra torch.Size([1, 197, 768]): los 196 tokens de parche más el token de clase, todos con 768 dimensiones, listos para el siguiente de los 12 bloques de ViT-Base.

Tamaños y variantes de modelos#

Los nombres ViT indican el tamaño del modelo y el de los parches: ViT-B/16 es el modelo Base, con 86 millones de parámetros y parches de 16×16, mientras que los modelos Large y Huge tienen 307 y 632 millones de parámetros. Los parches más pequeños generan más tokens, lo que mejora el detalle a un mayor coste computacional. Varias variantes modifican el entrenamiento o la estructura de los ViT:

  • DeiT: Una receta de entrenamiento con una intensa aumentación y un token de destilación que permite entrenar ViT competitivos solo con ImageNet-1k, sin datos adicionales de preentrenamiento.
  • Swin Transformer: Calcula la atención dentro de ventanas locales desplazadas y combina los parches entre etapas, generando una jerarquía similar a la de las CNN, adecuada para la detección y la segmentación.
  • Autoencoders enmascarados (MAE) y DINOv2: Métodos autosupervisados que preentrenan ViT con imágenes sin etiquetar: MAE reconstruye los parches enmascarados y DINOv2 compara las salidas de una red profesora.
  • CLIP y SigLIP: Codificadores de imagen ViT entrenados para asociar imágenes con sus pies de foto, reutilizados ampliamente como torre visual de modelos multimodales.

Aplicaciones#

Transformers visuales y CNNs#

Las CNN incorporan dos suposiciones en cada capa: localidad, porque cada filtro observa un vecindario pequeño, y equivariancia traslacional, porque el mismo filtro se aplica en todas las posiciones. Salvo por la cuadrícula de parches, un ViT debe aprender la estructura espacial a partir de los datos. En el artículo original, los ViT entrenados solo con ImageNet —1,3 millones de imágenes— obtuvieron puntuaciones unos pocos puntos porcentuales inferiores a las de las ResNet de tamaño comparable, mientras que el preentrenamiento con el conjunto de datos JFT-300M, de 300 millones de imágenes, elevó ViT-H/14 al 88,55 % de precisión top-1 en ImageNet. El coste es la otra diferencia. La autoatención compara cada token con todos los demás, así que duplicar la longitud de un lado de la imagen cuadruplica el número de tokens y multiplica por 16 el coste de la atención. La atención Flash reduce el tráfico de memoria de este cálculo, y la atención por ventanas limita las comparaciones. Ultralytics ejecuta el Segment Anything Model de Meta, cuyo punto de control sam_b.pt codifica cada imagen de 1024×1024 con una red troncal ViT-B: los parches de 16×16 forman una cuadrícula de 64×64 con 4096 tokens, así que ocho de sus 12 bloques prestan atención únicamente dentro de ventanas de 14×14 y cuatro utilizan atención global.

Explora las soluciones

Visión artificial en el deporte

Visión artificial en el deporte

Descubre cómo Ultralytics YOLO impulsa la visión artificial en el deporte con el seguimiento de jugadores y balones, analíticas de rendimiento, información útil para entrenadores y rehabilitación de deportistas.
Más información
Visión artificial para imágenes aéreas

Visión artificial para imágenes aéreas

Convierte imágenes aéreas y de drones en información útil en tiempo real para la agricultura, la acuicultura, la conservación y el análisis geoespacial con Ultralytics YOLO.
Más información
Visión artificial en el sector aeroespacial

Visión artificial en el sector aeroespacial

Aplica la visión artificial en el sector aeroespacial con Ultralytics YOLO para inspeccionar aeronaves, detectar objetos extraños en pistas, gestionar operaciones en tierra y detectar defectos en materiales compuestos.
Más información
Visión artificial en seguridad

Visión artificial en seguridad

Protege todas tus instalaciones con los modelos Ultralytics YOLO. La IA visual permite supervisar perímetros, detectar amenazas, reconocer matrículas y mejorar la seguridad laboral.
Más información
Visión artificial en robótica

Visión artificial en robótica

Potencia máquinas más inteligentes con los modelos Ultralytics YOLO. La IA visual en robótica impulsa la navegación autónoma, la percepción, el seguimiento de objetos y el control en tiempo real.
Más información
Visión artificial en logística

Visión artificial en logística

Agiliza la logística con modelos Ultralytics YOLO. La IA visual permite inspeccionar paquetes, clasificarlos, realizar el seguimiento de vehículos y supervisar la seguridad del almacén en tiempo real.
Más información
Visión artificial en el comercio minorista

Visión artificial en el comercio minorista

Reinventa el comercio minorista con modelos Ultralytics YOLO. La IA visual permite realizar el seguimiento del inventario, supervisar estanterías, gestionar colas y obtener información más útil sobre los clientes.
Más información
Visión artificial en el sector sanitario

Visión artificial en el sector sanitario

Desarrolla soluciones sanitarias con modelos Ultralytics YOLO. La IA visual en el sector sanitario permite acelerar el diagnóstico por imagen, mejorar los diagnósticos y supervisar a los pacientes.
Más información
Visión artificial en la fabricación

Visión artificial en la fabricación

Optimiza la fabricación con modelos Ultralytics YOLO. La IA visual mejora el control de calidad, la detección de defectos, el cumplimiento de las normas de uso de EPI y la automatización de las líneas de montaje.
Más información
Visión artificial en la automoción

Visión artificial en la automoción

Aplica la visión artificial al sector de la automoción con modelos Ultralytics YOLO. La IA visual mejora la seguridad vial, la asistencia al conductor y la automatización de vehículos para lograr carreteras más inteligentes.
Más información
Visión artificial en la agricultura

Visión artificial en la agricultura

Incorpora la IA de visión a la agricultura inteligente con modelos Ultralytics YOLO. Impulsa la monitorización de cultivos, el seguimiento del ganado y la agricultura de precisión para obtener cosechas más abundantes e inteligentes.
Más información

¡Construyamos juntos el futuro de la IA!

Inicia tu recorrido hacia el futuro del aprendizaje automático