detección de objetos - Catecbol

visión por computadora. País de ... Por que los bordes? Porque usando incluso información parcial, nuestro cerebro es capaz de reconstruir la imagen completa. - Problema: los bordes son ocasionados por una variedad ..... En el ajedrez el numero de partidas totales diferentes es 10^120 pero en Go es 10^761 (el numero.
4MB Größe 5 Downloads 103 vistas
Catecbol www.catecbol.com

Capacitación Tecnológica Científica para Bolivia facebook.com/catecbol

@catecbol

Avances en el área de la robótica y oportunidades Ronald Terrazas Mallea Bélgica

La unión es la fuerza

[email protected]

Introducción Personal – Ronald Terrazas Mallea Universidad pregrado: Universidad Nacional Autónoma de México, México Universidad postgrado (Ph.D.): Universidad Libre de Bruselas, Bélgica Universidad postgrado (Ph.D.): Universidad de Franche-Comte, Francia Área de Investigación: Micromanipulación mediante flujos alimentados, efectos de tensión superficial, control automático y control basado en la visión. Resumen: Obtuvo su grado de Ingenierio en Mecatrónica en la Universidad Nacional Autonoma de Mexico. Posteriormente fue aceptado en el programa de Maestria "European Master in Advanced Robotics" (EMARO), en el cual curso el primer año de estudios en la "Ecole Centrale de Nantes", Francia y el segundo año de estudios en "Warsaw University of Technology", Polonia. Actualmente esta en el ultimo de estudios de un programa de doctorado en ingenieria conjunto entre la "Universite Libre de Bruxelles" (Belgica) y la "Universite de Franche-Comte" (Francia). Sus intereses de investigación son la manipulación usando flujos actuados, efectos de tensión superficial, control automático y control basado en visión por computadora. País de residencia: Belgica

Guía de la presentación 1. El rápido cambio de las tecnologías: caso de estudio en la detección de objetos 2. Ejemplos del uso de las redes neuronales en la actualidad 3. Otros temas de interés

Detección de objetos a la antigua - Paso 1: detectar los bordes. - Por que los bordes? Porque usando incluso información parcial, nuestro cerebro es capaz de reconstruir la imagen completa.

- Problema: los bordes son ocasionados por una variedad de factores

Estas diapositivas toman imágenes de la presentacion “Lecture 4: Finding lines from detection to model fitting” del Prof. Fei-Fei Li (Stanford Vision Lab)

Detección de objetos a la antigua - Paso 1: detectar los bordes. - Solución final: definir que los bordes son un lugar donde un cambio rápido/brusco en la función de la intensidad de la imagen ocurre. Alias, analizar el gradiente de la imagen.

Estas diapositivas toman imágenes de la presentacion “Lecture 4: Finding lines from detection to model fitting” del Prof. Fei-Fei Li (Stanford Vision Lab)

Detección de objetos a la antigua - Paso 1: detectar los bordes.

- Calcular el gradiente de una imagen: 𝛻𝑓 =

𝜕𝑓 𝜕𝑓 , 𝜕𝑥 𝜕𝑦

- El gradiente indica la dirección en la que la intensidad varia mas, que puede ser −1 𝜕𝑓 𝜕𝑓 calculado como: 𝜃 = tan / 𝜕𝑦

𝜕𝑥

- La dirección del borde es ortogonal a la dirección del gradiente. - La fuerza del gradiente es la magnitud del gradiente: | 𝛻𝑓 | =

𝜕𝑓 2 𝜕𝑥

+

𝜕𝑓 𝜕𝑦

2

=0 θ=0 Estas diapositivas toman imágenes de la presentacion “Lecture 4: Finding lines from detection to model fitting” del Prof. Fei-Fei Li (Stanford Vision Lab)

Detección de objetos a la antigua - Paso 1: detectar los bordes. - Como calcular el gradiente en un sistema discreto? Usar una aproximación:

- La forma mas comun de aplicar esta operación es usar un “filtro”, especificamente “filtros de diferencias finitas”

Estas diapositivas toman imágenes de la presentacion “Lecture 4: Finding lines from detection to model fitting” del Prof. Fei-Fei Li (Stanford Vision Lab)

Detección de objetos a la antigua - Paso 1: detectar los bordes. - Problemas: ruido. Solucion? Suavizar o alizar la imagen usando un filtro (kernel) g.

Estas diapositivas toman imágenes de la presentacion “Lecture 4: Finding lines from detection to model fitting” del Prof. Fei-Fei Li (Stanford Vision Lab)

Detección de objetos a la antigua - Paso 1: detectar los bordes.

- Problemas de aplicar el filtro/kernel g para quitar el ruido? Los bordes se hacen mas borrosos o se vuelven mas grandes de lo que son. - Los gradientes son grandes a lo largo de una huella o de una rugosidad.

Estas diapositivas toman imágenes de la presentacion “Lecture 4: Finding lines from detection to model fitting” del Prof. Fei-Fei Li (Stanford Vision Lab)

Detección de objetos a la antigua - Paso 1: detectar los bordes.

- Criterios de un detector de bordes optimo: a) Una buena deteccion de bordes (detectar falsos positivos y falsos negativos) b) Una buena localizacion de los bordes c) Sola respuesta (dar un solo punto por cada punto del borde verdadero). - Solucion de la literuratura: el detector de bordes Canny (1986).

Estas diapositivas toman imágenes de la presentacion “Lecture 4: Finding lines from detection to model fitting” del Prof. Fei-Fei Li (Stanford Vision Lab)

Detección de objetos a la antigua - Paso 2: ajustar los puntos de los bordes a modelos matemáticos (lineas) - Que? No estábamos contentos con los bordes? No. - 1) Puntos de bordes extra. Que puntos van en que línea, o que puntos corresponden al mismo borde si quisiéramos definir un contorno? - 2) Hay partes de cada linea/borde que faltan. Como encontrar una línea que conecte los puntos?

- 3) Ruido en los puntos de los bordes y en su orientación. Como detectar los verdaderos bordes?

Estas diapositivas toman imágenes de la presentacion “Lecture 4: Finding lines from detection to model fitting” del Prof. Fei-Fei Li (Stanford Vision Lab)

Detección de objetos a la antigua - Paso 2: ajustar los puntos de los bordes a modelos matemáticos (líneas) - Solución es usar un sistema de votos que responda a: - Dados los puntos que pertenecen a una línea, cual es la línea? Cuantas líneas hay allí? Que puntos perteneces a que línea? - El sistema de votos mas usado es la “transformacion de Hough”.

- Que hace? Busca y encuentra todas las lineas en las que cada punto de borde caiga. Y luego busca por las lineas que obtengan la mayor cantidad de votos.

Estas diapositivas toman imágenes de la presentacion “Lecture 4: Finding lines from detection to model fitting” del Prof. Fei-Fei Li (Stanford Vision Lab)

Detección de objetos a la antigua - Paso 2: ajustar los puntos de los bordes a modelos matemáticos (líneas) - En el “espacio de Hough”, una linea en una imagenes corresponde a un punto. - De manera inversa, un punto en una imagen corresponde de a una linea en el espacio de Hough. - Entonces si 2 puntos en una imagen corresponde a una linea, la linea en el espacio de Hough de cada una de esos puntos se intersectaran.

Estas diapositivas toman imágenes de la presentacion “Lecture 4: Finding lines from detection to model fitting” del Prof. Fei-Fei Li (Stanford Vision Lab)

Detección de objetos a la antigua - Paso 2: ajustar los puntos de los bordes a modelos matemáticos (líneas)

Estas diapositivas toman imágenes de la presentacion “Lecture 4: Finding lines from detection to model fitting” del Prof. Fei-Fei Li (Stanford Vision Lab)

Detección de objetos a la antigua - Paso 2: detección de objetos (labeling).

- Ok tenemos nuestras contornos? Ahora como digo si un contorno es una banana, un auto?

- Con los contornos, se pueden usar funciones para calcular propiedades como: la circularidad, la extensión, el centroide, la orientación, etc. - Sin embargo para objetos mas complejos esto se vuelve demasiado complicado. Habrían que definir n propiedades para si detectar un objeto, y mas un, que si cambiamos la perspectiva? Estas diapositivas toman imágenes de la presentacion “Lecture 4: Finding lines from detection to model fitting” del Prof. Fei-Fei Li (Stanford Vision Lab)

Detección de objetos a la antigua - Ejemplo en openCV

Leer imagen: rawImage = cv2.imread('rawImage.jpg'); cv2.imshow('Original Image', rawImage); cv2.waitKey(0) Filtrar la imagen (alisar bordes) bilateral_filtered_image = cv2.bilateralFilter(rawImage, 5, 175, 175) cv2.imshow('Bilateral', bilateral_filtered_image) cv2.waitKey(0) Detectar los bordes:

edge_detected_image = cv2.Canny(bilateral_filtered_image, 75, 200) cv2.imshow('Edge', edge_detected_image) cv2.waitKey(0) Encontrar los contornos:

_, contours, _= cv2.findContours(edge_detected_image, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) Estas diapositivas toman imágenes de la presentacion “Lecture 4: Finding lines from detection to model fitting” del Prof. Fei-Fei Li (Stanford Vision Lab)

Detección de objetos a la antigua - Ejemplo en openCV Encontrar los contornos:

_, contours, _= cv2.findContours(edge_detected_image, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) Encontrar cuales contornos corresponden a circulos: contour_list = [] for contour in contours: approx = cv2.approxPolyDP(contour,0.01*cv2.arcLength(contour,True),True) area = cv2.contourArea(contour) if ((len(approx) > 8) & (area > 30) ): contour_list.append(contour) Mostrar los resultados: cv2.drawContours(rawImage, contour_list, -1, (255,0,0), 2) cv2.imshow('Objects Detected',rawImage) cv2.waitKey(0)

Estas diapositivas toman imágenes de la presentacion “Lecture 4: Finding lines from detection to model fitting” del Prof. Fei-Fei Li (Stanford Vision Lab)

Referencias sobre la deteccion de objectos usando opencv a la antigua - Tutorial completo de como detectar formas usando opencv (el usado aquí): http://layer0.authentise.com/detecting-circular-shapes-using-contours.html - Introduccion a los clasificadores de cascada para características Haar. Con esto si se pueden reconocer objetos mas complicados: http://coding-robin.de/2013/07/22/train-your-own-opencv-haarclassifier.html

- Detección de blobs para trackear objetos: https://www.learnopencv.com/blob-detection-using-opencvpython-c/ - Diapositivas en in ingles del Prof. Fei-Fei Li http://vision.stanford.edu/teaching/cs131_fall1718/syllabus.html

Estas diapositivas toman imágenes de la presentacion “Lecture 4: Finding lines from detection to model fitting” del Prof. Fei-Fei Li (Stanford Vision Lab)

Detección de objetos actualmente - Ahora lo que se usan son las redes neuronales convolucionales y al redes neuronales recurrentes.

- Que es una red neuronal? Es un modelo computacional inspirado en como el cerebro humano procesa la información.

http://natureofcode.com/book/chapter-10-neural-networks/ https://www.youtube.com/watch?v=W8_ktKKyW5A https://ujjwalkarn.me/2016/08/09/quick-intro-neural-networks/

Detección de objetos actualmente - Redes neuronal convolucionales

- Las redes neuronales normales (Multilayer Perceptron neural networks) tienen el problema que una neurona esta conectada a todas las neuronas de la siguiente capa. - Eso quiere decir que para una images de 32x32x3 (RGB), una sola neurona tendria 3072 pesos, y para una imagen de 200x200x3 tendria 120 000 pesos.

- Lo que hacen estas redes es poner sus neuronas en 3 dimensiones: espesor, alto y ancho.

http://cs231n.github.io/convolutional-networks/

Detección de objetos actualmente - Redes neuronal convolucionales

- La solución ideal para la identificación de objetos

http://cs231n.github.io/convolutional-networks/ http://cs231n.stanford.edu/syllabus.html

Detección de objetos actualmente - Redes neuronal recurrentes

- Son redes neuronales en las que la salida es usada provee información devuelta a la red neuronal.

http://cs231n.stanford.edu/syllabus.html Lecture 10

Detección de objetos actualmente - Redes neuronal convolucionales+recurrentes

https://wiki.tum.de/display/lfdv/Recurrent+Neural+Networks+-+Combination+of+RNN+and+CNN

Detección de objetos actualmente - Redes neuronal convolucionales+recurrentes=> Image captioning

http://cs231n.stanford.edu/syllabus.html Lecture 11

Detección de objetos actualmente - Cuan difícil seria iniciarse? Tutorial de 5 minutos

https://www.youtube.com/watch?v=QfNvhPx5Px8 http://karpathy.github.io/2015/05/21/rnn-effectiveness/

Detección de objetos actualmente - Nuevas tendencias: Generar imágenes basadas en texto,

https://www.youtube.com/watch?time_continue=33&v=9bcbh2hC7Hw Parallel Multiscale Autoregressive Density Estimation article

Detección de objetos actualmente - Nuevas tendencias: Generar imágenes basadas en texto. Deepmind project de Google.

https://www.youtube.com/watch?time_continue=33&v=9bcbh2hC7Hw Parallel Multiscale Autoregressive Density Estimation article

Ejemplos de los usos de las redes neuronales - Las redes neuronales están logrando emular la “intuición humana”. Esto fue demostrado cuando la inteligencia artificial AlphaGo derroto al campeon mundial de juego Go “Lee Sedol” 4-1. - Cuando DeepBlue derroto a Gary Gasparov en ajedrez, básicamente la IA analizaba todas las jugadas posibles y escogía la mejor. - En el ajedrez el numero de partidas totales diferentes es 10^120 pero en Go es 10^761 (el numero atomos en el universo es 10^80).

https://www.tastehit.com/blog/google-deepmind-alphago-how-it-works/

Ejemplos de los usos de las redes neuronales - Los secretos del alphaGo?

- Usar redes neuronales convolucionales en vez de “fuerza Bruta” (analizar cada jugada), para ganar intuición de cual es la mejor jugada en cada momento. - Deep Reinforcement learning: una vez que la IA ha aprendido de las jugadas humanas grabadas, se lo deja jugar contra versiones anteriores de si mismo.

https://www.tastehit.com/blog/google-deepmind-alphago-how-it-works/

Ejemplos de los usos de las redes neuronales - Mas ejemplos de las redes neuronales: Dota2

https://www.youtube.com/watch?v=jAu1ZsTCA64

Negocios que ya usan la inteligencia artificial - Improbable (1000 millones de dolares): compañía que simula la realidad. Hacia la creación de realidades artificiales. Crucial en la simulación de burbujas económicas, reacciones de la población a un desastre, etc.

https://www.youtube.com/watch?v=I4qM33A2OH8

Negocios que ya usan la inteligencia artificial - Enlitic: usa AI para detectar problemas de salud basado en radiografías (cancer).

- Nvidia: tarjetas de video que ajustan el consumo de poder para maximizar el rendimiento (tecnologia QMAX). Laptops delgadas y potentes.

https://www.youtube.com/watch?v=I4qM33A2OH8 https://hbr.org/cover-story/2017/07/the-business-of-artificial-intelligence

Otros temas interesantes - Realidad virtual o realidad aumentada: Usos en mantenimiento, marketing, diseño.

https://www.youtube.com/watch?v=vs--gu9q91s

Otros temas interesantes - Realidad virtual y realidad aumentada: Usos en mantenimiento, marketing, diseño.

https://www.youtube.com/watch?v=vNz5Rw6TwCw HoloLens Demo at Microsoft Build 2017

El futuro, la industria 4.0 - El principio de las fabricas del futuro en las que todo esta interconectado: los robots que hacen las tareas, las computadoras que tienen la inteligencia artificial, la nube, la realidad aumentada, etc.

https://www.i-scoop.eu/industry-4-0/

https://www.i-scoop.eu/industry-4-0/

El futuro, la industria 4.0

Pensamientos finales/conclusiones - El mundo esta avanzando demasiado rapido y debemos adaptarnos a los actuales cambios. Mas aun, tomar ventaja de ello y tomar las oportunidades que hay para que Bolivia se ponga al tanto, sino corremos el riesgo de ser dejados atrás para siempre. - Pero, que estamos haciendo? - Profesores: estamos brindando la educación adecuada a nuestros estudiantes? Que sea actual y relevante? Estamos actualizados respecto a las nuevas tendencias del mundo? - Alumnos: estamos haciendo esfuerzos para aprender fuera del salón de clases? Hay “n” cosas que aprender y todo ello ya no puede ser aprendido en las clases.

Jordi Muñoz CEO 3D robotics Drones 27 años

Luis von Ahn, fundador de Duolingo, creador Captcha y ReCaptcha (millonario a los 29 años)

Juan Carlos Reyes, fundador de e-cnd.com, onlinebill.ca. Millonario antes de los 30

Catecbol www.catecbol.com

Capacitación Tecnológica Científica para Bolivia facebook.com/catecbol

@catecbol

Gracias Si quieres colocas tu email aqui Ronald Terrazas Mallea

La unión es la fuerza

[email protected]