Qué es Computer Vision
Hola de nuevo, como siempre es un placer coincidir contigo.
hoy vengo con un tema que suele resultar muy llamativo, y es la visión artificial o visión por computador (CV, por su denominación en inglés).
Y.... bueno, creo que la imagen de la portada ya explica bastante bien sobre qué vamos a hablar.
En primer lugar, y, sobretodo, por centrar un poco el tiro, entremos a definir el término
¿Qué es computer Vision?
Definiendo el término más o menos formalmente, podría decirse que es un conjunto de técnicas o herramientas para analizar y procesar imágenes para extraer información de las mismas que pueda ser utilizada posteriormente.
En palabras más informales, podríamos afirmar que consiste en el análisis de imágenes y vídeos, para identificar objetos, figuras o siluetas en ellos, pudiendo con esto realizar funciones como por ejemplo el reconocimiento facial en una foto o el seguimiento de objetos en vídeo, facilitando de esta forma la toma de decisiones.
Un ejemplo de aplicación es el reconocimiento facial, esa funcionalidad que, desde hace ya un tiempo, incorporan muchos teléfonos móviles con la que podemos desbloquearlos, simplemente permitiendo que su cámara frontal analice nuestro rostro. El proceso consiste en que el terminal obtiene una imagen de nuestra cara, y procede a analizarla, identificando rasgos que previamente tiene almacenados, para comparar si coinciden con imágenes que se le han facilitado anteriormente.
Lo mismo aplica en el caso del desbloqueo por huella digital. Al configurar el servicio de desbloqueo por huella, un lector de huellas obtiene imágenes de las mismas, y luego, al intentar desbloquearlo, el sistema va a comparar las imágenes iniciales con la obtenida en el momento del desbloqueo mediante visión artificial.
Pulsando sobre la imagen anterior puedes acceder a una publicación de BBVA (origen de la imagen, por cierto) sobre usos "curiosos" del reconocimiento facial.
Todo en el campo de la visión artificial se realiza mediante operaciones matemáticas (muchas operaciones son tan populares que programas de edición de fotografías las incluyen como filtros). Como las imágenes son secuencias de pixeles de distintos colocre, pero que pueden codificarse como una mezcla de Rojo, Verde y Azul (RGB), pues utilizando estos componentes pueden realizarse muchos cálculos cuyos resultados son sorprendentes, como por ejemplo:
- Detección de bordes
- Escalado de imágenes
- Distorsión de la imagen
- Convertirla a grises
- y otras más complejas.
Ahora bien ¿cómo podemos aplicar técnicas de visión artificial?
Herramientas para crear sistmas de CV
Existen diferentes técnicas, aunque hoy por hoy, las más empleadas son el uso de la librería Open CV y la generación de modelos de Deep Learning específicos.
Si quieres saber más sobre Deep Learning, te recomiendo que leas un post que he publicado hace poco. Lo puedes leer pinchando aquí.
Open CV.
Open CV es una librería con más de 22 años de historia, cuya primera publicación tuvo lugar en el año 1.999 y que, hoy por hoy, es de código abierto, por lo que es mantenida por una comunidad de expertos a nivel mundial, aunque en sus inicios la desarrolló el equipo ruso de Intel.
Actualmente permite ser utilizada desde numerosos lenguajes de programación, aunque inicialmente se desarrolló en C++, y ofrece más de 2.500 algoritmos para imágenes, así como el uso de algunas técnicas de aprendizaje automático.
Son muchísimas las aplicaciones comerciales que la utilizan, además de que, al ser de código abierto, puede emplearse en todo tiepo de formaciones (desde informales a universitarias sin coste alguno, lo cual ha facilitado mucho que se emplee ampliamente).
Algunas de las operaciones más básicas que permite realizar son:
Identificación de objetos y caras
- Eliminación de ojos rojos en fotografías
- Extracción de modelos 3D
- Seguimiento del movimiento de los ojos
- Reconocimiento facial
Redes convolucionales mediante Deep Learning
Un poco más arriba he mencionado un artículo en el que hablo sobre qué es el aprendizaje profundo y sus aplicaciones, así como explico en que consisten las redes neuronales, así que no te aburriré de nuevo con eso, ya que puedes consultarlo desde este enlace.
Las redes convolucionales son un tipo de red neuronal que, generalmente espera imágenes en la entrada (aunque se emplean también con entradas en otros formatos, como ficheros de audio, por ejemplo). Son un tipo de red neuronal que se empezó a utilizar, aproximadamente en el año 1.998, por lo que, puede decirse que son bastante novedosas ( aunque a la velocidad que evoluciona la IA, ya son una herramienta "antigua", surgen nuevas arquitecturas con frecuencia).
Su característica más común es que, emplean capas con funciones específicas para el análisis de imágenes en una red neuronal, como las capas "convolucionales", que van procesando, matemáticamente, los pixeles cercanos a uno dado, de modo que "simplifican o reducen la imagen", de tal modo que, de algún modo, eliminan lo supérfluo y se quedan con los rasgos más característicos de la misma (aquellos que, eliminando pixeles, aun sobreviven). De este modo "escanean" la imagen completa, extrayendo los patrones que la definen.
Francois Chollet, en su libro "DEEP LEARNING with Python", 2nd. edition (Ed. Manning) publica esta imagen, que intenta explicar cómo diferentes capas convolucionales estraen características de las imágenes, hasta poder determinar o identificar el elemento:
Es de este modo como, las redes neuronales convolucionales, pueden extraer las características distintivas de una imagen, aplicando filtros (del mismo nombre) de diferentes tamaños que le permiten a la red identificar rasgos característicos de las imágenes.
La visión artificial es tan popular porque entre 2010 y 2015, fué el área de aplicación de la IA que lideró el crecimiento del Deep Learning, creándose en esta etapa arquitecturas de redes neuronales tan conocidas como "AlexNet" y otras arquitecturas convolucionales, como la VGG-16, propuesta en el año 2014, aunque Yan LeCunn creó su arquitectura Le-Net un tiempo antes (1998), por lo que la historia del Deep Learning aplicado a Visión artificial viene de antes
Un caso particular de las redes neuronales convolucionales son las redes YOLO, es un modelo de red neuronal sobre el que se ha avanzado mucho (creo que vamos por la versión 5).
Las redes Yolo
Yolo es una arquitectura de red neuronal que responde al comportamiento (You Only Look Once, en vez de "you only lice once", que es su versión coloquial en otros contextos), es decir, permiten identificar todos los objetos de una imagen a la vez, marcarlos con recuadros y etiquetarlos. Su nombre viene a explicar que hace el procesamiento una vez, y no va buscando todos los objetos uno por uno.
Además, este tipo de arquitectura, permite el seguimiento de objetos en movimiento (vídeos hasta 30 fps), por lo que permite una cantidad de aplicaciones muy grande.
Ahora que ya hemos visto diferentes formas de aplicar visión por computador es cuando llega el momento de, como en casi todos los artículos, explicar que las inteligencias no son tan inteligentes, y no identifican una bici como tal, ni caben para qué sirve, pero la explicación de todo esto la tienes en mayor profundidad, en este otro artículo, donde hablo sobre el futuro de la IA y las inteligencias fuertes.
La imagen de arriba, de "programmerclick.com", intenta mostrar el funcionamiento de una red Yolo. Si te interesan los detalles técnicos, pinchando sobre ella, accederás a una introducción sobre las mismas.
Ahora, que ya tenemos una idea sobre la visión por computador, es cuando procede desmitificar lo que las películas futuristas nos han hecho creer, y hablar sobre algunos
Casos de uso reales de Computer Vision
Es un área de aplicación ésta, con una variedad inmensa y creciente de casos de uso, en todos los sectores, como por ejemplo:
- Salud: En el área de la salud se emplea la visión artificial para numerosas tareas, generalmente orientadas a la prevención, ya que permite que se diagnostiquen enfermedades en etapas muy tempranas. En este sentido, suelen emplearse cámaras infrarojas, de modo que, la simágenes capturadas, se procesan con modelos de CV, aplicando, de este modo, técnicas de termografía médica. Como caso de uso más habitual puede citarse la detección temprana de diferentes tipos de cáncer, como el cánder de pulmón o el cáncer de mama. Igualmente se han desarrollado sistemas de visión artificial, dotados de cámaras térmicas para la detección de Covid-19. Pero uno de los casos de uso de mayor impacto es el que se muestra en el siguiente vídeo, disponible de forma pública en el canal de YouTube del diario "El Mundo"
- Seguridad vial: No solo la IA integrada en vehículos puede citarse en este punto, con mención especial a los vehículos autónomos, sino que, cámaras de seguridad via,l pueden emplearse para detectar conductores que no estén empleando las medidas de seguridad obligatorias (casco en el caso de motoristas, cinturón de seguridad en automovilistas) o incluso para estimar la velocidad de los vehículos.
- Control de accesos y seguridad privada: Desde el, ya más que explotado, reconocimiento facial hasta el análisis de vídeo y detección en tiempo real para detectar hurtos (por ejemplo en supermercados o centros comerciales), avisando en este caso los sistemas informáticos al equipo de seguridad para que pueda proceder del modo adecuado.
- Comercio: ¿Te imaginas detectar y analizar el comportamiento de los clientes en grandes superficies y que, a partir del mismo, puedan tomarse decisiones expositivas de los productos?
- Acciones de rescate: En incendios forestales, con drones, dotados con cámaras de alta definición, es posible detectar si hay personas o animales en riesgo que deban ser evacuados, en catástrofes como terremotos, los robots pueden explorar zonas poco seguras buscando (con imágenes o sonidos) cuerpos, con vida o sin ella, que deban ser rescatados.
- Procesos industriales: La visión artificial puede aplicarse en procesos de control de calidad en líneas de producción (detección de taras), así como en por ejemplo, el mantenimiento predictivo de la maquinaria (detectando micro-desviaciones u holguras en determinados puntos que podrían generar problemas de fabricación en poco tiempo).
Este breve vídeo muestra aplicaciones industriales reales de la visión artificial (trazabilidad, control de especies, etc...)
Conclusiones
Estoy seguro de que, al igual que yo, opinas que la visión artificial tiene por delante un recorrido inmenso, y que, combinada con otras áreas de la IA (que ya comentamos en este post del blog) ofrece una cantidad de aplicaciones muy amplia y casos incontables. De hecho, podríamos seguir charlando sobre este tema, apasionante, pero como no quiero robarte más minutos de tu vida, en lugar de seguir escribiendo, te dejo este vídeo, que te servirá para ampliar tus conocimientos sobre las aplicaciones de la visión artificial en la empresa si lo deseas.
Yo, me despido hasta el próximo artículo, dentro de unos días, no sin antes pedirte que, si no lo has hecho, te suscribas a esta newsletter para recibir notificaciones cuando se publiquen nuevos artículos y que, por supuesto, si este texto te ha parecido interesante, lo premies con un Like y lo compartas en tu feed, con lo que me ayudarías mucho.