Revisión del curso: Visión artificial práctica con OpenCV & python

En este artículo, proporcionaré una revisión del curso de Udemy Hands On Computer Vision con OpenCV & Python, de Shrobon Bis, apareció en Udemy onli...

Introducción

En este artículo estaré brindando una reseña del curso de Udemy Manos a la visión artificial con OpenCV y Python de Shrobon Biswas aparece en el sitio de aprendizaje en línea Udemy. Al momento de escribir este artículo, diría que el curso tiene un éxito moderado con un total de 146 calificaciones con un promedio de 4.1/5 estrellas junto con una inscripción total de 851 estudiantes.

Según la descripción, este curso es de naturaleza introductoria y está dirigido a programadores principiantes e intermedios con una comprensión básica del lenguaje de programación Python. En el momento en que comencé este curso, tenía muy pocos conocimientos previos sobre procesamiento de imágenes o visión por computadora y ninguna experiencia con OpenCV, lo que me convierte en el público objetivo ideal para este curso.

En las siguientes secciones, revisaré y discutiré las diversas áreas de contenido, brindando mi opinión sobre el material.

Revisión de la sección del curso

Introducción e instalación

Esta sección tiene el contenido introductorio típico que cubren la mayoría de los cursos de esta naturaleza, como una explicación básica del curso y el esquema. La instalación se presentó en forma de una descripción simple de cómo instalar el entorno Anaconda junto con OpenCV. En mi opinión, hubiera sido bueno dar una demostración en video de la instalación del software requerido en lugar de las instrucciones proporcionadas.

Conceptos básicos de imagen

En esta sección, el autor del curso describe los aspectos básicos de la lectura y escritura de imágenes hacia y desde el disco, además de cómo obtener una imagen de un recurso web a través de HTTP.

Además del archivo IO básico, explica muy bien el concepto de canales de imagen para imágenes en color rojo, verde y azul. Además de su explicación de los canales de imagen, hay algunos buenos ejemplos del uso del lenguaje de programación Python y la biblioteca OpenCV para seleccionar y manipular canales individualmente, así como convertir imágenes en color y en escala de grises. Por último, se cubre cómo mostrar imágenes utilizando tanto la biblioteca OpenCV como la biblioteca de visualización matplotlib.

En general mi opinión de esta sección es bastante positiva. Siento que hubo un equilibrio adecuado de explicación y ejemplos de codificación para describir suficientemente cómo leer y conservar datos de imagen usando el disco.

Además, creo que la inclusión de cómo leer en una imagen sobre HTTP fue una gran decisión práctica, pero el autor no aclaró aquí que la biblioteca que se usaba no era OpenCV, sino un submódulo de Scikit-Aprender biblioteca instalada junto con el paquete de instalación de Anaconda. La discusión sobre la noción de canales de imagen estuvo bien pensada y demostrada con un ejemplo simple pero elegante.

Histogramas

Aquí, el autor analiza el uso de histogramas para representar la distribución de intensidades a lo largo de canales individuales de una imagen en color, así como para una imagen en escala de grises. Hay ejemplos que muestran cómo usar la biblioteca OpenCV para manipular los datos de píxeles contenidos en una imagen digital en estructuras de datos apropiadas para mostrarse como un histograma usando la biblioteca matplotplib.

Aunque la cobertura de esta sección es breve, va al grano y sienta las bases para temas posteriores en el curso.

Manipulación de píxeles y geometría

En esta sección, el autor comienza demostrando que los datos de imágenes digitales que OpenCV presenta al usuario no son más que una matriz numérica multidimensional de números enteros. Luego, esto se elabora más a través de ejemplos de manipulación de valores de píxeles individuales utilizando la indexación numpy familiar. Luego, el autor pasa a cómo usar la biblioteca OpenCV para dibujar líneas simples y otras formas geométricas.

Después de demostrar cómo dibujar formas geométricas básicas, el autor profundiza en la manipulación de imágenes. Los temas de voltear, escalar y rotar se tratan con más ejemplos de codificación.

Fue durante esta sección que noté que comencé a sentirme un poco frustrado. Hubo momentos en los que el autor parecía un poco apurado y se movía rápidamente sobre los detalles de varios parámetros de métodos de biblioteca. También hubo una ruptura en la consistencia en esta sección. Por ejemplo, en las secciones previas a esta, todas las imágenes y secuencias de comandos utilizadas en los ejemplos se proporcionaron como recursos descargables. Sin embargo, en esta sección se omitieron un par de imágenes del recurso disponible y no se proporcionaron varios de los scripts de ejemplo, lo que hace que sea más difícil de seguir, pero no imposible. Debo señalar que cuando seguí la codificación de los ejemplos y funcionaron perfectamente bien usando una imagen alternativa.

Proyecto - Utilidad de recorte

Esta sección es una demostración del uso de la biblioteca OpenCV para capturar eventos del mouse en una imagen mostrada para seleccionar y generar una imagen recortada del original.

Me alegró mucho ver esta sección en el curso. Personalmente, me gusta cuando un curso se toma el tiempo para demostrar las utilidades de una tecnología para producir algo que demuestre funcionalidad, como en el caso de una herramienta de recorte primitiva en esta sección.

Filtrado, desenfoque y eliminación de ruido

Encontré esta sección bastante fascinante. Quizás esto se deba a que el concepto de aplicar técnicas de filtrado para mejorar las imágenes digitales me parece extraordinario. Sin embargo, creo que el instructor hace un trabajo suficientemente sólido al explicar por qué es útil y demuestra cómo lograrlo. Desafortunadamente, nuevamente hay una ruptura en la consistencia en que el autor no proporciona la imagen o el guión de ejemplo utilizado.

Todo sobre la Umbral

Esta sección comienza con una explicación simple de lo que es el umbral. Después de eso, el instructor desafía al alumno con un ejercicio de codificación para crear una imagen umbralizada manualmente sin la ayuda de la biblioteca OpenCV. Por supuesto, el instructor brinda una solución, pero siempre me gusta cuando se hacen este tipo de desafíos en los cursos. No solo refuerza la parte de "cómo" de un concepto, sino que también demuestra "por qué" una biblioteca como OpenCV es tan valiosa.

Proyecto: creación de un filtro de purpurina personalizado

En esta sección, el instructor demuestra cómo crear un filtro de una imagen utilizando técnicas de filtrado adaptativo. Además de filtrar, demuestra cómo modificar una imagen cambiando los valores de color de los píxeles individuales, lo que vuelve a llevar a casa la estructura de datos tridimensional de las imágenes digitales y el hecho de que son simplemente conjuntos multidimensionales de números.

Esta sección se sintió un poco apresurada, pero el contenido se presentó con un ejemplo sólido y se proporcionaron tanto el código como las imágenes manipuladas para que el estudiante tenga la capacidad de explorar más a fondo el tema.

Imágenes superpuestas

Una vez más, esta sección fue un poco apresurada y me hubiera gustado tener mejores explicaciones de qué parámetros se estaban modificando, así como su impacto en la superposición de imágenes. Nuevamente hubo una ruptura en la consistencia por la que no se proporcionaron el código de ejemplo y las imágenes, lo que deja al estudiante un poco fuera del circuito en su capacidad de seguir.

Trabajando con videos

En esta sección, el instructor demuestra cómo usar la biblioteca OpenCV para interactuar con una cámara web. En primer lugar, muestra cómo capturar fotogramas y mostrarlos en una ventana. Luego continúa mostrando cómo manipular la representación de color de la transmisión de video en función de las entradas del teclado.

Una vez más, los ejemplos de codificación no se proporcionan para esta sección.

Dominio de contornos

Como sugiere el título, esta sección cubre la noción de contornos que delimitan objetos en una imagen. Aquí el instructor hace un buen trabajo al usar algunas imágenes caseras bastante simples de formas monocromáticas simples para simplificar los conceptos.

Sin embargo, al igual que en otras secciones de este curso, creo que se pasó por alto una cantidad significativa de detalles en la explicación de los diversos parámetros que se utilizan para ajustar los resultados de los métodos de OpenCV. Encuentro esto un poco frustrante y siento que simplemente afirmar que un tema "es complicado y debes jugar con los valores hasta obtener el resultado deseado" no es una explicación suficiente.

Proyecto - Detección de vehículos

La sección final de este curso demuestra cómo crear una aplicación que detecte vehículos a partir de datos de imágenes de tráfico. Como mencioné anteriormente, realmente aprecio cuando los cursos crean una aplicación funcional que demuestra el valor real de la tecnología que se enseña. Felicito al autor por incluir esta sección a pesar de que era un poco compleja y difícil de comprender, pero definitivamente obtuve valor de ella.

Conclusión

En este artículo me he esforzado por dar una visión general justa y equilibrada del curso Manos a la visión artificial con OpenCV y Python por Shrobon Biswas en Udemy. Al hacerlo, mi objetivo ha sido describir el contenido cubierto teniendo cuidado de no divulgar los detalles del contenido real, ya que siento que el instructor ha brindado valor a la comunidad de aprendizaje en línea.

Como se indicó al principio, llegué a este curso con muy poca comprensión de los conceptos de visión por computadora, armado solo con una comprensión razonable del lenguaje de programación Python. Dicho esto, siento que pude aprender una cantidad encomiable sobre cómo usar la biblioteca OpenCV para interactuar y manipular contenido de imagen y video. En mi opinión, creo que podría haber habido una mejor cobertura de los detalles de algunas de las funciones de la biblioteca y la teoría subyacente, pero no estoy seguro de que ese fuera el objetivo principal de este curso.

Tengo algunas quejas sobre el aspecto organizativo de la estructura y el contenido del curso, ya que parecía un poco desordenado en ciertas partes. Por ejemplo, hubo más de unos pocos casos en los que no se proporcionaron imágenes y guiones de ejemplo y el autor menciona volver para cubrir diferentes temas, que luego nunca ocurren.

En general, diría que este curso es una buena compra si puede encontrarlo en oferta, pero el precio base de $199 probablemente sea demasiado alto para el valor proporcionado.

Como siempre, gracias por leer y no se avergüence de comentar o criticar a continuación.