Autor Tema: IoT, IA & Machine Learning  (Leído 3331 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado xocas

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 2312
IoT, IA & Machine Learning
« en: 08 de Agosto de 2019, 13:48:22 »
Partiendo de algunos comentarios en otro tema...

Otro campo delicado donde se va a aplicar la inteligencia artificial para asistir a las personas es en el diagnóstico médico, con los problemas de falsos positivos o falsos negativos debidos a decisiones de máquinas que «ayudan» a los médicos.

Una de las cosas que me cuestiono, para aprender, es redes neuronales (a.k.a. AI). ¿Será necesario para nuestra rama en electrónica? Por que la mayoría hasta ahora usa librerias como TensorFlow entre otras, pero para electrónica (obviamente algo simple se realiza directamente) será necesario aplicarlo?, lo que mas me cuesta de esta pregunta es.. ¿En donde lo aplicarías?, o re fraseando la pregunta: ¿En donde es necesario y que supere a una simple lógica?.
Nuevamente estamos hablando de cuando programas un micro barebone, y no un microprocesador con un OS, que permitiría el uso de esas librerías. Sino el de generar nuestras redes neuronales.

Eso daría tema para un nuevo hilo. IA y redes neuronales en microcontroladores.

Y con razón... He visto hace poco sobre este tema, a ver si consigo sacar algún finde libre que se me acumula todo y veo algo  :mrgreen:
Si alguien se dedica al tema no estaría mal abrir un hilo e ir poniendo sobre todo ello

Bueno, pues ya que llevo un tiempo viendo cosas sobre IoT & BigData y estoy justamente ahora empezando a tocar la IA y Machine Learning me animo a ser yo quien abra el tema.

Para abrir boca os comento las fuentes que estoy usando y a partir de ahí podemos ir añadiendo contenido:

En stacksocial.com podemos encontrar ofertas de cursos muy económicos y extensos sobre el tema, tanto en formato pdf como vídeo. Ojo, porque todo el material está en inglés y no todos los vídeos disponen de subtítulos, de manera que puede ser muy complicado seguir el curso sin un buen conocimiento del idioma.
Mi experiencia: Un curso sobre Ethical Hacking en vídeo, que me gustó bastante (Pay what you want: a partir de $1) y un paquete (Bundle) sobre IoT, con pdf's y vídeos ($15), que considero penoso (demasiado básico y desactualizado).
Un ejemplo: https://stacksocial.com/search?utf8=%E2%9C%93&query=machine+learning

En udemy.com también hay bastante material sobre el tema. En castellano.
Mi experiencia: A medias con el curso IoT Masterclass & 5G y en la introducción de otro sobre Machine Learning (11€ c/uno), y de momento muy satisfecho.
Un ejemplo: https://www.udemy.com/courses/search/?q=machine%20learning

En la web de LUCA (Telefónica) tenemos artículos, tutoriales, recursos, etc: https://empresas.blogthinkbig.com/luca/
Y en su canal de Youtube, una lista de Video Post explicando algunos de los conceptos básicos: https://tinyurl.com/y3qo5aba

un saludo

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:IoT, IA & Machine Learning
« Respuesta #1 en: 08 de Agosto de 2019, 14:46:14 »
Gracias por compartir xocas y por abrir el tema..

Yo no pase una época de búsqueda de información sobre los temas en cuestión. Mi problema fue encontrar una aplicación. No del punto de vista de la potencia de una PC, sino del punto de vista de la potencia de un microcontrolador y su aplicación.

Y me explico porque....

La mayoría de las aplicaciones que encuentro son por ejemplo sortear elementos por color, lo cual lo hace valido pero requiere tener hardware que no todos tienen (sensores de color) seran baratos pero no los poseo.
Si voy a un manejo de un video y reconocimiento de formas, tengo que irme a la potencia de una PC, es cierto que puedo hacerlo con un hardware dedicado, pero en que cabeza cabe hacer algo dedicado cuando una PC, que es facilmente reemplazable si falla, lo puede realizar tambien.

¿Entonces en que puntos de aplicacion yo me podria a pensar en usar una red neuronal/IA?
Lo que veo que le presentan utilidad es para sortear o diferenciar casos según los datos de los sensores. Datos que de otra forma serian un poco "complicado" de generar una separación simple.

----------------

Por supuesto que mis ganas de aprender no se quedan unicamente en lo necesario para el microcontrolador.


Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re:IoT, IA & Machine Learning
« Respuesta #3 en: 08 de Agosto de 2019, 17:06:57 »
Bringing machine learning to embedded systems
http://www.ti.com/lit/wp/sway020a/sway020a.pdf

Desconectado tsk

  • PIC18
  • ****
  • Mensajes: 255
Re:IoT, IA & Machine Learning
« Respuesta #4 en: 09 de Agosto de 2019, 01:48:40 »
Gracias por compartir xocas y por abrir el tema..

Yo no pase una época de búsqueda de información sobre los temas en cuestión. Mi problema fue encontrar una aplicación. No del punto de vista de la potencia de una PC, sino del punto de vista de la potencia de un microcontrolador y su aplicación.

Y me explico porque....

La mayoría de las aplicaciones que encuentro son por ejemplo sortear elementos por color, lo cual lo hace valido pero requiere tener hardware que no todos tienen (sensores de color) seran baratos pero no los poseo.
Si voy a un manejo de un video y reconocimiento de formas, tengo que irme a la potencia de una PC, es cierto que puedo hacerlo con un hardware dedicado, pero en que cabeza cabe hacer algo dedicado cuando una PC, que es facilmente reemplazable si falla, lo puede realizar tambien.

¿Entonces en que puntos de aplicacion yo me podria a pensar en usar una red neuronal/IA?
Lo que veo que le presentan utilidad es para sortear o diferenciar casos según los datos de los sensores. Datos que de otra forma serian un poco "complicado" de generar una separación simple.

----------------

Por supuesto que mis ganas de aprender no se quedan unicamente en lo necesario para el microcontrolador.

No requieres de una máquina muy potente cuando ya entrenaste los modelos. Un clasificador puede ser tan simple como y = m*x+b, por lo tanto lo único que requieres obtener las constantes m y b usando datos de entrenamiento.

Pero un caso práctico, el cual podrías pensar para el uso en un sistema embebido es la localización.

Imagina que quieres realizar un sistema que sea económico en cuanto al hardware para saber en todo momento donde se encuentra una persona mayor dentro de un edificio e incluso determinar que tipo de actividades está realizando. Recordemos que los GPS tienen bastantes limitaciones como para ser empleados en este tipo de casos y pues no le vas a montar una raspberry pi a una persona mayor para saber donde está.

Entonces se puede optar por alternativas como el uso del BLE. Para lo único que necesitarías un sistema potente sería para obtener el modelo y los parámetros del modelo para que el sistema pueda estimar la posición del individuo en base a la potencia que recibe cada uno de los, por así decirlo, sensores BLE colocados en el edificio. Hay muchas fuentes de interferencia, que de manera normal seríamos incapaces de modelar y suprimirlas todas por métodos convencionales, por lo que el Aprendizaje automático es de las mejores opciones.

Ahora imagina que tiene problemas de movilidad, y se quiere desplazar de un lugar del edificio a otro. Conociendo su posición actual, el mismo sistema podría calcular la mejor ruta para llegar al destino, aquí entra la parte de la Inteligencia Artificial.

También llevo algo de rato viendo también lo de la AI y Aprendizaje Automático. Las fuentes de cursos que inicialmente usé se encuentran en edx, cursera y Udacity, cuando todo era gratuito.

Mi experiencia con cursos en estas plataformas, en el lado del la AI y Aprendizaje Automático

EDX: Todo muy bien integrado, recientemente cambiaron sus políticas de acceso a los cursos, pero los cursos siguientes tiene una buena relación entre teoría y práctica, con excepción del primero, que es principalmente pura teoría. Son por así copias casi exactas de lo que las Instituciones ofrecen en sus cursos.

Learning From Data (Machine Learning)(CaltechX)
Artificial Intelligence (BerkeleyX)
Machine Learing for Data Science and Analytics (ColumbiaX)
Introducción a la visión por Computador: desarrollo de aplicaciones con OpenCV
Artificial Intelligence (ColumbiaX)
Machine Learning (ColumbiaX)

Coursera: Al igual que EDX hay un balance entre teoría y práctica, con excepción de Probabilistic Graphical Models y Game Theory

Machine Learning for Data Analysis
Paractical Machine Learing
Machine Learning
Introduction to Data Science
Probabilistic Graphical Models
Game Theory

Udacity: Va más a la parte práctica que teórica.

Intro to Artificial Intelligence
Artificial Intelligence for Robotics
Machine Learning: Supervised Learning
Deep Learning
Intro to Machine Learning
Natural Language Processing.

PD: Si no quieres obtener algún certificado, no hay necesidad de pagar para obtener acceso a los vídeos.

En otra plataformas lo que he visto es que van más por el uso de frameworks y librerías, más que tocar la parte teórica, por lo que pueden crear una idea falsa de su aplicabilidad. Igual no me imagino usando TensorFlow, numpy, sckilearn o pandas en un microcontrolador, pero si puedo pensar en implementar un control difuso, un clasificador o una red neuronal usando valores de los parámetros precalculados, pero que puedan ser actualizados.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re:IoT, IA & Machine Learning
« Respuesta #5 en: 09 de Agosto de 2019, 02:21:15 »
Una red neuronal también puede servir para controlar un proceso como un calentador, un péndulo invertido (segway), un ascensor al parar en el piso, un proceso químico, etc.

Además de idestificar estados pueden generar patrones de control.

Desconectado AccioRw

  • PIC16
  • ***
  • Mensajes: 165
Re:IoT, IA & Machine Learning
« Respuesta #6 en: 09 de Agosto de 2019, 04:34:47 »
Antes de nada, muchas gracias xocas por abrir el tema.

¿Entonces en que puntos de aplicacion yo me podria a pensar en usar una red neuronal/IA?
Lo que veo que le presentan utilidad es para sortear o diferenciar casos según los datos de los sensores. Datos que de otra forma serian un poco "complicado" de generar una separación simple.
Mira, hace poco se me dio un ejemplo con mi móvil, un S8, al activar la opción de regular el brillo automático me salió una advertencia sobre que usaría mis patrones para aprender y adecuar el brillo según mis formas habituales de hacerlo (algo así fue el texto), los primeros días apenas regulaba el brillo, era algo torpe y ahora suele acertar en muchos casos aunque desde mi punto de vista no estaría mal que pudiera aprender también sobre el brillo que uso entre semana o el que uso los fines de semana que normalmente estoy más al aire libre  o necesito más brillo, pero bueno, aquí tienes un breve ejemplo sobre un uso de ello.
Hay teléfonos que ya lo usan tambien para adecuar los parametros de una foto, no se de que manera por que solo lo he visto brevemente y no lo hace mi teléfono...

Desconectado xocas

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 2312
Re:IoT, IA & Machine Learning
« Respuesta #7 en: 09 de Agosto de 2019, 12:16:37 »
La verdad es que no me había planteado en ningún momento que fuera posible integrar una solución IA en un entorno de microcontrolador. Lo poco que he visto o leído sobre el tema me llevó a concluir que se necesita una gran capacidad de proceso, más aún en las fases de aprendizaje en las que se habla directamente de procesamiento paralelo para las redes neuronales, y eso descarta sistemas de bajo rendimiento. Nvidia parece ser un referente IA en estos momentos.

La mayoría de las aplicaciones que encuentro son por ejemplo sortear elementos por color

Lo que veo que le presentan utilidad es para sortear o diferenciar casos según los datos de los sensores. Datos que de otra forma serian un poco "complicado" de generar una separación simple.

No requieres de una máquina muy potente cuando ya entrenaste los modelos.

En otra plataformas lo que he visto es que van más por el uso de frameworks y librerías, más que tocar la parte teórica, por lo que pueden crear una idea falsa de su aplicabilidad. Igual no me imagino usando TensorFlow, numpy, sckilearn o pandas en un microcontrolador, pero si puedo pensar en implementar un control difuso, un clasificador o una red neuronal usando valores de los parámetros precalculados, pero que puedan ser actualizados.

Es posible que hayas visto este documento en pdf u otro similar. Yo encontré algunos del estilo y en todos los casos el procesamiento se hace de manera externa al microcontrolador. Se busca reducir al mínimo la posibilidad de error a la vez que se mejora el tiempo de respuesta. No deja de parecerme curioso que se den respuestas en términos de probabilidad, no se dice que un objeto sea de color verde sinó que haya un x% de probabilidades de que lo sea.

No podría decirlo mejor: "No requieres de una máquina muy potente cuando ya entrenaste los modelos"

En el curso que acabo de empezar la preparación del entorno de trabajo empieza instalando Anaconda y, por lo que veo en el índice, seguiremos con Jupyter, Numpy y Pandas. Supongo que es normal en un curso más o menos genérico tratar de buscar un entorno 'amigable' para no espantar a los primerizos.

También me llamó la atención en el par de cursos que sigo sobre IoT que un entorno doméstico o a muy pequeña escala ni se contemplan. Directamente te dan las pautas para gestionarlo vía servicios como Microsoft Azure, Amazon AWS o Google Cloud en sus opciones gratuitas.

Estos tres servicios disponen también de opciones gratuitas básicas para IA (por ej: Reconocimiento de imágenes) y podemos añadir a IBM Watson en la lista ( https://www.ibm.com/watson/services/visual-recognition/ ).

un saludo




Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re:IoT, IA & Machine Learning
« Respuesta #8 en: 09 de Agosto de 2019, 13:16:00 »
Esos entornos ofrecen mucha potencia, pero se pueden hacer muchas cosas en un ordenador de casa. Por ejemplo entrenar un ocr para leer texto impreso por una impresora es un caso sencillo de reconocimiento de imágenes, lo puedes entrenar en casa sin problema.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re:IoT, IA & Machine Learning
« Respuesta #9 en: 09 de Agosto de 2019, 13:21:01 »
Un artículo de nivel básico muy interesante para comprender las redes neuronales:


https://www.xataka.com/robotica-e-ia/las-redes-neuronales-que-son-y-por-que-estan-volviendo


Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2976
Re:IoT, IA & Machine Learning
« Respuesta #11 en: 10 de Agosto de 2019, 13:32:31 »
Como anécdota os contaré que hace ya mucho realicé un seguidor de lineas mediante redes neuronales, una red neuronal muy simple de 3 neuronas y 3 capas creo recordar, era de tipo perceptrón, muy simple.
Entrene el sistema con matlab simulink, con el paquete neural network toolbox, lo ideal para implementar una red neuronal es una FPGA, y sintetizas las neuronas, y obviamente, no se realizan todas las capas neuronales, solo se realiza el vector con el mayor numero de neuronas, que suele ser la primera capa, y los resultados de las capas se van realiamentando y modificando los pesos.

yo no tenia dinero por aquel entonces, así que lo hice todo a mano, y como los PIC los regalaban por aquella época los utilice 3 para crear las neuronas (y que trabajaran en paralelo).

Aquí tenéis los pesos del entrenamiento y algunas fotos del circuito, no he podido rescatar gran cosa del proyecto, no se donde narices lo tengo, lo perdería con los cambios de ordenador:

 

* Sin título.jpg
(149.08 kB, 512x1024 - visto 260 veces)


Estos son los resultados del entrenamiento de la red:

Código: [Seleccionar]
input: sensores

[1 1 1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1;
 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0;
 1 1 1 0 1 1 1 0 0 1 1 1 0 0 1 0 0 0;
 1 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0;
 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0;
 1 1 0 1 0 0 0 1 1 1 0 0 1 1 0 1 1 0;
 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 0;
 1 1 1 1 1 1 0 1 1 0 1 0 0 1 0 0 1 1;]


targets: salidas

[0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1;
 0 0 0 0 1 0 0 1 1 0 1 1 0 0 1 0 0 1;
 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 1 1 1;]



prueba1 000
prueba2 010
prueba3 100


pesos:

     0     0     0    -1    -1    -1    -1     0
     0    -3    -2     6    -4    -2     1     2
     0    -5    -4    -3     2     2     1     0

bias:

     0
     0
     1

También os dejo algún enlace:

Pagina que muestra, mediante computación evolutiva el avance de una invasión de zombis.

http://Kevan.org/proce55ing/zombies/

También tengo algún programita de lógica difusa y eso, por si alguien le interesa.

un saludo
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado xocas

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 2312
Re:IoT, IA & Machine Learning
« Respuesta #12 en: 14 de Agosto de 2019, 11:44:14 »
Interesante.

Entiendo que Matlab te proporciona una función como resultado de la fase de entrenamiento y que dicha función puedes aplicarla posteriormente al código en tu dispositivo. La capacidad del dispositivo (microcontrolador, memoria, etc) marcaría el límite en cuanto a posibilidades de uso de la función en tal o cual proyecto... ¿Esto es así?

Vale que acabo de empezar con este tema y hay mucho camino que recorrer, pero hasta ahora la impresión que tengo es que hace falta también una cierta capacidad de abstracción y una buena dosis de intuición para llegar a alguna parte, que hay cosas que encajan bastante bien con mi lógica y otras en las que directamente tengo miedo, miedo de que me explote la pxxa cabeza. WTF!

un saludo

Un par de canales de Youtube que considero interesantes:
Dot CSV: https://www.youtube.com/channel/UCy5znSnfMsDwaLlROnZ7Qbg
Xpikuos: https://www.youtube.com/channel/UCCmHFfUhcgZHenBWRzSEB0w

Jugando con Redes Neuronales en el navegador:
https://playground.tensorflow.org/

Desconectado AccioRw

  • PIC16
  • ***
  • Mensajes: 165
Re:IoT, IA & Machine Learning
« Respuesta #13 en: 14 de Agosto de 2019, 12:18:44 »
Para aportar algo al tema, os dejo una lista de reproducción en YouTube, creo que no se ha mencionado nada sobre estos videos aun, los tenia localizados por un chico que me pidió ayuda sobre el tema hace unos meses, como desconozco gran mayoría de esto,  se la envié así que la tengo guardada desde entonces y el otro día dando vueltas conseguí encontrarla de nuevo:
list=PLAnA8FVrBl8AWkZmbswwWiF8a_52dQ3JQ
Para el que esté algo perdido quizá le pueda venir bien ver una explicación en video, no tengo relación alguna con el Youtuber que ha creado los videos por lo tanto solo quiero hacer mención a su trabajo además de otras listas curiosas que tiene.

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2976
Re:IoT, IA & Machine Learning
« Respuesta #14 en: 14 de Agosto de 2019, 13:36:35 »
Citar
Entiendo que Matlab te proporciona una función como resultado de la fase de entrenamiento y que dicha función puedes aplicarla posteriormente al código en tu dispositivo. La capacidad del dispositivo (microcontrolador, memoria, etc) marcaría el límite en cuanto a posibilidades de uso de la función en tal o cual proyecto... ¿Esto es así?

Bueno matlab te puede generar el código en C, pero no es así como yo lo uso (o usé), con la toolbox puedes generar muchos tipos de redes neuronales, yo use el perceptron que es de los mas sencillos. Despues de definir la red y entrenarla, matlab te da los pesos de las neuronas, este peso es el número que se multiplica por las variables de entrada cada vez que pasa por una neurona y cada neurona tiene un peso.

Las operaciones que debe ejecutar un perceptrón (o la mayoria de redes neuronales) son sumas y multiplicaciones y cada capa de neuronas debe ejecutarse en paralelo y dar las variables a la siguiente capa de neuronas.
Lo mejor para implementar una red neuronal, seria un DSP(que no tiene procesamiento paralelo) o tener cada neurona sintetizada en una FPGA o en un nucleo del procesador y luego ya, tal y como dices la capacidad del sistema, por ejemplo, ¿cuantas neuronas puedo sintetizar en una FPGA? Por esto nvidia es tan buena, sus gpus tiene un montón de "núcleos" en paralelo.

Después hay técnicas de optimización, en la practica, no se suelen implementar todas las capas neuronales, se implementa la de mayor numero y los resultados de la capa n se pasan a la n+1, cambiando los pesos de las neuronas para que así actuen de la siguiente capa.

Lo bueno de una red neuronal, perceptrón en este caso, es que siempre te ofrecerá una solución a una entrada, y esta sera mas precisa mientras mejor entrenada este la red.
Si a un sistema secuencial de programación estandar le entra una entrada que no tenia prevista pues ocurre un "pantallazo azul", si a una red neuronal le entra una señal desconocida te ofrecerá una respuesta que se ajustará a lo que ella este entrenada.

Por poner un ejemplo, programas un robot para girar a la izquierda y derecha con programación estandar, si le das la orden a este robot de que vaya en diagonal no responderá. Si entrenas una red neuronal para que el robot gire a la izquierda o la derecha y le introduces la orden de ir en diagonal, este ira en diagonal, acercándose a 45 grados conforme mejor entrenada este la red.

Es un ejemplo un poco malo(malísimo) por que hay mil variables mas, pero creo que así se puede entender la diferencia.

Te paso un documento que hice para crear un perceptrón, es una introducción muy sencilla, pero que te puede servir para empezar con la toolbox.

https://www.dropbox.com/s/cw2ib3oweujbdo7/CREAR%20UN%20PERCEPTRON.pdf?dl=0

Aquí se crea un perceptron con la gui de matlab, que siempre es mas amigable y fácil para aprender que tirar de código.

Luego en inteligencia artificial existen otras tecnologías a parte de las redes neuronales, como la lógica difusa, computación evolutiva, etc. y algunas que las han sacado de la inteligencia artificial como los sistemas expertos, donde esto se asemeja mas a una base de datos.

Un ejemplo de un sistema experto que simula inteligencia es el famoso juego de akinator:

https://es.akinator.com/

« Última modificación: 14 de Agosto de 2019, 13:42:48 por juaperser1 »
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw


 

anything