Visión de Computación

La visión de computación define un campo que les permite a las computadoras usar algoritmos complejos, que pueden basarse en el deep learning o tradicional, para comprender imágenes y videos digitales, y así extraer información útil.

¿Qué Es la Visión de Computación?

La visión de computación tiene como objetivo principal comprender por primera vez el contenido de videos e imágenes fijas; genera información útil a partir de ellos para resolver una gran variedad de problemas.  Dado que es un subgrupo de la inteligencia artificial (IA) y el deep learning, la visión de computación entrena redes neuronales convolucionales (CNN) a fin de desarrollar capacidades de visión humana para aplicaciones. La visión de computación puede incluir entrenamiento específico de CNN para la segmentación, la clasificación y la detección usando imágenes y videos como los datos.

 Imagen de entrada, capas convolucionales, capa completamente conectada y clase de salida.

Las redes neuronales convolucionales (CNN) pueden realizar la segmentación, clasificación y detección para una gran variedad de aplicaciones:

  • Segmentación: La segmentación de imágenes consiste en clasificar los píxeles para que pertenezcan a una categoría determinada, como un automóvil, una carretera o un peatón. Se usa ampliamente en aplicaciones de vehículos autónomos, incluida la pila de software NVIDIA DRIVE™ para mostrar carreteras, automóviles y personas.  Piensa en esto como una especie de técnica de visualización que hace que el trabajo de las computadoras sea más fácil de entender para los humanos.
  • Clasificación: La clasificación de imágenes se utiliza para determinar qué hay en una imagen. Las redes neuronales se pueden entrenar para identificar, por ejemplo, perros o gatos, o muchas otras cosas con un alto grado de precisión.
  • Detección: La detección de imágenes permite a las computadoras localizar dónde existen los objetos. En muchas aplicaciones, la CNN coloca cajas rectangulares vinculadas alrededor de la región de interés que contienen por completo el objeto. También es posible entrenar un detector para ver dónde están los automóviles o las personas dentro de una imagen.

Segmentación, Clasificación y Detección

    Segmentación Clasificación Detección
    Ideal para delinear objetos ¿Es un gato o un perro? ¿Dónde existe en el espacio?
    Se utiliza en vehículos de conducción autónoma Clasifica con precisión Reconoce cosas por seguridad

¿Por Qué Importa la Visión de Computación?

La visión de computación tiene muchas aplicaciones en muchos sectores, como deportes, automóviles, agricultura, comercio minorista, banca, construcción, seguros y demás. Las máquinas impulsadas por la IA de todo tipo se potencian con ojos como los nuestros, gracias a las redes neuronales convolucionales (CNN), los procesadores de imágenes que ahora usan las máquinas para identificar objetos. Las CNN son los ojos actuales de los vehículos autónomos, la exploración petrolíferay la investigación de energía de fusión. También pueden detectar enfermedades rápidamente en las imágenes médicas y salvar vidas.

Las técnicas tradicionales de procesamiento de imágenes y de visión de computación se han utilizado a lo largo de las décadas en numerosas aplicaciones y trabajos de investigación. Sin embargo, la aparición de las técnicas de IA modernas a través de las redes neuronales artificiales, que permiten una mayor precisión en el rendimiento, y los avances en la computación de alto rendimiento a partir de las GPU, que permiten una precisión superhumana, han generado una adopción generalizada en diferentes industrias, como el transporte, el comercio minorista, la manufactura, la salud y los servicios financieros

Los sistemas de visión de computación, ya sean los tradicionales o los basados en IA, pueden ser mejores que los humanos al clasificar imágenes y videos en categorías y clases discretas, como cambios menores en el tiempo de tomografías axiales computarizadas médicas. En este sentido, la visión de computación automatiza las tareas que los humanos podrían realizar, pero con una precisión y una velocidad mucho más altas.

Con la amplia variedad de aplicaciones actuales y potenciales, no es sorprendente que las proyecciones de crecimiento para las soluciones y las tecnologías de visión de computación sean prodigiosas. Una encuesta de investigación de mercado indica que este mercado crecerá un increíble 47% anual hasta 2023, cuando alcanzará los 25,000 millones de dólares en todo el mundo. En toda la ciencia de la computación, la visión de computación se encuentra entre las áreas más populares y activas de investigación y desarrollo.

¿Cómo Funciona la Visión de Computación?

La visión de computación analiza imágenes y, luego, crea representaciones numéricas de lo que "ve" usando una red neuronal convolucional (CNN). Una CNN es una clase de red neuronal artificial que usa capas convolucionales para filtrar las entradas y obtener información útil. La operación de convolución implica combinar los datos de entrada (mapa de funciones) con un kernel de convolución (filtro) para formar un mapa de funciones transformadas. Los filtros en las capas convolucionales (capas conv) se modifican según los parámetros aprendidos para extraer la información más útil para una tarea específica. Las redes convolucionales se ajustan automáticamente para encontrar la mejor función según la tarea. La CNN filtra información sobre la forma de un objeto cuando se enfrenta a una tarea de reconocimiento de objetos general, pero extrae el color del pájaro cuando se enfrenta a una tarea de reconocimiento de aves. Esto se basa en la comprensión de la CNN de que diferentes clases de objetos tienen diferentes formas, pero que los diferentes tipos de aves tienen más probabilidades de diferir en color que en forma.

Cómo ve una red neuronal profunda

Casos de Uso de la Industria para la Visión de Computación

Los casos de uso de la visión de computación incluyen el reconocimiento de imágenes, la clasificación de imágenes, el etiquetado  de videos y los asistentes virtuales. Algunos de los casos de uso más populares y prominentes para la visión de computación son los siguientes:

  • Medicina. El procesamiento de imágenes médicas implica la extracción rápida de datos de imágenes vitales para ayudar a diagnosticar correctamente a un paciente, lo que incluye la detección rápida de tumores y del endurecimiento de las venas. Si bien no se puede confiar solamente en la visión de computación para proporcionar diagnósticos, es una parte invaluable de las técnicas modernas de diagnóstico médico, ya que refuerza mínimamente lo que los médicos piensan y, de forma creciente, proporciona información que los médicos de otra forma no habrían visto.
  • Vehículos Autónomos. Esta es otra área muy activa de la investigación de la visión de computación. Las soluciones de visión de computación pueden controlar por completo los vehículos autónomos o mejorar significativamente sus operaciones. Las aplicaciones comunes que ya están funcionando incluyen sistemas de advertencia temprana en automóviles.
  • Usos industriales. La manufactura incluye numerosos usos actuales y potenciales de las soluciones de visión de computación para los procesos de manufactura. Los usos actuales incluyen el control de calidad en donde los sistemas de visión de computación inspeccionan piezas y productos terminados para detectar defectos. En la agricultura, los sistemas de visión de computación usan el ordenamiento óptico para eliminar materiales indeseados de los productos de alimentación.

Científicos de datos y visión de computación
Python es el lenguaje de programación más popular para machine learning (ML), y la mayoría de los científicos de datos están familiarizados con su facilidad de uso y su gran tienda de bibliotecas, la mayoría de ellas gratuitas y de código abierto. Los científicos de datos usan Python en sistemas de ML para la extracción de datos y el análisis de datos, ya que Python proporciona compatibilidad con una amplia variedad de algoritmos y modelos de ML. Dada la relación entre ML y la visión de computación, los científicos de datos pueden aprovechar el universo en expansión de las aplicaciones de visión de computación en empresas de todo tipo para extraer información vital de las tiendas de imágenes y videos y aumentar la toma de decisiones basadas en datos.

Aceleración de Redes Neuronales Convolucionales mediante GPU

Desde el punto de vista arquitectónico, la CPU está compuesta por solo unos pocos núcleos con una gran cantidad de memoria caché que puede manejar algunos hilos de software a la vez. Por el contrario, una GPU está compuesta por cientos de núcleos que pueden manejar miles de hilos en simultáneo.

 La diferencia entre una CPU y una GPU.

Dado que las redes neuronales se crean a partir de una gran cantidad de neuronas idénticas, son muy paralelas por naturaleza.  Este paralelismo se asigna de forma natural a las GPU, que proporcionan una arquitectura aritmética con datos en paralelo y una aceleración de computación importante en lugar del entrenamiento solo de CPU. Este tipo de arquitectura lleva a cabo un conjunto similar de cálculos en una matriz de datos de imágenes. La capacidad de una sola instrucción y varios datos (SIMD) de la GPU la hace ideal para ejecutar tareas de visión de computación, que a menudo implican cálculos similares que operan en toda una imagen. Específicamente, las GPU de NVIDIA aceleran enormemente las operaciones de visión de computación, lo que libera la CPU para otros trabajos.  Además, se pueden usar varias GPU en la misma máquina, para crear una arquitectura capaz de ejecutar varios algoritmos de visión de computación en paralelo.

Frameworks de Deep Learning Acelerados por GPU de NVIDIA

Los frameworks de deep learning acelerados por GPU proporcionan  interfaces a lenguajes de programación comúnmente utilizados, como Python. También proporcionan flexibilidad para crear y explorar fácilmente CNN y DNN personalizadas,  al mismo tiempo que ofrecen la alta velocidad necesaria tanto para los experimentos como para la implementación industrial. NVIDIA CUDA-X AI acelera los frameworks de deep learning ampliamente utilizados, como Caffe, Microsoft Cognitive Toolkit (CNTK), TensorFlow, Theano y Torch, así como muchas otras aplicaciones de machine learning. Los frameworks de deep learning se ejecutan más rápido en las GPU y se escalan en varias GPU dentro de un solo nodo. Para usar los frameworks con las GPU para los procesos de inferencia y de entrenamiento de redes neuronales convolucionales, NVIDIA proporciona cuDNN y TensorRT™ respectivamente. cuDNN y TensorRT proporcionan implementaciones muy ajustadas para las rutinas estándar, como las capas de convolución, agrupación, normalización y activación.

Haz clic aquí para obtener una guía de uso y de instalación paso a paso  de NVCaffe. Puedes encontrar una rápida implementación de C++/CUDA de redes neuronales convolucionales aquí.

Para desarrollar e implementar un modelo de visión en poco tiempo, NVIDIA ofrece el SDK DeepStream, para desarrolladores de IA de visión. También incluye TAO Toolkit para crear modelos de IA precisos y eficientes destinados al dominio de visión de computación.

Entrenamiento e Inferencia.

Ciencia de Datos Integral y Acelerada por las GPU de NVIDIA

El conjunto NVIDIA RAPIDS™ de bibliotecas de software de código abierto, basado en CUDA, te brinda la capacidad de ejecutar pipelines integrales de análisis y ciencia de datos completamente en las GPU, al mismo tiempo que usa interfaces conocidas como las API de Pandas y de Scikit-Learn.

Pipelines integrales de análisis y ciencia de datos completamente en las GPU

Próximos Pasos

Para obtener  más información técnica y noticias  sobre otros temas de visión de computación, como las CNN, visita nuestro sitio para desarrolladores.

Para obtener más información:

Para obtener más información técnica, lee lo siguiente: