Visión por Computadora utilizando OpenCV

Rate this content
Bookmark

Como científico de IA y desarrollador, he estado involucrado en aplicaciones de IA durante muchos años, especialmente enfocándome en la detección y reconocimiento de objetos. Me encanta pensar que podemos ser creativos al diseñar redes neuronales. Podemos entrenarlas de manera supervisada, no supervisada, semi o auto-supervisada, y esto nos da la posibilidad de imitar el cerebro humano en un dominio específico. Sin embargo, en las aplicaciones de visión, todavía hay cosas en las que la IA carece y seguirá careciendo sin el conocimiento de visión por computadora. La visión por computadora ha estado resolviendo problemas de detección y reconocimiento durante muchos años. Sin embargo, en la última década, parece que la IA se ve como un reemplazo de la visión por computadora. La IA puede encontrar el modelo óptimo para un tipo específico de conjunto de datos y puede lograr una mejor generalización. La IA puede ser diseñada de tal manera que pueda aprender de por vida, lo que también brinda la posibilidad de crear modelos que funcionen mejor a medida que se usan durante más tiempo. Sin embargo, un sistema de visión de IA carecerá de capacidades sin el conocimiento de visión por computadora. En primer lugar, requerirá un conjunto de datos muy grande para entrenar el modelo, lo que puede ser costoso o incluso imposible. Por otro lado, los sistemas de visión por computadora pueden ser modelados solo utilizando una imagen de plantilla dibujada a mano. El entrenamiento de modelos de IA también requiere GPUs. Sin embargo, no quiero animar a todos a entrenar modelos de IA para resolver cualquier problema simple que podría resolverse fácilmente con visión por computadora. Por último, pero no menos importante, conocer la visión por computadora, el aprendizaje automático y especialmente los métodos de ingeniería de características ayuda a diseñar modelos híbridos que pueden ser más robustos ante ataques adversarios o condiciones cambiantes.


En esta charla, presentaré brevemente cómo se puede utilizar la visión por computadora (especialmente utilizando la biblioteca OpenCV) y el aprendizaje automático para crear modelos de detección y reconocimiento. Sería útil tener algo de experiencia con Python, Jupyter Notebook y algo de conocimiento en aprendizaje automático para obtener más beneficios de esta charla.

32 min
02 Jul, 2021

Video Summary and Transcription

La charla de hoy explora el procesamiento de imágenes, la visión por computadora y su combinación con el aprendizaje automático. El procesamiento de imágenes implica manipular imágenes, mientras que la visión por computadora extrae información valiosa de las imágenes. Los histogramas son cruciales en el procesamiento de imágenes, ya que representan la distribución de los valores de brillo. Se pueden utilizar diversas técnicas de procesamiento de imágenes, como umbralización y convolución. Las técnicas de visión por computadora se centran en extraer características importantes para el reconocimiento de objetos y pueden ser adaptadas a medida. El procesamiento de audio no es el enfoque de OpenCV, pero las bibliotecas de TensorFlow pueden ser más adecuadas. Comprender los algoritmos detrás del código es importante para la robustez y la depuración efectiva. La visión por computadora tiene aplicaciones en el campo de la salud para el reconocimiento de cáncer y en la agricultura para el monitoreo de la salud de las plantas.

Available in English

1. Introducción y Procesamiento de Imágenes

Short description:

Hoy exploraremos el procesamiento de imágenes, la visión por computadora y la combinación de la visión por computadora y el aprendizaje automático. Proporcionaré ejemplos y un fragmento de código para algoritmos de visión por computadora. Tengo más de 15 años de experiencia en visión por computadora, aprendizaje automático e inteligencia artificial. Comencemos por comprender qué es una imagen.

Hola a todos. Muchas gracias por registrarse en esta conferencia de aprendizaje automático. Ya sea que se encuentren en Europa o en cualquier otro lugar de la Tierra. Muchas gracias por estar aquí.

Soy Veril. Hoy veremos cómo podemos hacer que el software, el software de aprendizaje automático, vea cosas como lo hacen los humanos. Intentaremos introducir algunos temas de procesamiento de imágenes y visión por computadora en este tiempo muy limitado corto. Debido a la limitación de tiempo, no puedo mostrarles tantos ejemplos de programación. Pero en mis diapositivas, si se fijan, he puesto algunos algoritmos dentro de cajas. Así que espero que puedan volver y echar un vistazo más tarde, eso podría ser útil. Y podemos discutir más ejemplos tal vez después de la presentación en la sesión de preguntas y respuestas.

Esta es mi agenda para hoy. Después de una pequeña introducción, primero les presentaré qué es el procesamiento de imágenes, algunos algoritmos de procesamiento de imágenes y luego veremos la visión por computadora. Y veremos algunos algoritmos clásicos de visión por computadora. Finalmente, quiero abordar cómo podemos combinar la visión por computadora y el aprendizaje automático, y cómo es diferente de la IA regular que resuelve todos los problemas por sí misma. Entonces, ¿cómo es diferente? ¿La visión por computadora es irrelevante ahora porque la IA está haciendo todo por sí misma? Así que discutiremos estos temas. Por último, les daré un fragmento de código. Nuevamente, pueden implementarlo ustedes mismos para comenzar a hacer algunos algoritmos de visión por computadora, con suerte.

Un poco de introducción sobre mí. Actualmente soy profesor asistente en la Universidad de Jönköping en Suecia. Es un laboratorio de IA que se enfoca en desarrollar algoritmos de IA y IA explicables. Además, tengo mi propia empresa, que ha desarrollado muchas aplicaciones de visión por computadora en el pasado en los Países Bajos. También estoy ubicado en los Países Bajos. Tengo más de 15 años de experiencia en el área de visión por computadora, aprendizaje automático y también la inteligencia artificial es el área en la que estoy poniendo mucho esfuerzo en estos días. Si quiero presentarme, siempre necesito agregar que soy ecologista.

¿Qué es una imagen? Comencemos con qué es una imagen antes de procesar estas imágenes. Si es una imagen digital, estamos hablando de imágenes digitales, no de imágenes antiguas de estilo analógico. Si es una imagen digital, estamos hablando de una matriz. La fuente puede ser cualquier cosa. La fuente puede ser tu teléfono inteligente, una cámara regular.

2. Procesamiento de Imágenes y Visión por Computadora

Short description:

Si estamos hablando de una imagen digital, estamos hablando de una matriz. Si vemos una imagen con una T en ella, podemos representar esta T como una imagen poniendo 1 cuando está brillante y poniendo 0 cuando está oscuro. El procesamiento de imágenes y la visión por computadora son diferentes. El software de procesamiento de imágenes toma una imagen como entrada y produce una imagen procesada. La visión por computadora toma una imagen como entrada y produce un valor, como el número de personas en la escena o una ubicación GPS encontrada en una imagen satelital.

Puede ser un sensor satelital. Puede ser un sensor de calor. Puede ser una imagen dermatológica o microscópica, una imagen de telescopio, lo que sea. Si estamos hablando de una imagen digital, estamos hablando de una matriz. Muy bien, si tienes una matriz, sabes cómo hacer operaciones de matriz y bienvenido al procesamiento de imágenes. Ahora sabes cómo hacer procesamiento de imágenes.

Si vemos una imagen con una T en ella, digamos, podemos representar esta T como una imagen poniendo 1 cuando está brillante y poniendo 0 cuando está oscuro. Ahora tenemos la T representada como una imagen digital. Cuando los números son solo 0 y 1, por supuesto, esta matriz es una matriz binaria. Se llama imagen binaria. Pero normalmente, cuando nuestros teléfonos inteligentes toman una foto, tenemos RGB, rojo, verde, imágenes en color azul. Entonces, eso significa que no tenemos una imagen como una sola matriz. Para cada imagen, tenemos tres matrices. Pero para simplificar las operaciones, ahora intentaremos ver una matriz a la vez.

Supongamos que hablamos de la imagen de brillo o escala de grises, que es una combinación de estas bandas rojas, verdes y azules todas juntas. Supongamos que se obtiene una suma ponderada. Entonces, antes de continuar, dije que hablaría sobre el procesamiento de imágenes. Hablaré sobre la visión por computadora. ¿Son lo mismo o no? Digo que es lo mismo. ¿Es verdad o falso? Da una respuesta de tu cabeza ahora. Es falso. Bueno, aunque las personas usan estos términos indistintamente, algunas personas dicen procesamiento de imágenes para la visión por computadora, algunas personas pueden decir visión por computadora para una aplicación de procesamiento de imágenes, pero en realidad son cosas diferentes. Cuando decimos procesamiento de imágenes, asumimos que tenemos un software, al que llamamos software de procesamiento de imágenes, donde la entrada es una imagen y la salida es una imagen procesada, entonces tenemos un software de procesamiento de imágenes. Sin embargo, cuando hablamos de visión por computadora, nuestra entrada nuevamente es una imagen. Pero la salida es un valor. Puede ser el número de personas en la escena o un vector, una posición, una ubicación GPS que encontramos en una imagen satelital, un límite, una forma. Puede ser cualquier clase, por ejemplo. Entonces, si tenemos un valor al final, decimos que hemos realizado visión por computadora. Y la mayoría de las veces, se hacen juntos, porque la mayoría de las veces la imagen para la visión por computadora no es adecuada para procesar y ser procesada inmediatamente.

3. Procesamiento de Imágenes e Histograma

Short description:

En el procesamiento de imágenes, podemos eliminar ruido, ajustar colores, aumentar imágenes, detectar bordes y esquinas, y hacer que las fotos antiguas parezcan nuevas. El histograma es un elemento crucial en el procesamiento de imágenes, ya que representa la distribución de los valores de brillo dentro de una imagen.

Por lo tanto, es una buena idea realizar primero el procesamiento de imágenes para procesar la imagen, tal vez eliminar algo de ruido y hacerla más adecuada para ser procesada por la visión por computadora. Y luego, la visión por computadora extrae algunos valores, formas, vectores. Más adelante, puedes tomarlos y ponerlos en un algoritmo de aprendizaje automático, aprender algo, clasificar algo, reconocer algo. Así que veremos más ejemplos.

En el procesamiento de imágenes, decimos que nuestra entrada es una imagen y nuestra salida es una imagen procesada. ¿Qué podría ser esto? Solo algunos ejemplos de algoritmos de procesamiento de imágenes. Podría ser el resultado de eliminación de ruido. Tal vez la entrada fuera una imagen ruidosa y la salida sea una imagen sin ruido. Es más suave. Puede ser una aplicación de ajuste de color realizada por un algoritmo de procesamiento de imágenes. Puedes hacer aumento de imágenes, muy interesante para generar conjuntos de datos de prueba para IA, por ejemplo. O puedes eliminar el fondo como hacen las reuniones de Zoom, cambiando el fondo. Esto también es un algoritmo de procesamiento de imágenes. Puedes hacer detección de bordes, detección de esquinas, como implementar. Puedes hacer estos métodos utilizando algoritmos de procesamiento de imágenes, pero supongamos que tienes una imagen del borde al final. Y también puedes hacer que las fotos antiguas parezcan nuevas adivinando los colores que deberían tener al final. Y hay un ejemplo de algo similar a ver videos antiguos en color. Y este es el resultado de un algoritmo de procesamiento de imágenes donde se aplica el procesamiento de imágenes a cada fotograma del video.

Así que te mostraré algunos algoritmos de procesamiento de imágenes, pero tal vez lo más importante para expresar es el histograma, cuando hablamos de cómo hacer algoritmos de procesamiento de imágenes. El histograma es la distribución de los valores de brillo dentro de la imagen. Y es lo más interesante de observar en una imagen cuando la obtienes. Por ejemplo, aquí hay una escena que puedes ver. Si colocamos el histograma, nos referimos a los valores de la imagen. Si estamos hablando de una imagen de 8 bits, los valores van de 0 a 2255 porque deberíamos tener 256 valores al final para una imagen de 8 bits. Cada uno de estos valores nos dice sobre el nivel de brillo de la imagen. Si es muy brillante, si es muy blanco, el valor es 255. Si está completamente oscuro, el valor es cero, y los demás valores de gris están en el medio. Si observas la distribución, cuántos píxeles brillantes hay en esta imagen, si observas las estadísticas, verás que se produce una acumulación cerca de cero, y otra acumulación cerca de los valores más altos de 255. Podemos esperar que estos valores más oscuros, esta montaña, estén causando esta acumulación de valores más oscuros aquí. Nos da una idea sobre los valores dentro de la imagen y si están distribuidos de manera adecuada o no.

4. Ecualización del Histograma y Segmentación

Short description:

Podemos realizar más procesos en la imagen al observar el histograma. La ecualización del histograma estira el histograma para asegurar que la distribución esté entre 0 y 255. Esto se hace utilizando los valores acumulativos del histograma. Los histogramas se utilizan para hacer que las imágenes sean más visibles y también se pueden utilizar para la segmentación.

Y también podemos realizar más procesos en la imagen al solo observar este histograma. Por lo tanto, lo primero importante que debemos saber sobre cómo hacer cosas con el histograma es saber cómo realizar la ecualización del histograma. La mayoría de las veces, cuando tenemos imágenes de entrada, por ejemplo, de un dron, está observando un área limitada donde también proyecta su propia sombra. Tendremos valores muy oscuros.

En primer lugar, debemos asegurarnos de haber estirado estos valores lo suficiente para que haya alguna textura, algunas propiedades dentro. De lo contrario, no podremos realizar aplicaciones de visión por computadora para extraer algunas características y reconocer cosas. Lo primero interesante para observar es la ecualización del histograma, y trata de estirar el histograma para asegurarse de que la distribución se encuentre entre 0 y 255 y podamos ver alguna textura en su interior.

Esta ecualización del histograma se realiza fácilmente al observar los valores acumulativos del histograma. Esto significa que si tenemos la distribución de los valores de brillo, podemos contar cuántos valores de brillo hay hasta este valor para proyectar este histograma acumulativo, luego podemos utilizar esta distribución acumulativa para encontrar los nuevos valores de cada brillo simplemente utilizando la función de distribución acumulativa como una función de proyección para encontrar la nueva distribución, nuevos valores de brillo para proyectar en valores estirados. Así que espero que puedas encontrar más información en las referencias, pero utilizamos estos histogramas para hacer que la imagen sea más visible, las características en su interior sean más visibles, pero también podemos utilizarlo para la segmentación.

5. Técnicas de Procesamiento de Imágenes

Short description:

Podemos usar el histograma para segmentar objetos eligiendo valores de umbral. OpenCV proporciona el método de umbral OTSUS para encontrar automáticamente el valor de umbral. Otro enfoque es utilizar el umbral de histéresis para extraer líneas seleccionando dos umbrales y considerando los píxeles conectados. Mediante operaciones de matriz y ventanas de convolución, podemos realizar diversos algoritmos de procesamiento de imágenes.

Por ejemplo, si observamos el histograma y establecemos un valor de umbral, como recordar la montaña y el fondo del mar, podemos aplicar un umbral al histograma para eliminar el fondo o resaltar el primer plano. También podemos usar el histograma para segmentar objetos. Podemos hacer esta segmentación observando el histograma de la imagen en general, o podemos observar ventanas pequeñas y elegir diferentes umbrales si el brillo fluctúa mucho dentro de la imagen.

La pregunta es cómo elegir automáticamente el valor de umbral para realizar la segmentación. En resumen, OpenCV nos ayuda con un método llamado umbral OTSUS, que se puede utilizar en una sola línea. Lo que hace es ajustar dos gaussianas a este histograma. Puedo ajustar dos gaussianas a dos picos, dos valores de pico que encontré en este histograma, como esto. El lugar de intersección me da el valor de umbral para segmentar automáticamente esta imagen. Podemos discutir más en la sesión de preguntas y respuestas.

Podemos explorar más algoritmos en el área de procesamiento de imágenes. Podemos utilizar los valores de brillo para extraer líneas. ¿Cómo podemos hacer esto? Podemos utilizar el umbral de histéresis, por ejemplo. Lo que hace el umbral de histéresis es seleccionar dos umbrales en lugar de uno, uno es el umbral alto y el otro es el umbral bajo. Luego, observamos los píxeles conectados. Si todos los píxeles conectados son más bajos que el umbral máximo, los eliminamos, ya que no representan nada significativo. Sin embargo, si algunas partes de los píxeles conectados tienen un valor de brillo más alto que el umbral alto, asumimos que todos los píxeles del segmento conectado, incluso si algunos lugares son más oscuros, forman un borde juntos. Esto nos proporciona algoritmos muy robustos, ya que un umbral puede no detectar todas las líneas conectadas, pero dos umbrales con el umbral de histéresis y métodos similares nos ayudan a desarrollar un enfoque más robusto. Te he presentado algunos algoritmos para procesar imágenes en mayor detalle, pero debo ir más rápido. Por favor, revisa las diapositivas más tarde. Para realizar algoritmos de procesamiento de imágenes, podemos realizar operaciones de matriz porque una imagen es una matriz. Podemos aplicar una ventana de convolución y escanear la imagen con ella. Por ejemplo, si la ventana de convolución tiene solo valores de uno, eso significa que colocamos el promedio del valor dentro de la ventana en cada píxel mientras viajamos, y al final obtenemos píxeles promediados, lo que nos da una imagen suavizada. Si reemplazamos esta ventana de convolución por una forma gaussiana, eso significa que el píxel central tiene la mayor influencia cuando realizamos el promedio ponderado. Y el píxel más alejado tiene un menor impacto en el promedio ponderado.

6. Técnicas de Procesamiento de Imágenes y Visión por Computadora

Short description:

Los algoritmos de procesamiento de imágenes se pueden realizar en el dominio de frecuencia convirtiendo la imagen en un espectro de frecuencia y aplicando filtros. La visión por computadora extrae características importantes, como esquinas y bordes, para reconocer objetos. Se utilizan vectores descriptores para algoritmos de aprendizaje automático. La visión por computadora permite la adaptación manual, mientras que la IA encuentra características automáticamente. La IA requiere conjuntos de datos grandes, mientras que la visión por computadora puede usar una sola plantilla de imagen. Los métodos de visión por computadora no siempre requieren una GPU, a diferencia de los métodos de IA.

menos contribución cuando hacemos el promedio. Así nos ayuda a lograr dos resultados, que están suavizados, pero los bordes no se suavizan mucho, los bordes se preservan al final. Te aconsejo que revises mis diapositivas más tarde, las compartiré, pero también es posible realizar estos algoritmos de procesamiento de imágenes en el dominio de frecuencia convirtiendo la imagen en un espectro de frecuencia y luego procesarla allí aplicando un filtro pasa bajos, un filtro pasa altos y luego convertirlo de nuevo al dominio de la imagen para obtener resultados. Todo lo que hemos hecho aquí en escala de grises también es posible hacerlo en las bandas roja, verde y azul de la imagen directamente, y tal vez combinar los resultados más tarde, pero lo más interesante para las personas en IA es ver los métodos de aumento que podemos hacer con los métodos de procesamiento de imágenes para generar una gran cantidad de datos que podemos usar. Después de procesar la imagen, viene la visión por computadora. La visión por computadora intenta extraer características importantes. Llamamos a esto características locales, para observar la imagen, para reconocer cosas. Para hacerlo, intentamos desarrollar algunos métodos que puedan identificar esquinas, bordes afilados o propiedades de textura específicas, como lo hizo Harris con su algoritmo, comparando cada ventana pequeña con su vecino para ver si el vecino hizo un cambio significativo o no. Aquí está el mapa de Harris en la parte superior derecha que obtuvo. Si hay un cambio significativo al comparar el vecino, se resalta. Luego, cuando lo controló, obtuvo esquinas al final. Este es el algoritmo de Harris. Luego, más tarde, otras personas propusieron enfoques heurísticos o enfoques de filtrado de paso de banda que son más robustos a los efectos del ruido, porque el de Harris no era robusto a los efectos del ruido. Si hay un píxel de ruido, se resaltará al final. ¿Son suficientes las características para el reconocimiento? No, responderé por ti. Necesitamos describir cada característica con un vector de características que llamamos vector descriptor para poder utilizar algoritmos de aprendizaje automático para aprender o clasificar cosas. Por favor, mira la extracción del vector descriptor y te lo doy dentro del cuadro de código fuente que te ofrece directamente OpenCV y hay diferentes métodos para usar estos vectores descriptores para reconocer o emparejar cosas, como emparejar directamente con una plantilla que ya tenemos en la memoria. Podemos tratar de encontrar los descriptores más similares dentro de la imagen o podemos tratar de observar la distribución especial de estos vectores descriptores con una teoría de grafos. Y te di más ejemplos, pero antes de terminar, quiero discutir cómo es diferente de los algoritmos de IA que conocemos. ¿Significa que si desarrollamos IA, con algoritmos más sofisticados, logramos más? No siempre. A veces la visión por computadora y el aprendizaje automático vienen con más ventajas porque adaptamos manualmente todo y la IA viene con otras ventajas. Así que enumeré algunas listas de comparación aquí y en general, la visión por computadora nos permite adaptar manualmente lo que estamos observando. Sin embargo, la IA encuentra las buenas características por sí misma. Hace que las cosas tal vez sean más robustas o generalizadas, pero también puede hacer que las cosas sean más vulnerables a ataques adversarios cuando no podemos adaptar manualmente qué observar de manera significativa. La IA siempre necesita un gran número de conjuntos de datos para aprender. Sin embargo, como puedes ver, si estamos utilizando visión por computadora, podemos usar solo una plantilla de imagen para encontrar cosas similares. Con los métodos de visión por computadora, puede ser desafiante encontrar un modelo óptimo porque mostramos solo una plantilla. Sin embargo, la IA aprende de un gran conjunto de datos, tal vez pueda encontrar una mejor generalización. Y finalmente, para los métodos de visión por computadora, no siempre se necesita una GPU. Pero con los métodos de IA, para desarrollar y encontrar una solución óptima, definitivamente se necesita una GPU. Así que por favor, sigue adelante, escribe el código que abrirá tu cámara

7. Conclusiones y Procesamiento de Audio

Short description:

Tengo que cerrarlo ahora, pero estoy feliz de responder tus preguntas. Puedes encontrar más sobre mí en mi sitio web y Twitter. Suscríbete a mi canal de YouTube y boletín informativo para obtener contenido gratuito. En cuanto al procesamiento de audio, OpenCV está destinado a la visión por computadora y al procesamiento de imágenes, no al audio. El audio es unidimensional y basado en el tiempo, mientras que las imágenes son bidimensionales. Las bibliotecas de TensorFlow pueden ser más adecuadas para el procesamiento de audio.

y obtener una imagen que puedas comenzar a usar con los algoritmos de OpenCV. Y esto es un tiempo muy corto. Desafortunadamente, tengo que cerrarlo ahora y estoy muy feliz de responder tus preguntas y profundizar más en el tema. Muchas gracias por invitarme. Puedes encontrar más información sobre cómo contactarme en mi sitio web, mi nombre y apellido.com, y puedes encontrarme en Twitter. Por favor, suscríbete a mi canal de YouTube donde enseño mucho y también a mi boletín informativo para obtener todo el contenido gratuito que entrego cada mes. Muchas gracias.

Hola, Raquel. Hola. ¿Cómo estás hoy? Estoy bien. Gracias. Gracias. Muy contenta de estar aquí. Muy buena conferencia. Genial. Bueno, todos estamos contentos de que estés aquí. Y queremos comenzar esta conferencia. Bueno, ya la hemos comenzado, pero queremos continuar y seguir adelante con algunas preguntas increíbles de nuestra audiencia, ¿verdad? Porque tienen muchas preguntas para ti. Bueno, aquí hay una buena pregunta. Vale, ¿cuáles son algunos ejemplos de procesamiento que se pueden hacer en el dominio de, como, frecuencia y audio? ¿Se puede usar OpenCV para eso, por ejemplo? Oh, para el procesamiento de audio, OpenCV está destinado a Open Computer Vision, que significa visión por computadora y procesamiento de imágenes. Por lo tanto, no está destinado para el procesamiento de audio directamente, pero supongo que podrías encontrar tal vez una o dos funciones que te permitan procesar señales de audio de una dimensión también. Como hemos visto en las diapositivas, todas las imágenes que estamos viendo son métricas bidimensionales. Por lo tanto, son un poco diferentes al audio, que es una dimensión y está basado en el tiempo. Así que es OpenCV. No está destinado para el procesamiento de sonido. Tienes razón. Estoy seguro de que puedes beneficiarte de algunas bibliotecas de TensorFlow, pero ¿otras bibliotecas? Tal vez sea bueno investigar más a fondo. No es realmente mi área. Sí, eso es cierto porque sé que la operación de convolución, aunque tiendes a aplicarla a las imágenes y es la operación fundamental para la visión por computadora. También tenemos convoluciones unidimensionales para el procesamiento de señales, pero sí, eso es cierto. Tampoco he escuchado mucho al respecto en OpenCV, pero definitivamente es relevante en términos de operaciones fundamentales.

QnA

Matemáticas y Enfoque Práctico

Short description:

¿Recomendarías a las personas que comiencen directamente con OpenCV y luego hagan las matemáticas más tarde? Es importante entender los algoritmos detrás del código para garantizar la robustez y una depuración efectiva. La autoeducación a través de recursos en línea puede ser beneficiosa. Un buen equilibrio entre los aspectos prácticos y teóricos es crucial. En el campo de la salud, la visión por computadora se puede utilizar para el reconocimiento del cáncer y determinar el estadio del cáncer mediante la extracción de características.

Sí. Y bien. Aquí hay otra pregunta. Sé que has introducido algo de matemáticas en tus diapositivas mientras también explicas OpenCV y sé que para muchas personas, las matemáticas pueden ser muy intimidantes. Y debido a esto, hay personas que ven las matemáticas y piensan, bueno, no quiero meterme en esto. ¿Recomendarías a las personas que comiencen directamente con OpenCV y luego hagan las matemáticas más tarde, o hay algún otro enfoque para esta visión por computadora que tomarías?

Sí, esa es una muy buena pregunta. En primer lugar, solo quiero mencionar, en mi opinión, que he compartido mis diapositivas. Creo que se anunciará en un sitio web o en Twitter que están las diapositivas de esta charla. Puedes usarlas para encontrar las referencias. Siempre pongo el enlace para leer más. Así que tal vez puedas hacer clic en el enlace y verificar la cita, verificar la fuente para aprender más. Lo que acabas de escuchar en esta charla muy corta, desafortunadamente, no puedo explicar todo en detalle. Pero cuando estás programando, comienzas a hacer cosas, es realmente bueno verificar en la red, de lo contrario, es posible que obtengas un buen resultado con tu programación, pero ¿es realmente un algoritmo robusto que puedes implementar y que funcione en la vida real o cuando hay un error, hay un reconocimiento falso, ¿de dónde viene? No sería fácil debug si no estás al tanto de qué tipo de algoritmos hay detrás o necesitas conocer los parámetros de esta función para ajustarlos. Pero, ¿cómo eliges los parámetros si no conoces la lógica detrás de ellos? No estoy diciendo que vayas y obtengas una maestría o un doctorado, algo así, no todos necesitan hacer eso. Pero sé que los desarrolladores profesionales realmente hacen cosas sólidas y robustas, solo se autoeducan. Y hoy en día todo está en línea. Recomendaría que mientras estás escribiendo código, funciona bien. Pero ve y verifica las matemáticas detrás de él, solo en línea, leyendo algunos blogs, foros y haciendo preguntas a otras personas. Sería beneficioso.

Sí, estoy completamente de acuerdo en que un buen y saludable equilibrio entre el aspecto práctico real y el aspecto teórico puede hacer maravillas para ayudarte a comprender exactamente en qué te estás metiendo. Sí. Gracias por esa respuesta. Y tenemos algunas preguntas más aquí también. Permíteme sacar algunas de ellas. OK, ¿tienes alguna idea o técnicas de visión por computadora que usarías en el campo de la salud o la agricultura o cualquier otra causa social que te importe?

Sí, muchas en el campo de la salud. Lo he utilizado para el reconocimiento del cáncer, el cáncer de piel y para identificar si el área del cáncer es maligna o benigna. Entonces, ¿en qué etapa del cáncer podría estar? Y para este propósito, encontré la extracción de características inspirada en los médicos. Me explicaron cómo ven la piel.

Clasificación del cáncer y agricultura

Short description:

Los médicos pueden clasificar visualmente el estadio del cáncer basándose en su experiencia. Se pueden utilizar algoritmos matemáticos para la extracción de características y la clasificación. La inteligencia artificial puede ayudar a los médicos en la toma de decisiones, proporcionando una segunda opinión y normalizando respuestas. En agricultura, se utiliza la visión por computadora y OpenCV para monitorear la salud de las plantas y detectar problemas antes de que se propaguen.

Y cómo clasifican el estadio del cáncer simplemente mirando con su ojo. Por supuesto, debe haber una biopsia, pero los médicos han visto tantos ejemplos y pueden simplemente mirar y decir. Y estaba realmente curioso, ¿cómo miras y dices? Explícamelo. Cuando los médicos me lo explicaron, encontré una forma de describir lo que ellos explican matemáticamente, luego se convirtió en un algoritmo de extracción de características, que se podría utilizar para la clasificación del estadio del cáncer al final, siempre me inspira a pensar cómo los humanos ven esto y cómo los humanos reconocen y ¿puedo encontrar un método matemático para hacer algo similar? Sí. Creo que ese tipo de comprensión meta de cómo un humano haría esto y tratar de instruir a una máquina para hacer algo muy similar es muy importante. Y a veces también es muy difícil en términos de atención médica, porque sé que si, por ejemplo, en la detección de cáncer, los errores que cometas pueden ser más fatales, estás jugando con la vida humana. Entonces, hay ese sube y baja de, está bien usar artificial intelligence? ¿Para ser el tomador de decisiones, pero queremos ser un apoyo en la toma de decisiones, para el médico siempre en esas áreas críticas, no queremos reemplazar al ser humano, sino simplemente ser un apoyo. Y lo segundo, si pones a 10 médicos, no llegarán a la misma respuesta. Si les preguntas en qué etapa está el cáncer. También tienen algunas fluctuaciones en sus respuestas. Entonces, tal vez un sistema de machine learning podría ser una forma de normalizar sus respuestas. Y simplemente obtener una segunda opinión de la máquina. Entendido. Sí. Gracias por esa respuesta. Y creo que tenemos una pregunta más final a la que podríamos responder. En este momento, tal vez en tu trabajo actual, probablemente en tu startup y Create4D, ¿cómo estás utilizando actualmente la visión por computadora y incluso OpenCV en este trabajo, en tu espacio de trabajo actual? Sí, es muy interesante ver lo que está sucediendo en la Tierra, especialmente en el área de la agricultura, ya que es mi pasión ver la security alimentaria y cómo están las plantas. ¿Tendremos suficiente comida pronto en el supermercado o no? Y los métodos que describí en esta charla, como la convolución simple, ayudan mucho a extraer algunas características, que pueden indicar un cambio repentino en un área local, tal vez algo está mal en esta área, y puedo ir allí y visitar y rescatar las plantas antes de que mueran o propaguen la enfermedad a otras plantas. Eso es lo que quiero. Genial, impresionante. Bueno, muchas gracias Farola. Creo que ahora mismo no tenemos tiempo para más preguntas, pero agradezco que hayas venido aquí y respondido nuestras preguntas y también nos hayas dado una buena visión de la visión por computadora, sí, la visión por computadora y todo eso. Quiero decir, eso es increíble. Por cierto, si alguien quiere hablar con Brielle ahora mismo, ella estará disponible en su sala de conferencias para responder sus preguntas en el evento de que no hayas podido hacer tus preguntas, al menos en esta sesión de preguntas y respuestas. Así que muchas gracias por acompañarnos, Brielle. Fue genial tenerte aquí, y nos veremos más tarde en tu sala de conferencias. Gracias. Hasta luego por ahora.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

6 min
Charlie Gerard's Career Advice: Be intentional about how you spend your time and effort
Featured Article
When it comes to career, Charlie has one trick: to focus. But that doesn’t mean that you shouldn’t try different things — currently a senior front-end developer at Netlify, she is also a sought-after speaker, mentor, and a machine learning trailblazer of the JavaScript universe. "Experiment with things, but build expertise in a specific area," she advises.

What led you to software engineering?My background is in digital marketing, so I started my career as a project manager in advertising agencies. After a couple of years of doing that, I realized that I wasn't learning and growing as much as I wanted to. I was interested in learning more about building websites, so I quit my job and signed up for an intensive coding boot camp called General Assembly. I absolutely loved it and started my career in tech from there.
 What is the most impactful thing you ever did to boost your career?I think it might be public speaking. Going on stage to share knowledge about things I learned while building my side projects gave me the opportunity to meet a lot of people in the industry, learn a ton from watching other people's talks and, for lack of better words, build a personal brand.
 What would be your three tips for engineers to level up their career?Practice your communication skills. I can't stress enough how important it is to be able to explain things in a way anyone can understand, but also communicate in a way that's inclusive and creates an environment where team members feel safe and welcome to contribute ideas, ask questions, and give feedback. In addition, build some expertise in a specific area. I'm a huge fan of learning and experimenting with lots of technologies but as you grow in your career, there comes a time where you need to pick an area to focus on to build more profound knowledge. This could be in a specific language like JavaScript or Python or in a practice like accessibility or web performance. It doesn't mean you shouldn't keep in touch with anything else that's going on in the industry, but it means that you focus on an area you want to have more expertise in. If you could be the "go-to" person for something, what would you want it to be? 
 And lastly, be intentional about how you spend your time and effort. Saying yes to everything isn't always helpful if it doesn't serve your goals. No matter the job, there are always projects and tasks that will help you reach your goals and some that won't. If you can, try to focus on the tasks that will grow the skills you want to grow or help you get the next job you'd like to have.
 What are you working on right now?Recently I've taken a pretty big break from side projects, but the next one I'd like to work on is a prototype of a tool that would allow hands-free coding using gaze detection. 
 Do you have some rituals that keep you focused and goal-oriented?Usually, when I come up with a side project idea I'm really excited about, that excitement is enough to keep me motivated. That's why I tend to avoid spending time on things I'm not genuinely interested in. Otherwise, breaking down projects into smaller chunks allows me to fit them better in my schedule. I make sure to take enough breaks, so I maintain a certain level of energy and motivation to finish what I have in mind.
 You wrote a book called Practical Machine Learning in JavaScript. What got you so excited about the connection between JavaScript and ML?The release of TensorFlow.js opened up the world of ML to frontend devs, and this is what really got me excited. I had machine learning on my list of things I wanted to learn for a few years, but I didn't start looking into it before because I knew I'd have to learn another language as well, like Python, for example. As soon as I realized it was now available in JS, that removed a big barrier and made it a lot more approachable. Considering that you can use JavaScript to build lots of different applications, including augmented reality, virtual reality, and IoT, and combine them with machine learning as well as some fun web APIs felt super exciting to me.


Where do you see the fields going together in the future, near or far? I'd love to see more AI-powered web applications in the future, especially as machine learning models get smaller and more performant. However, it seems like the adoption of ML in JS is still rather low. Considering the amount of content we post online, there could be great opportunities to build tools that assist you in writing blog posts or that can automatically edit podcasts and videos. There are lots of tasks we do that feel cumbersome that could be made a bit easier with the help of machine learning.
 You are a frequent conference speaker. You have your own blog and even a newsletter. What made you start with content creation?I realized that I love learning new things because I love teaching. I think that if I kept what I know to myself, it would be pretty boring. If I'm excited about something, I want to share the knowledge I gained, and I'd like other people to feel the same excitement I feel. That's definitely what motivated me to start creating content.
 How has content affected your career?I don't track any metrics on my blog or likes and follows on Twitter, so I don't know what created different opportunities. Creating content to share something you built improves the chances of people stumbling upon it and learning more about you and what you like to do, but this is not something that's guaranteed. I think over time, I accumulated enough projects, blog posts, and conference talks that some conferences now invite me, so I don't always apply anymore. I sometimes get invited on podcasts and asked if I want to create video content and things like that. Having a backlog of content helps people better understand who you are and quickly decide if you're the right person for an opportunity.What pieces of your work are you most proud of?It is probably that I've managed to develop a mindset where I set myself hard challenges on my side project, and I'm not scared to fail and push the boundaries of what I think is possible. I don't prefer a particular project, it's more around the creative thinking I've developed over the years that I believe has become a big strength of mine.***Follow Charlie on Twitter
ML conf EU 2020ML conf EU 2020
41 min
TensorFlow.js 101: ML in the Browser and Beyond
Discover how to embrace machine learning in JavaScript using TensorFlow.js in the browser and beyond in this speedy talk. Get inspired through a whole bunch of creative prototypes that push the boundaries of what is possible in the modern web browser (things have come a long way) and then take your own first steps with machine learning in minutes. By the end of the talk everyone will understand how to recognize an object of their choice which could then be used in any creative way you can imagine. Familiarity with JavaScript is assumed, but no background in machine learning is required. Come take your first steps with TensorFlow.js!
React Advanced Conference 2021React Advanced Conference 2021
21 min
Using MediaPipe to Create Cross Platform Machine Learning Applications with React
Top Content
This talk gives an introduction about MediaPipe which is an open source Machine Learning Solutions that allows running machine learning models on low-powered devices and helps integrate the models with mobile applications. It gives these creative professionals a lot of dynamic tools and utilizes Machine learning in a really easy way to create powerful and intuitive applications without having much / no knowledge of machine learning beforehand. So we can see how MediaPipe can be integrated with React. Giving easy access to include machine learning use cases to build web applications with React.
JSNation Live 2021JSNation Live 2021
39 min
TensorFlow.JS 101: ML in the Browser and Beyond
Discover how to embrace machine learning in JavaScript using TensorFlow.js in the browser and beyond in this speedy talk. Get inspired through a whole bunch of creative prototypes that push the boundaries of what is possible in the modern web browser (things have come a long way) and then take your own first steps with machine learning in minutes. By the end of the talk everyone will understand how to recognize an object of their choice which could then be used in any creative way you can imagine. Familiarity with JavaScript is assumed, but no background in machine learning is required. Come take your first steps with TensorFlow.js!
ML conf EU 2020ML conf EU 2020
32 min
An Introduction to Transfer Learning in NLP and HuggingFace
In this talk I'll start introducing the recent breakthroughs in NLP that resulted from the combination of Transfer Learning schemes and Transformer architectures. The second part of the talk will be dedicated to an introduction of the open-source tools released HuggingFace, in particular our Transformers, Tokenizers and Datasets libraries and our models.

Workshops on related topic

ML conf EU 2020ML conf EU 2020
160 min
Hands on with TensorFlow.js
Workshop
Come check out our workshop which will walk you through 3 common journeys when using TensorFlow.js. We will start with demonstrating how to use one of our pre-made models - super easy to use JS classes to get you working with ML fast. We will then look into how to retrain one of these models in minutes using in browser transfer learning via Teachable Machine and how that can be then used on your own custom website, and finally end with a hello world of writing your own model code from scratch to make a simple linear regression to predict fictional house prices based on their square footage.
ML conf EU 2020ML conf EU 2020
112 min
The Hitchhiker's Guide to the Machine Learning Engineering Galaxy
Workshop
Are you a Software Engineer who got tasked to deploy a machine learning or deep learning model for the first time in your life? Are you wondering what steps to take and how AI-powered software is different from traditional software? Then it is the right workshop to attend.
The internet offers thousands of articles and free of charge courses, showing how it is easy to train and deploy a simple AI model. At the same time in reality it is difficult to integrate a real model into the current infrastructure, debug, test, deploy, and monitor it properly. In this workshop, I will guide you through this process sharing tips, tricks, and favorite open source tools that will make your life much easier. So, at the end of the workshop, you will know where to start your deployment journey, what tools to use, and what questions to ask.
ML conf EU 2020ML conf EU 2020
146 min
Introduction to Machine Learning on the Cloud
Workshop
This workshop will be both a gentle introduction to Machine Learning, and a practical exercise of using the cloud to train simple and not-so-simple machine learning models. We will start with using Automatic ML to train the model to predict survival on Titanic, and then move to more complex machine learning tasks such as hyperparameter optimization and scheduling series of experiments on the compute cluster. Finally, I will show how Azure Machine Learning can be used to generate artificial paintings using Generative Adversarial Networks, and how to train language question-answering model on COVID papers to answer COVID-related questions.