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

El enemigo invisible de la IA enfrentando el desafío de la materia oscura digital

La materia oscura digital es el resultado de los científicos que toman prestadas técnicas computacionales de la intel...

Inteligencia Artificial

Conoce 3D-VisTA Un Transformer pre-entrenado para alineación de visión 3D y texto que puede adaptarse fácilmente a diversas tareas posteriores.

En el dinámico panorama de la Inteligencia Artificial, los avances están remodelando los límites de lo posible. La fu...

Inteligencia Artificial

Decodificación anticipada un algoritmo de decodificación paralela para acelerar la inferencia de LLM

Aunque los modelos de lenguaje grandes (LLM) como GPT-4 y LLaMA están reimaginando rápidamente las aplicaciones moder...

Ciencias de la Computación

Cómo la I.A. está ayudando a los arquitectos a cambiar el diseño de los lugares de trabajo.

Con una mayor cantidad de trabajadores híbridos y nuevas necesidades de oficina, empresas como Zaha Hadid Architects ...

Inteligencia Artificial

Conoce a BLIVA un modelo de lenguaje multimodal grande para manejar mejor preguntas visuales ricas en texto

Recientemente, los Modelos de Lenguaje Grande (LLMs) han desempeñado un papel crucial en el campo de la comprensión d...