junio 1, 2022 10:00 am

Jesús

La idea de que las máquinas u ordenadores pudieran percibir imágenes en el mundo real e interpretarlas en consecuencia se consideraba antes imposible. En la generación moderna, sabemos que ha habido varios avances rápidos que han llevado a la rápida progresión en el campo de la visión artificial o de la máquina. En los próximos años, se producirán muchos más avances en la visión artificial para hacerla más excepcional.

La visión artificial se ha hecho especialmente popular desde la última década. Aunque los conceptos teóricos han existido durante bastante tiempo, es gracias a las tecnologías modernas que han ayudado a impulsar el tema a otro nivel. La visión artificial es la rama de la inteligencia artificial que permite a los sistemas calibrar una comprensión general de alto nivel de las imágenes, vídeos u otras entidades y actividades en tiempo real.

Aunque el objetivo de este artículo es centrarse en algunos términos significativos de la visión por computador, ya he cubierto previamente el tema de OpenCV y los fundamentos de la visión por computador con gran detalle. Si eres nuevo en este campo, es recomendable que consultes primero el siguiente artículo que te proporciono a continuación para tener un conocimiento más profundo de este tema y asegurarte de que puedes conseguir los mejores resultados leyendo el contenido de este artículo.

En este artículo, trataremos de cubrir diez de las terminologías más esenciales que se requieren para numerosas aplicaciones de visión artificial. Con la información y el conocimiento correctos sobre estos aspectos, podrás construir cualquier tipo de proyectos de visión por computador con una mezcla de algoritmos de machine learning o deep learning. Comencemos a explorar estos diez conceptos y aprendamos más sobre ellos individualmente.


1. Image Formatting (Formateo de Imágenes)

El formateo de imágenes y las manipulaciones de imágenes son dos de las terminologías más comunes que se escuchan en el mundo de la visión artificial. Entendamos estos conceptos clave de forma intuitiva para evitar cualquier confusión futura. Las imágenes normales que percibimos en el mundo natural suelen ser imágenes que tienen algo de ancho, algo de alto y normalmente son de tres canales porque suelen contener una composición de color de imágenes RGB. A continuación se muestra una representación típica de los parámetros de la imagen.

Con las manipulaciones de imágenes, se pueden realizar una serie de operaciones útiles que ayudarán a reducir los requisitos de cálculo de los algoritmos de machine learning o deep learning. Algunos de los métodos de manipulación de imágenes incluyen el cambio de tamaño, el recorte o la conversión en imágenes en escala de grises (este punto se tratará con más detalle en la siguiente sección). Las manipulaciones de imágenes desempeñan un papel crucial en las aplicaciones de visión artificial.

Con el formateo de imágenes, nuestra tarea suele consistir en lograr la mejor representación de la imagen, haciéndola adecuada para nuestra tarea particular. Este paso puede implicar ciertas manipulaciones de la imagen, como se ha comentado anteriormente, y su almacenamiento en el formato deseado. Los formatos habituales de almacenamiento de imágenes incluyen PNG, JPG, JPEG, TIF y otros formatos similares.


2. Grayscale

En la visión artificial, las imágenes en escala de grises juegan un papel crucial en la mayoría de las operaciones que tienen aplicaciones prácticas. Por lo general, el rango 0 se refiere al color negro, y a medida que el rango aumenta consecutivamente, comenzamos a alcanzar los tonos más claros hasta que finalmente encontramos el blanco en el valor 255. Por lo tanto, las imágenes en escala de grises también pueden considerarse como una gama de imágenes de color grisáceo, que siguen diferentes tonos de gris.

La conversión de las imágenes RGB en color a otros formatos, especialmente a las imágenes en escala de grises, puede ser muy útil para reducir el esfuerzo de cálculo y las limitaciones de la CPU (o a veces de la GPU). Con los conjuntos de datos convertidos a escala de grises, se puede procesar el cálculo de forma más rápida y eficaz. También se puede utilizar para simplificar los algoritmos y extraer los descriptores sin consumir demasiados requisitos adicionales. El código sencillo para la conversión a escala de grises es el siguiente.

Otro concepto esencial que hay que entender es el tema delenmascaramiento. Una máscara es una imagen binaria formada por valores cero y no cero. Si se aplica una máscara a otra imagen binaria o a una imagen en escala de grises del mismo tamaño, todos los píxeles que son cero en la máscara se ponen a cero en la imagen de salida. Todos los demás permanecen sin cambios. Si quieres saber más acerca del enmascaramiento, te dejo éste enlace para que conozcas qué son las mascaras, para qué sirven y cómo aplicarlas.


3. Intersección Sobre la Unión y Pérdida de Dice (IoU and Dice Loss)

Al trabajar con imágenes y en la mayoría de las tareas de visión artificial, hacemos uso de ciertas métricas computacionales esenciales para analizar el rendimiento de nuestros modelos. Las dos métricas principales para asegurar que el modelo está funcionando eficazmente durante el entrenamiento y durante las etapas de evaluación son la puntuación de la Intersection over Union (IoU) y Dice Loss (o pérdida de Dice).

La Intersección sobre la Unión (IoU), como su nombre indica, es el solapamiento entre datos reales de la imagen y la predicción realizada por el modelo. A menudo se considera una medida mejor que la exactitud y se utiliza mucho en aplicaciones de visión artificial. A menudo, una puntuación de IoU superior a 0,5 puede considerarse una buena puntuación para aplicaciones prácticas.

Por otro lado, la pérdida de Dice es una de las medidas que se utilizan en el procesamiento de imágenes para conocer la similitud entre dos o más entidades deseadas. La fórmula de la siguiente puede escribirse como sigue después de considerar los valores de verdadero positivo, falso positivo y falso negativo:


4. Cajas de Anclaje y Supresión no Máxima

Cajas de anclaje (anchor boxes) y Supresión no máxima (Non maximum suppressionNMS) son dos términos comunes utilizados en la visión artificial, especialmente en la implementación de algoritmos de detección de objetos. Por lo tanto, es importante entender su importancia en secuencias específicas y por qué se utilizan para estas tareas.

Los cuadros de anclaje son útiles para establecer cuadros delimitadores de altura y anchura predefinidos en una imagen. Suelen capturar numerosas escalas y relaciones de aspecto de diferentes objetos que se desea incorporar específicamente en el modelo de entrenamiento. Existen numerosos cuadros de anclaje que se utilizan para este fin.

Cuando se utilizan muchas cajas de anclaje para un propósito específico, podría dar lugar a ciertas cuestiones y problemas, especialmente debido a la superposición. Por lo tanto, el concepto de supresión no máxima (NMS) se utiliza para filtrar los cuadros excesivamente superpuestos y pasar el resultado procesado a las redes neuronales para su posterior cálculo y procesamiento.


5. Ruido

El ruido (noise) en las imágenes es básicamente cualquier tipo de perturbación que puede producirse debido a la interferencia de factores externos que contaminan (deprecian) la calidad de la imagen. El ruido en una imagen se puede encontrar frecuentemente como interferencias indeseables en tus fotos o imágenes. Aunque a veces se puede intentar añadir algo de ruido propio para la generación de imágenes (como en los RGAs - Red generativa antagónica), normalmente no es algo que se quiera en las imágenes perfectas.

Si considera que el ruido añadido no es necesario en su imagen específica, puede intentar filtrar este ruido. El filtrado de ruido es uno de los métodos para experimentar con los diversos trucos del módulo OpenCV para deshacerse del ruido existente. Con éste código lo demuestro brevemente.


6. Técnicas de desenfoque

El proceso de difuminado (blurring) o suavizado (smoothing) es una técnica crucial en la visión artificial para reducir el número de valores atípicos en una determinada imagen. Como hemos leído sobre el ruido en la sección anterior, tenemos una breve comprensión de los efectos secundarios de la interferencia del ruido en una imagen. Uno de estos métodos para evitar estas interferencias y filtrar este ruido es utilizar técnicas de desenfoque.

En el bloque de código anterior, hemos utilizado una popular técnica de desenfoque llamada Desenfoque Gaussiano, que hace uso de la función Gaussiana y ayuda a suavizar la imagen dada en consecuencia. En el código específico de Desenfoque Gaussiano proporcionado por OpenCV, el objetivo es proporcionar la fuente y el tamaño del núcleo, que siempre debe ser una tupla de números impares para lograr la imagen suavizada resultante.


7. Detección de bordes:

La detección de bordes es otro objetivo importante que se logra con la visión artificial. La detección de bordes ayuda a identificar las distintas partes de una imagen con brillo variable o discontinuidades en los patrones, gracias a lo cual se puede encontrar el área requerida. También se utiliza para extraer la estructura de determinados objetos de una imagen y encuentra su utilidad en otras aplicaciones de visión artificial como la detección de objetos.

La imagen anterior es un ejemplo de cómo se puede realizar una determinada acción de detección de bordes y cómo se puede variar la capacidad de detección variando el factor de umbralización. Aunque hay muchos métodos para realizar la detección de objetos y hay un montón de aplicaciones únicas para la misma.


8. FPS

Los fotogramas por segundo (FPS) son otro concepto esencial de la visión artificial que suele utilizarse en el cálculo de secuencias de vídeo o imágenes en tiempo real. Para entender el concepto con mayor sencillez, consideremos un par de ejemplos. Supongamos que estás viendo un vídeo o una película en una plataforma concreta como YouTube. Tienes la opción de ver cuántos fotogramas por segundo está reproduciendo el vídeo en cuestión y cuál es la calidad específica.

Otro ejemplo es cuando intentas jugar a un videojuego, tendrás un número determinado de fotogramas por segundo que es la cantidad de contenido que tu dispositivo puede procesar a medida que avanza el juego. Para estas tareas, 60 fotogramas por segundo suelen considerarse una buena cifra. Del mismo modo, para proyectos informáticos como la detección de objetos en tiempo real, el concepto de FPS es primordial para determinar el rendimiento de su modelo específico.


9. Segmentación

Una de las operaciones más significativas que se pueden realizar con la visión artificial y el deep learning es la tarea de segmentación. En concreto, la segmentación consiste en segregar los elementos más esenciales o un elemento específico deseado de la imagen para poder realizar cálculos posteriores sobre la misma, como la clasificación o la localización. Se tienen en cuenta los grupos de una imagen concreta y se segmentan en consecuencia, distinguiéndolos de otros elementos.

El proceso normal de segmentación incluye la consideración de un determinado conjunto de datos junto con sus respectivas máscaras. Con la imagen respectiva y los datos reales para esa imagen en particular, podemos entrenar un modelo para ciertas muestras con métodos como una U-Net u otras arquitecturas similares. Una vez construido el modelo con éxito, se pueden realizar numerosas pruebas de segmentación en otras imágenes y aislar (segregar) los requisitos esenciales.


10. Detección de Objetos

Otra contribución esencial de la visión artificial que es primordial para el desempeño de varios problemas de la vida real es la tarea de detección de objetos. La detección de objetos es una de las aplicaciones más cruciales en el mundo actual y encuentra sus casos de uso en numerosos problemas relacionados con el seguimiento de objetos (como el seguimiento de una pelota de cricket o de béisbol), el reconocimiento facial para el reconocimiento de rostros, las aplicaciones robóticas, los coches autodirigidos, y mucho más, lo que en última instancia beneficiará a los seres humanos a gran escala.

Dado que la detección de objetos es uno de los elementos más esenciales de las tareas de visión artificial, existen varias metodologías, herramientas, algoritmos y bibliotecas para abordar esta tarea. Algunos de los mejores algoritmos incluyen el Histograma de Gradientes Orientados (HOG), Faster R-CNN, YOLO, y muchos otros algoritmos y técnicas similares. También hay varias bibliotecas como Image AI y Detectron2 que realizan estas tareas de forma eficaz.


Conclusión:

La visión artificial es uno de los mayores logros que ha alcanzado el ser humano. Con la rápida progresión en este campo, ahora es posible realizar con facilidad casi cualquier tipo de tarea de visión artificial relacionada con imágenes, vídeos o capturas en tiempo real. Como hay un montón de operaciones y proyectos futuros que aún están por descubrir, hemos acumulado un enorme potencial en el siguiente campo.

En este artículo, hemos explorado las diez terminologías más significativas relacionadas con la visión artificial. Con el perfecto procesamiento, comprensión y conocimiento de estos recursos, se hace posible para la mayoría de los desarrolladores llevar a cabo cualquier tipo de proyecto específico de visión artificial o por ordenador con las herramientas y tecnologías adecuadas. Asegúrate de recordar o tomar nota de estos términos para futuras actividades.

Espero que te haya gustado el artículo de hoy. 

¡Nos vemos pronto! 

Sobre el Autor

Jesús Martínez es el creador de DataSmarts, un lugar para los apasionados por computer vision y machine learning. Cuando no se encuentra bloggeando, jugando con algún algoritmo o trabajando en un proyecto (muy) cool, disfruta escuchar a The Beatles, leer o viajar por carretera.