visioncompu

El objetivo principal de la visión por ordenador es crear algoritmos que puedan identificar determinadas características u objetos dentro de una imagen digital o un vídeo. Tareas como el reconocimiento de rostros, la identificación de objetos y la interpretación de escenas están dentro de las capacidades de estos algoritmos.

Las opciones de las bibliotecas de Python para las aplicaciones de visión por ordenador son amplias. Con la ayuda de estas bibliotecas, los desarrolladores pueden ahorrar tiempo y esfuerzo haciendo uso de código ya escrito que puede aplicarse a una amplia gama de aplicaciones. Además de ser fácil de aprender y utilizar, el código de Python también es razonablemente sencillo de leer y comprender, lo que ayuda a acelerar la depuración y el mantenimiento.

Varias aplicaciones para el gobierno federal de los Estados Unidos utilizan Python para el desarrollo de la visión por ordenador. Una de las aplicaciones en las que trabajé consistía en utilizar el aprendizaje automático para predecir la presencia de lápidas y marcadores rotos en los cementerios que albergan los restos de miembros de la guerra de Estados Unidos. Los resultados del análisis mostrarían la cantidad de dinero y mano de obra que debería asignarse para las reparaciones necesarias.

1. SciPy

Enlaces esenciales: En este enlace para investigación. También, Github y Página Principal..
Descripción: Software de código abierto basado en Python [1] para matemáticas, ciencia e ingeniería construido sobre NumPy.

Mejores prácticas

Antes de analizar sus datos con SciPy, le recomiendo que preprocese sus datos para asegurarse de que sus fotos de entrada están adecuadamente escaladas y normalizadas. A continuación, debería posprocesar sus resultados. Si está haciendo un análisis de imágenes, por ejemplo, puede encontrar que necesita umbralizar o binarizar los resultados de su trabajo. Mantenga los datos de sus imágenes organizados en matrices NumPy también, ya que esto hará que el procesamiento y la manipulación sean mucho más simples.

Por qué es importante

Cuando se trata de visión por ordenador, uno de los principales beneficios de usar SciPy es la capacidad de tratar con arrays que tienen N dimensiones. Además, SciPy ofrece una amplia variedad de algoritmos numéricos que pueden utilizarse para realizar tareas de procesamiento de imágenes. Algunos ejemplos de estos algoritmos son la convolución, las transformadas de Fourier y las operaciones estadísticas.

Además, SciPy ofrece un amplio soporte para leer y escribir en una variedad de formatos de archivos de imagen, incluyendo JPEG, PNG y TIFF, entre otros. Este nivel de soporte es esencial para lograr la compatibilidad con otros paquetes de software, así como para almacenar las fotos procesadas en formatos interoperables.

Otra característica de SciPy es su capacidad para interactuar con interfaces gráficas de usuario (GUI) populares para Python, como wxPython y Qt. La interacción con GUIs hace que SciPy pueda crear representaciones complejas de datos de imágenes de forma interactiva. Además, hay disponibles varias bibliotecas de terceros que mejoran la capacidad de Scipy, incluyendo bibliotecas especialmente dirigidas a tareas de visión por ordenador.

Algunos ejemplos específicos en los que SciPy puede utilizarse para la visión por ordenador incluyen (1) el preprocesamiento de imágenes para eliminar el ruido o aplicar filtros; (2) la detección de bordes u otras características en las imágenes; (3) la segmentación de imágenes en regiones u objetos; y (4) la realización de registro o alineación de imágenes.

2. Keras

Enlaces imprescindibles: the book. También, Github y Página Principal.
Descripción: una interfaz de programación de aplicaciones de alto nivel para el aprendizaje profundo que permite experimentar de forma rápida y sencilla. Encapsula las potentes librerías de computación numérica Theano y TensorFlow y permite el desarrollo de sofisticados modelos de redes neuronales.

Por qué es importante

Incluye varios modelos de aprendizaje profundo que han sido preentrenados para aplicaciones de visión por ordenador como la clasificación de imágenes, la detección de objetos y la segmentación. Además, Keras incluye muchas herramientas para visualizar y depurar los modelos de aprendizaje profundo, que pueden ser útiles para comprender cómo funcionan los modelos. Además, cuenta con una API fácil de usar que simplifica la manipulación de los datos, una capacidad que considero especialmente útil para las tareas de visión por ordenador en las que el preprocesamiento de los datos puede llevar una cantidad de tiempo considerable.

Keras es una herramienta muy eficaz para desarrollar modelos de aprendizaje profundo para tareas de visión por ordenador. Permite la construcción rápida de modelos, por lo que es ideal para la creación de prototipos y la experimentación. Por ejemplo, ofrece una variedad de capas y funciones de activación que se utilizan a menudo en las aplicaciones de visión por ordenador, lo que reduce la cantidad de código personalizado necesario para crear modelos.

3. Mahotas

Enlaces esenciales:  research. También, Github y Página Principal.
Descripción: una librería de visión por ordenador que implementa algoritmos comunes de procesamiento de imágenes. Entre ellos están la segmentación, el desenfoque, la interpolación spline y la transformación geométrica. Además, mahotas ofrece utilidades para calcular las propiedades de las imágenes (como los histogramas) y trabajar con formatos de archivo estándar (como TIFF y PNG).

Por qué es importante

Comienza y termina con la visión por ordenador para Mahotas, ya que es una biblioteca específica para estas tareas. Proporciona una amplia gama de funciones para el procesamiento de imágenes y la visión por ordenador, incluyendo morfología, filtrado, conversión de color, zoom y rotaciones. Además, proporciona una amplia gama de funciones de visión por ordenador, desde simples rutinas de procesamiento de imágenes hasta algoritmos más avanzados como la detección y el reconocimiento de objetos.

Debido a que se basa en matrices NumPy, su código es autocontenido de tal manera que numpy es su única dependencia.

Cuatro de las tareas algorítmicas más ampliamente implementadas que lo utilizan son SURF (características robustas aceleradas), watershed, thresholding y computación de cascos convexos. SURF es la más reconocida, por lo que a continuación se presenta una breve introducción.

Tiene varias funciones principales:

- Detección de puntos de interés, descripción de características locales y correspondencia de características locales.

- Detección de puntos de interés: esta función identifica los puntos "interesantes" de una imagen, normalmente en las esquinas o en las zonas de alto contraste. SURF utiliza un algoritmo especial para detectar estos puntos de interés que son invariables a la escala, la rotación y los pequeños cambios de iluminación.

- Descripción de características locales: describe el aspecto de una imagen alrededor de un punto de interés. Se crea un vector que captura tanto la fuerza como la dirección de las características clave de la imagen. Esto permite hacer coincidir los puntos de interés entre las imágenes, incluso si son de diferentes ángulos o escalas.

- Coincidencia de características locales: esta función toma dos conjuntos de descripciones de características locales y encuentra las mejores coincidencias entre ellos. Es útil para tareas como el reconocimiento de objetos, en las que se tiene una imagen de un objeto (la "imagen de consulta") y se quiere encontrar ese objeto en otra imagen (la "imagen de destino").

Reflexiones Finales

Python es compatible con los paradigmas de programación funcional y orientada a objetos, lo que proporciona a los desarrolladores más flexibilidad a la hora de diseñar programas, especialmente para los casos de uso de la visión por ordenador. Para las tareas de visión por ordenador, es ventajoso utilizar Python porque es conciso y legible, lo que facilita la depuración y el mantenimiento. Mahotas, Keras y SciPy son tres bibliotecas de Python que puede considerar emplear para sus tareas de visión por ordenador.

Si tienes alguna recomendación para este post o sugerencias para ampliar el tema, te agradecería que me lo dijeras.

References:

1. Tilbe, Anil (2022, August 15). 8 most essential scipy functions for linear algebra. Better Programming. https://medium.com/better-programming/8-most-essential-scipy-functions-for-linear-algebra-programming-simplified-e3c7a4db0b58

 

Fuente: somoslibres

 

¿Quién está en línea?

Hay 16567 invitados y ningún miembro en línea