Cámaras inteligentes, visión por computadora, visión artificial… no importa cómo lo llames, las aplicaciones de visión están abriéndose camino en más productos. La aplicación clásica con la que la mayoría de los diseñadores de PCB están familiarizados es la manufactura, y más recientemente con el reconocimiento facial en tu smartphone. Los diseñadores que regularmente trabajan con diseños y sistemas de visión artificial están viendo muchas aplicaciones únicas en medicina, automoción, robótica, aeroespacial, seguridad y, ciertamente, en otras áreas.
Algo interesante que sucede en la industria electrónica es la facilidad con la que la nueva tecnología puede integrarse en nuevos sistemas a medida que continúa proliferando. La visión artificial ciertamente ha cruzado el umbral hasta el punto en que la estandarización, el soporte para desarrolladores y una riqueza de componentes están disponibles para los diseñadores que quieren innovar en esta área. Hoy en día, hay varias plataformas de hardware populares que son una opción de nivel de entrada para diseñadores más nuevos. Si estás más allá de la prototipación y estás preparando hardware de grado de producción, los procesadores más nuevos están habilitando sistemas más integrados que aprovechan tecnologías avanzadas como el aprendizaje automático.
En esta guía, exploraremos algunos de los componentes necesarios para construir sistemas de visión artificial y los recursos disponibles para desarrolladores embebidos. Los sistemas de visión artificial tienen un importante elemento de ingeniería de hardware y mecánica ya que estamos tratando con cámaras y ópticas. El desarrollo de estos sistemas es muy rico, con tareas que abarcan múltiples disciplinas. Afortunadamente, los fabricantes de componentes y los desarrolladores de código abierto tienen acceso a muchos recursos para ayudar a acelerar el diseño de hardware y el desarrollo de sistemas, y se anima a los desarrolladores interesados a mirar algunos de los ejemplos que mostraremos aquí para comenzar.
En términos de la electrónica, los sistemas de visión artificial tienen una arquitectura algo genérica en comparación con otros sistemas. El diagrama de bloques que se muestra a continuación ilustra una arquitectura de alto nivel genérica que se implementa en sistemas de visión artificial. Estos sistemas pueden tener diferentes niveles de integración y factores de forma, con algunos de los bloques mostrados a continuación posiblemente integrados en un procesador más potente.
Arquitectura de sistema de visión artificial de alto nivel
No hay un sistema de visión artificial quintesencial que pueda usarse como referencia para otros diseños ya que la visión artificial es una capacidad, no un producto o tipo específico de diseño. Los sistemas de visión artificial tienen características comunes como se muestra en el diagrama de bloques anterior, pero se implementan con diferentes conjuntos de componentes. En lugar de lanzar listas de componentes para apoyar los sistemas de visión artificial, necesitamos comenzar en el nivel del procesador para ver cómo los algoritmos de procesamiento de imágenes pueden implementarse de manera eficiente.
Los MCU o SoCs basados en MCU siempre han sido populares, incluso para sistemas que implementan capacidades de visión artificial. Los MCU con interfaces digitales estándar pueden conectarse con ASICs especializados para el procesamiento de visión, mientras que los FPGA pueden ser lo suficientemente grandes para implementar adquisición de imágenes en línea, funciones de DSP y otros procesamientos a nivel de sistema. Los GPU pueden proporcionar un procesador de visión externo dedicado que suministra datos de vuelta al controlador principal.
En términos del nivel de avance, las arquitecturas de MPU + FPGA o MPU + GPU son preferibles para la visión artificial casi en tiempo real. También son preferibles para procesar imágenes de mayor resolución ya que el FPGA/GPU puede implementar la paralelización, lo que reduce el tiempo de procesamiento cuando se requiere procesamiento de alta resolución/profundidad de color. Esta es la principal ventaja de los FPGA ya que la lógica es flexible, aunque la gestión y los algoritmos para el procesamiento avanzado son más difíciles de desarrollar sin experiencia previa.
Todo esto no significa que los MCU y MPU no puedan usarse como controladores principales en aplicaciones de visión artificial. Por ejemplo, tu teléfono y computadora no están usando estos y pueden realizar algunas tareas de procesamiento de imágenes más simples a partir de video de baja tasa de cuadros e imágenes estáticas. Para ser justos, el CPU/SoC en esos dispositivos tiende a tener mucho más cómputo que un MPU de alta gama. Un MCU podría usarse para procesamiento de imágenes de menor resolución, menor tasa de cuadros, menor profundidad de color o en monocromo, y a medida que agregas más cómputo puedes manejar imágenes más detalladas. Los MPU son una mejor opción en producción ya que podrías necesitar acceder a memoria externa de alta velocidad, lo que significa que necesitarás una interfaz de RAM DDR y posiblemente PCIe para algunos periféricos, algo que típicamente no encontrarás en un MCU más lento.
Si quieres implementar algoritmos de reconocimiento y segmentación de imágenes más avanzados en tu sistema, entonces podrías optar por un SOM, COM o computadora de placa única como el controlador principal para tu aplicación de visión artificial. Si un procesador tiene suficiente memoria en chip y RAM externa, típicamente puede implementar la mayoría de las tareas de adquisición y procesamiento mientras también ejecuta una aplicación para controlar el resto de tu sistema. Estas arquitecturas a menudo se usan para tareas de segmentación de imágenes basadas en umbral y detección de objetos en aplicaciones muy específicas desde datos de video de baja a moderada tasa de cuadros.
Como muchos otros diseños que operan esencialmente con señales analógicas de bajo nivel, los sistemas y diseños de visión artificial tienen su propio conjunto de desafíos eléctricos que deben considerarse. Algunas de las soluciones están en el nivel de procesamiento de imágenes, otras están en el nivel del sistema y se relacionan con la selección de componentes. Aquí están algunos de los principales desafíos que los diseñadores deben considerar en el diseño de visión artificial:
Gestión térmica: Las cámaras de alta resolución montadas en placas en sistemas más compactos pueden recibir mucho calor durante el funcionamiento, lo que podría requerir disipadores de calor o flujo de aire a través del recinto para mantenerse frescas. Los sistemas con procesadores más pequeños y placas más grandes generalmente pueden mantenerse frescos por sí mismos, pero las placas más pequeñas con procesadores más rápidos podrían requerir un material de interfaz unido al recinto para eliminar el calor.
EMI/EMC: Dado que los sistemas de visión artificial generalmente son sistemas de señales mixtas, requieren una disposición adecuada para prevenir la interferencia entre los componentes digitales y la salida de un sensor CMOS o CCD. CMOS podría ser una mejor opción ya que la conversión de datos se realiza a nivel de chip. Para asegurar una recuperación de imagen precisa en sistemas compactos con procesamiento rápido, asegúrate de implementar algunas mejores prácticas para la supresión de EMI.
Integridad de la alimentación: Los sistemas de visión y los sistemas HMI pueden experimentar problemas de integridad de la alimentación si la disposición no se construye adecuadamente, incluso en el caso de que el diseño no funcione con componentes o protocolos de alta velocidad. Esto podría sonar como un problema que se puede filtrar, pero no es el caso. En cambio, la solución puede ser tan simple como asegurar que se coloque un plano de tierra para el enrutamiento de todas las señales digitales que llegan a la placa base.
Montaje de ópticas: Los sistemas de visión requieren ópticas para definir los planos de objeto e imagen, y para formar imágenes claras en el sensor de imagen para que pueda ocurrir la adquisición de datos. Los sistemas modernos de visión artificial necesitan un montaje estable con baja histéresis y posiblemente enfoque automático con control de motor integrado. Este es un desafío de diseño mecánico así como de diseño eléctrico, donde este último implica el consumo de energía en un motor de control y circuito de temporización.
Obviamente, no podemos mostrar todos los componentes posibles en este artículo ya que sería simplemente demasiado largo. Lo que podemos hacer es darte una buena lista de componentes que puedes usar para comenzar a construir diferentes partes de tu sistema. En la lista a continuación, he incluido algunos componentes de ejemplo de cada parte de un sistema nuevo que puedes usar para comenzar:
Los MCU como STM32 y MSP430 son una excelente opción para ejecutar un sistema de visión artificial ligero e implementar algunas tareas de inferencia de IA más sencillas.
Para algo con mucho más cálculo, la plataforma FPGA Zynq es una excelente opción para sistemas de visión artificial. Xilinx también ofrece mucho soporte para desarrolladores de sistemas de visión artificial basados en Zynq.
Sensores de imagen CMOS y sensores CCD pueden ser monocromáticos o a color, y vienen en una gama de resoluciones. Algo como el MT9P031I12STC-DR1 de ON Semiconductor es un buen ejemplo de un sensor CMOS a color para aplicaciones de visión artificial de alta resolución.
Para desarrollar una aplicación de alto nivel, OpenCV es un excelente conjunto de bibliotecas de código abierto que incluye muchas de las funciones de procesamiento de imágenes estándar utilizadas en sistemas de visión artificial. Hay otras bibliotecas de código abierto en línea que se pueden usar para el desarrollo de aplicaciones más especializadas.
Recomendaría una GPU o FPGA para tareas más generalizadas como reconocimiento de imágenes, segmentación e identificación de objetos con seguimiento en datos de video sin aplicar preprocesamiento específico de la aplicación (es decir, a partir de imágenes en bruto). Menciono esto aquí porque necesitamos considerar cómo interactuar con el sensor de imagen, y el sensor necesita ser emparejado con el procesador. En una FPGA, la lógica de adquisición y el procesamiento subsiguiente pueden implementarse en paralelo junto con el resto de la lógica para la aplicación.
Una plataforma de hardware abierto popular que se puede usar para el desarrollo del sistema es OpenMV. Estos módulos de cámara incorporan lógica para la adquisición de imágenes, hardware para montar elementos ópticos y un PCB para garantizar EMI/EMC y SI/PI. También son compatibles con los MCU STM32 y otras plataformas. Este es un buen sistema para desarrolladores de aplicaciones que quieren usar un procesador externo como el controlador principal para una aplicación más grande en el sistema, pero sin involucrarse demasiado en el desarrollo y depuración del hardware.
Módulo de cámara M7 (izquierda) y Módulo adaptador FLIR Lepton (derecha).
La visión artificial es sumamente útil en todas sus formas, y no debería sorprendernos que soluciones avanzadas basadas en MCU, MPU o FPGA deban integrarse con la nube. Dependiendo de cómo se aproveche el cómputo en la nube, podría ser mejor delegar el procesamiento al centro de datos en lugar de realizarlo en el borde, por lo que se podría usar un MCU o un MPU ligero. Cuando se requiere un procesamiento rápido en el campo, las tareas de procesamiento deben realizarse en el campo con un controlador anfitrión más potente (FPGA, MPU + FPGA o MPU + GPU). Nuevamente, la elección depende de la cantidad de preprocesamiento que realice en el dispositivo para limpiar y comprimir imágenes antes de enviarlas a la nube para su procesamiento.
Para aplicaciones de IA/ML que involucran visión artificial, algunas empresas proporcionan SoCs y ASICs como complemento a procesadores más lentos o como módulos adicionales para SBCs. Google Coral es una de estas opciones, actuando como un procesador dedicado para ejecutar modelos de TensorFlow Lite que involucran inferencia a partir de datos de imágenes. Otras opciones están llegando al mercado de startups que están enfocadas en la inferencia de IA para múltiples flujos de video, idealmente reemplazando GPUs con paquetes más pequeños.
Los sistemas de visión artificial necesitan hacer mucho más que solo capturar y procesar imágenes. Los sistemas de hoy están conectados, se interfazan con múltiples sensores, Algunos otros componentes que podrías necesitar para tu sistema de visión artificial incluyen:
El diseño de sistemas de visión artificial requiere experiencia en múltiples áreas y colaboración con un equipo, pero la selección de componentes para estos sistemas no debería ser difícil. Cuando necesites encontrar componentes para tu aplicación de visión artificial, utiliza las funciones avanzadas de búsqueda y filtrado en Octopart. Cuando uses el motor de búsqueda de electrónica de Octopart, tendrás acceso a datos de precios de distribuidores actualizados, inventario de partes y especificaciones de partes, y todo es libremente accesible en una interfaz amigable para el usuario. Echa un vistazo a nuestra página de circuitos integrados para encontrar los componentes que necesitas.
Mantente al día con nuestros últimos artículos suscribiéndote a nuestro boletín.