Actualizado a: 19 de enero de 2024
La VPU es una unidad que quizás es desconocida para muchos usuarios. No es tan popular como la CPU o la GPU, por lo que ahora vamos a ver de qué se trata. Sin duda, es muy interesante, y con los avances de la IA se vuelve cada vez más importante, además de tener innumerables aplicaciones.
¿Qué es la visión artificial?
La visión artificial, o visión computarizada, es un ámbito de la inteligencia artificial (IA) que posibilita a las computadoras y sistemas extraer información relevante a partir de imágenes digitales, videos y otros datos visuales, y tomar acciones o hacer recomendaciones basadas en esa información. Si la IA permite a las computadoras pensar, la visión computarizada les otorga la capacidad de ver, observar y comprender.
La visión artificial opera de manera similar a la visión humana, aunque los seres humanos tienen una ventaja inicial. La visión humana se beneficia de toda una vida de contexto para aprender a distinguir objetos, determinar su distancia, detectar movimiento y percibir anomalías en una imagen.
La visión computarizada entrena a las máquinas para llevar a cabo estas funciones, pero lo hace en un período de tiempo mucho más corto, utilizando cámaras, datos y algoritmos en lugar de retinas, nervios ópticos y la corteza visual. Un sistema entrenado para inspeccionar productos o supervisar activos de producción puede analizar miles de elementos o procesos por minuto, detectando defectos o problemas que son imperceptibles para los humanos, y así superar rápidamente las capacidades humanas.
¿Cómo funciona la visión artificial?
La visión artificial requiere de una gran cantidad de datos. Realiza análisis de datos repetidamente hasta que detecta diferencias y finalmente reconoce imágenes. Por ejemplo, para entrenar a una computadora en el reconocimiento de neumáticos de automóviles, es necesario proporcionarle una amplia variedad de imágenes de neumáticos y elementos relacionados, para que pueda aprender las diferencias y reconocer un neumático, especialmente aquellos sin defectos. Dos tecnologías fundamentales se utilizan para lograr esto: el aprendizaje profundo (deep learning) y las redes neuronales convolucionales (CNN).
El aprendizaje profundo, o deep learning, utiliza modelos algorítmicos que permiten a una computadora aprender por sí misma el contexto de los datos visuales. Si se le suministra suficiente cantidad de datos a través del modelo, la computadora «observará» los datos y aprenderá a diferenciar una imagen de otra. Los algoritmos permiten que la máquina aprenda de manera autónoma, en lugar de ser programada por alguien para reconocer una imagen.
Una red neuronal convolucional (CNN) ayuda a un modelo de aprendizaje profundo a «observar» descomponiendo las imágenes en píxeles y asignándoles etiquetas. Utiliza estas etiquetas para realizar convoluciones (una operación matemática que combina dos funciones para obtener una tercera función) y hacer predicciones sobre lo que está «viendo». La red neuronal ejecuta convoluciones y verifica la precisión de sus predicciones en una serie de iteraciones hasta que las predicciones comienzan a acercarse a la realidad. De esta manera, logra reconocer o ver imágenes de manera similar a los seres humanos.
Al igual que un humano que observa una imagen a cierta distancia, una CNN primero identifica los bordes más definidos y las formas simples, y luego completa la información a medida que realiza iteraciones de sus predicciones. Una CNN se utiliza para comprender imágenes individuales, mientras que una red neuronal recurrente (RNN) se utiliza de manera similar en aplicaciones de video para ayudar a las computadoras a comprender cómo se relacionan entre sí las imágenes en una secuencia de fotogramas.
Durante el proceso de visión artificial, se utiliza una cámara o sensor para capturar imágenes de objetos o del entorno, las cuales son procesadas rápidamente mediante un software en un ordenador. A partir de estas imágenes, se extrae información relevante que se puede aplicar de diversas formas. Por ejemplo, se pueden analizar objetos que pasan por una cinta transportadora frente a una cámara para detectar los que están dañados, y luego utilizar un actuador mecánico para desecharlos y evitar que continúen en la cadena.
Un sistema de visión artificial sigue los siguientes pasos:
- Captación: el sensor óptico, como una cámara CCD, CMOS, rayos X, infrarrojos, termografías, entre otros, captura la imagen del objeto real. También se pueden utilizar complementos como sistemas de iluminación, como fluorescentes, LED, luz polarizada, láser o Backlight.
- Digitalización: la información capturada por las imágenes se convierte en formato digital para poder ser procesada por el ordenador.
- Procesamiento: mediante el software de control, se procesa la información digitalizada y se obtienen datos que se utilizarán en etapas posteriores para tomar decisiones o actuar.
- Resultados: se obtienen los resultados del procesamiento y se toman las acciones correspondientes.
Estos pasos requieren de varios módulos o componentes, tales como:
- Módulo de imagen: responsable de capturar la señal o imagen del objeto o entorno.
- Módulo digitalizador: convierte la señal analógica de la cámara en una señal digital.
- Módulo de visualización: diferente al módulo de imagen, convierte la señal digital en una representación visual para mostrarse en un monitor o pantalla en caso de ser necesario su monitoreo.
- Procesador de imagen: puede ser implementado mediante software o hardware y se encarga de interpretar las imágenes digitalizadas capturadas por la cámara. En ambos casos, se necesita un ordenador para su funcionamiento.
- Módulos de E/S (entrada/salida): gestionan la entrada de la imagen capturada y la salida del control según los datos obtenidos.
- Comunicación: es la interfaz o bus mediante el cual el sistema de visión artificial puede comunicarse con otros elementos. Puede ser inalámbrico, Ethernet, RS232, entre otros.
Historia de la visión artificial
Durante aproximadamente 60 años, científicos e ingenieros han estado trabajando en el desarrollo de métodos para que las máquinas puedan ver y comprender datos visuales. Los primeros experimentos se remontan a 1959, cuando un grupo de neurofisiólogos mostraron imágenes a un gato para intentar entender cómo su cerebro respondía. Descubrieron que el gato respondía primero a los bordes y líneas más notables, lo cual indicaba que el procesamiento de imágenes comienza con formas simples, como bordes rectos.
En paralelo, se desarrolló la primera tecnología de escaneo de imágenes, que permitía a las computadoras digitalizar y adquirir imágenes. Otro hito importante ocurrió en 1963, cuando las computadoras lograron transformar imágenes bidimensionales en formas tridimensionales. Durante la década de 1960, la inteligencia artificial (IA) emergió como un campo académico de estudio y se inició la búsqueda de la IA para resolver el problema de la visión humana.
En 1974, se introdujo la tecnología de reconocimiento óptico de caracteres (OCR), que podía reconocer texto impreso en cualquier fuente o tipo de letra. De manera similar, el reconocimiento inteligente de caracteres (ICR) permitía descifrar texto escrito a mano utilizando redes neuronales. Desde entonces, el OCR y el ICR se aplican en el procesamiento de documentos y facturas, reconocimiento de matrículas de vehículos, pagos móviles, traducción automática y otros usos comunes.
En 1982, el neurocientífico David Marr estableció que la visión funciona de manera jerárquica e introdujo algoritmos para que las máquinas pudieran detectar bordes, esquinas, curvas y formas básicas similares. Al mismo tiempo, el científico informático Kunihiko Fukushima desarrolló una red de células capaz de reconocer patrones, llamada Neocognitron, que incluía capas convolucionales en una red neuronal.
A partir del año 2000, el enfoque de estudio se centró en el reconocimiento de objetos, y en 2001, surgieron las primeras aplicaciones de reconocimiento facial en tiempo real. La estandarización de la forma en que se etiquetan y anotan los conjuntos de datos visuales se desarrolló a lo largo de la década de 2000. En 2010, se lanzó el conjunto de datos ImageNet, que contenía millones de imágenes etiquetadas en miles de clases de objetos, y sirvió como base para las redes neuronales convolucionales (CNN) y los modelos de aprendizaje profundo que se utilizan actualmente. En 2012, un equipo de la Universidad de Toronto presentó una CNN en un concurso de reconocimiento de imágenes. El modelo, llamado AlexNet, redujo significativamente la tasa de errores en el reconocimiento de imágenes. Desde ese importante avance, las tasas de error se han reducido a un porcentaje muy bajo.
Ventajas y desventajas de la visión artificial
Además de lo mencionado anteriormente, los sistemas de visión artificial presentan una serie de ventajas y desventajas. La más destacada es la mejora del rendimiento en la producción industrial, pero hay más aspectos a considerar.
Entre las ventajas más relevantes se encuentran:
- Eliminación de la subjetividad en la inspección: la implementación de sistemas de visión artificial permite mejorar la cuantificación y evaluación de parámetros de manera objetiva y eficiente en términos de tiempo.
- Flexibilidad: estos sistemas pueden adaptarse y escalarse para ajustarse a los procesos de producción, lo cual ahorra tiempo y permite una rápida implementación tras cada cambio sin necesidad de capacitar al personal en cada ocasión. Solo se requiere una simple configuración.
- Asequibilidad: aunque no son dispositivos económicos para la mayoría de los particulares, a largo plazo pueden generar ahorros significativos para las empresas. Además, esta tecnología ha madurado lo suficiente y su comprensión ha aumentado, lo que ha llevado a una reducción de precios en computadoras, software y componentes optoelectrónicos, mejorando así su eficiencia.
- Reducción de costos: los sistemas de visión artificial reducen costos en diversas áreas, como devoluciones de pedidos, reemplazo de personal, costos temporales y aumento de la producción (lo que se traduce en mayores ganancias), entre otros.
- Metrología: permite una medición rápida de magnitudes físicas presentes en las imágenes capturadas. Por ejemplo, puede determinar en fracciones de segundo dimensiones, área, distancias, diámetros, ángulos, posiciones, entre otros, algo que un humano no puede lograr con la misma velocidad.
- Clasificación: gracias a la ventaja anterior, estos sistemas permiten una clasificación industrial rápida y eficiente. Esto posibilita la automatización de tareas basadas en dimensiones, patrones, códigos de barras, color, área, formas, entre otros, a velocidades sorprendentes.
- Mejora en la calidad del producto final: la visión artificial también aporta la ventaja de mejorar la calidad de las piezas producidas. Al poder analizarlas de manera más eficiente, incluso en áreas inaccesibles para los seres humanos, se logra obtener piezas de mayor calidad, lo que se traduce en clientes más satisfechos y una mayor fidelización.
- Otros aspectos: los sistemas de visión artificial requieren menos atención, no se ven afectados por errores visuales humanos como la falta de atención, descuidos o distracciones. Además, mejoran la verificación en áreas inaccesibles para el ojo humano, como la inspección mediante rayos X para evaluar el interior de las piezas.
Entre las desventajas, la más destacada es el costo de estos sistemas, ya que prácticamente no presentan puntos débiles. Solo en casos en los que se requiera una evaluación menos objetiva y más subjetiva pueden presentar limitaciones, ya que en tales casos no hay nada mejor que la capacidad humana para evaluar cada situación de manera adecuada.
¿Qué es VPU?
Una Unidad de Procesamiento de Visión Artificial, conocida como VPU por sus siglas en inglés (Vision Processing Unit), es un tipo de procesador diseñado para acelerar el aprendizaje automático y avanzar en las tecnologías de inteligencia artificial, especialmente en el campo de la visión artificial o visión computarizada.
En resumen, la VPU es un acelerador de IA capaz de realizar diversas tareas, como el procesamiento de imágenes. Se trata de uno de los muchos chips especializados utilizados en el aprendizaje automático, similar a la GPU, pero con algunas diferencias que veremos con más detalle más adelante, ya que no son lo mismo, a pesar de compartir aplicaciones similares.
La VPU se utiliza en redes neuronales convolucionales, al igual que algunas GPUs, pero está diseñada específicamente para este propósito. Además, al elegir una VPU, es importante tener en cuenta ciertos aspectos, ya que pueden variar en capacidad y rendimiento. Por ejemplo, algunas VPUs pueden procesar imágenes con resoluciones nativas de hasta 4K y admitir hasta 8 sensores conectados directamente. Es importante recordar que cuanto más sensores pueda manejar y mejor sea la resolución, mayor será la precisión y calidad de la VPU.
Funcionamiento
Para garantizar un funcionamiento óptimo de una VPU, se requiere el uso de un codificador y decodificador, así como herramientas como el kit de herramientas OpenVINO de código abierto.
Además, es necesario realizar un preprocesamiento de los datos utilizando APIs como OpenCV u otras bibliotecas disponibles. Esto permite invocar modelos entrenados en frameworks como TensorFlow o Caffe.
En cuanto al hardware, la VPU se encarga de acelerar estas tareas utilizando unidades de cómputo que actúan como motores neuronales. Estas unidades están especialmente diseñadas para acelerar cargas relacionadas con la visión artificial y otras tareas específicas.
VPU vs GPU: diferencias
Como mencioné anteriormente, la VPU y la GPU comparten algunas similitudes, pero son distintas entre sí. A continuación, destacaré las diferencias más notables:
- La GPU está diseñada para ser eficiente en tareas como la rasterización y el mapeo de texturas, lo cual implica una arquitectura y una memoria VRAM diferentes. Sin embargo, la GPU también se puede utilizar para otras tareas más generales.
- La VPU se enfoca en optimizar el rendimiento en tareas de aceleración de visión artificial o computarizada. Aunque puede haber cierta superposición con la GPU en algunos aspectos, no son exactamente iguales. Además, la VPU suele estar diseñada para mejorar el rendimiento por vatio, siendo altamente eficiente en este sentido.
- En general, la GPU tiende a tener un rendimiento superior, mientras que la VPU es más discreta y está diseñada para tareas específicas.
- En cuanto al mercado objetivo, las GPU se utilizan principalmente en videojuegos, cómputo de alto rendimiento (HPC), aceleración de inteligencia artificial, entre otros. Por otro lado, la VPU se utiliza en robótica, IoT, industria, realidad virtual y aumentada, cámaras inteligentes, vehículos autónomos y otros dispositivos con sistemas de visión integrados.
En definitiva, la VPU se ubica entre una GPU, un DSP (procesador de señal digital), una CPU, etc., y es un tipo de acelerador para redes neuronales artificiales.
Aplicaciones y usos
En cuanto a los usos o aplicaciones de una VPU, podemos tener algunos ejemplos como los siguientes:
- Robótica: para proporcionar a los robots capacidades de visión computerizada.
- Vehículos autónomos: en sistemas de reconocimiento y visión utilizados en vehículos autónomos.
- Dispositivos móviles: en dispositivos con capacidades de visión artificial, como smartphones y tablets.
- IoT (Internet of Things): en aplicaciones de IoT que requieren visión artificial.
- Realidad virtual, realidad aumentada y realidad mixta: para mejorar la experiencia visual y ofrecer capacidades de reconocimiento de objetos en estos entornos.
- Industria: en maquinaria industrial que utiliza visión artificial para procesar productos, realizar inspecciones y control de calidad.
- Cámaras inteligentes y sistemas de seguridad automatizados: para la detección y reconocimiento de objetos en cámaras de seguridad y sistemas de seguridad inteligentes.
- Cualquier equipo que requiera reconocimiento de objetos o capacidad de visión.
Estas son solo algunas de las muchas aplicaciones en las que se puede emplear la VPU.
Ventajas y desventajas de su uso de VPU
Las ventajas de usar una VPU en lugar de otras unidades de procesamiento no dedicadas son:
- Rendimiento optimizado: estas unidades están diseñadas específicamente para tareas de visión artificial, lo que les permite procesar imágenes y ejecutar algoritmos de visión de manera eficiente y rápida. Su arquitectura especializada está optimizada para acelerar el procesamiento de imágenes y videos, lo que se traduce en un rendimiento superior en estas tareas.
- Eficiencia energética: las VPUs destacan por su eficiencia en términos de consumo de energía, lo que las convierte en una opción ideal para dispositivos con recursos limitados, como dispositivos móviles o sistemas embebidos. Gracias a su diseño, pueden realizar cálculos intensivos con un bajo consumo de energía, maximizando así la vida útil de la batería y minimizando los requerimientos energéticos.
- Mayor precisión en tareas de visión: gracias a sus algoritmos y características especializadas para la visión artificial, las VPUs ofrecen una mayor precisión en la detección, clasificación y reconocimiento de objetos en imágenes y videos. Están diseñadas para aprovechar al máximo las capacidades de procesamiento visual y lograr resultados más precisos en las aplicaciones de visión.
- Escalabilidad: las VPUs pueden venir en forma de tarjetas o unidades externas conectadas a través de USB, lo que facilita la escalabilidad del sistema. Si se necesita mayor potencia de procesamiento, es posible agregar más dispositivos VPU según sea necesario, lo que permite aumentar la capacidad de procesamiento sin problemas. Esto brinda flexibilidad y capacidad de adaptación a medida que los requisitos del proyecto evolucionan.
Las desventajas del uso de VPUs son:
- Limitaciones en tareas generales: están diseñadas para tareas específicas de visión artificial y pueden presentar limitaciones al manejar tareas de propósito general que no están relacionadas con la visión. Esto implica que no son tan versátiles como las GPUs, que pueden abordar una amplia gama de aplicaciones y algoritmos.
- Dependencia del software y soporte: requieren software y bibliotecas especializadas para aprovechar al máximo su potencial. Esto significa que se necesita un ecosistema de desarrollo adecuado y un soporte activo por parte del fabricante para garantizar un buen funcionamiento y una integración adecuada. Es esencial contar con un soporte continuo para mantener la compatibilidad con las actualizaciones del software y resolver posibles problemas técnicos.
VPUs del mercado
Si quieres saber si existen ya soluciones VPU en el mercado, hay que destacar los siguientes productos existentes como ejemplos:
- Intel Movidius Myriad X y 2: Estos dispositivos, desarrollados y fabricados por Intel, están diseñados específicamente para tareas de visión artificial. Incorporan una VPU Myriad que ofrece un rendimiento destacado. Se pueden encontrar en aplicaciones como Google Clips, Google Project Tango y algunos drones DJI, entre otros.
- Google Pixel Visual Core o PVC: Es otro dispositivo completamente reprogramable que actúa como acelerador de IA en dispositivos móviles Google Pixel.
- Microsoft HoloLens: Este producto de Microsoft incluye una VPU integrada que acelera ciertas tareas y mejora la experiencia de realidad aumentada.
- MIT Eyeriss: Se trata de otro diseño conocido que utiliza redes neuronales convolucionales.
- Yann LeCun NeuFlow: Es un diseño de VPU implementada en un FPGA y tiene características similares al anterior, pero utiliza una arquitectura Dataflow.
- Mobileye EyeQ: Este diseño fue creado por la empresa Mobileye para su uso en dispositivos móviles.
- NVIDIA PVA o Programmable Vision Accelerator: Se trata de un procesador de visión con una arquitectura VLIW de 7 vías, diseñado para aplicaciones de alto rendimiento.
- IBM TrueNorth: Este chip está diseñado para emular el funcionamiento del cerebro humano y se utiliza en diversas aplicaciones, incluyendo la visión artificial. Consta de 5.4 mil millones de transistores y cuenta con 4096 núcleos neurosinápticos.
- Qualcomm Zeroth Neural: Zeroth es una plataforma de Qualcomm para computación inspirada en el cerebro. Incluye una unidad de procesamiento neuronal (NPU) como chip acelerador de inteligencia artificial y una API para interactuar con la plataforma.
- Además, existen otros dispositivos y soluciones en el mercado que también se utilizan en aplicaciones de visión artificial.