Un Análisis Profundo del Código del Modelo Visual Transformer (ViT)

Análisis del Código del Modelo ViT

Desglosando la implementación de HuggingFace ViT

El Vision Transformer (ViT) representa un hito notable en la evolución de la visión por computadora. ViT desafía la sabiduría convencional de que las imágenes se procesan mejor a través de capas convolucionales, demostrando que los mecanismos de atención basados en secuencias pueden capturar eficazmente los patrones intrincados, el contexto y la semántica presentes en las imágenes. Al descomponer las imágenes en parches manejables y aprovechar la autoatención, ViT captura tanto las relaciones locales como globales, lo que le permite destacar en diversas tareas de visión, desde la clasificación de imágenes hasta la detección de objetos y más. En este artículo, vamos a desglosar cómo funciona ViT para la clasificación bajo el capó.

https://unsplash.com/photos/aVvZJC0ynBQ

Introducción

La idea principal de ViT es tratar una imagen como una secuencia de parches de tamaño fijo, que luego se aplanan y se convierten en vectores 1D. Estos parches son procesados posteriormente por un codificador transformer, que permite que el modelo capture el contexto global y las dependencias en toda la imagen. Al dividir la imagen en parches, ViT reduce eficazmente la complejidad computacional de manejar imágenes grandes al tiempo que conserva la capacidad de modelar interacciones espaciales complejas.

En primer lugar, importamos el modelo ViT para clasificación de la biblioteca hugging face transformers:

from transformers import ViTForImageClassificationimport torchimport numpy as npmodel = ViTForImageClassification.from_pretrained("google/vit-base-patch16-224")

patch16–224 indica que el modelo acepta imágenes de tamaño 224×224 y cada parche tiene un ancho y alto de 16 píxeles.

Así es como se ve la arquitectura del modelo:

ViTForImageClassification(  (vit): ViTModel(    (embeddings): ViTEmbeddings(      (patch_embeddings): PatchEmbeddings(        (projection): Conv2d(3, 768, kernel_size=(16, 16), stride=(16, 16))      )      (dropout): Dropout(p=0.0, inplace=False)    )    (encoder): ViTEncoder(      (layer): ModuleList(        (0): ViTLayer(          (attention): ViTAttention(            (attention): ViTSelfAttention(              (query): Linear(in_features=768, out_features=768, bias=True)              (key)…

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Ciencia de Datos

Reinventando la experiencia de los datos Utilice la inteligencia artificial generativa y la arquitectura de datos moderna para desbloquear conocimientos.

Implementar una arquitectura moderna de datos brinda un método escalable para integrar datos de fuentes dispares. Al ...

Inteligencia Artificial

Este documento de IA explora la comprensión del espacio latente de los modelos de difusión a través de la geometría de Riemann.

Con la creciente popularidad de la Inteligencia Artificial y el Aprendizaje Automático, sus principales subcampos, co...

Inteligencia Artificial

Conoce CutLER (Cut-and-LEaRn) Un enfoque simple de IA para entrenar modelos de detección de objetos y segmentación de instancias sin anotaciones humanas

La detección de objetos y la segmentación de imágenes son tareas cruciales en la visión por computadora e inteligenci...

Inteligencia Artificial

EE.UU. acuerda sobre reglas históricas de Inteligencia Artificial

El acuerdo sobre la Ley de Inteligencia Artificial solidifica uno de los primeros intentos en el mundo de limitar el ...

Inteligencia Artificial

Trabajos que la IA no puede reemplazar

Introducción Ya seas un cibernauta o no, es probable que hayas escuchado el debate sobre los “empleos que la IA...