Sommario:

Detection De Rostros Con Arduino Intel Edison: 8 passaggi
Detection De Rostros Con Arduino Intel Edison: 8 passaggi

Video: Detection De Rostros Con Arduino Intel Edison: 8 passaggi

Video: Detection De Rostros Con Arduino Intel Edison: 8 passaggi
Video: Intel Edison Arduino Application Development 2024, Novembre
Anonim
Detection De Rostros Con Arduino Intel Edison
Detection De Rostros Con Arduino Intel Edison

L'elaborazione delle immagini o la visione per computer è uno dei campi che richiedono enormi possibilità di investigazione da richiedere a che involucra metodi per acquisire, elaborare, analizzare e comprendere le immagini del mondo reale con la fine del produttore o informazioni relative al numero ser tratados por un ordenador. Actualmente, los mejores algoritmos para tales tareas se basan en redes neuronales convolucionales, las cuales generalmente procesan miles de imágenes de rostros humanos mediante el uso de aprendizaje supervisado para entrenar el algoritmo que identificara el objeto buscado. Sin embargo, no vamos a meternos en tantos lios en este instructable y usaremos una biblioteca de código abierto de visión por computadora llamada OpenCV la cual gracias al arduo trabajo de la comunidad de cientificos y desarrolladores que aportan, culizan y attualit mantiene con un rico set de carcaterisiticas que podemos implementar facilmente para la detección y recononocimiento de imágenes.

A pesar de que OpenCV se encuentra escrita en C++ orientado a objetos, este soporta múltiples idiomas y nosotros vamos a usar Python come nuovo lenguaje de programación para realizar la detección de rostros. Típicamente, una aplicación de procesamiento una imágen de tiene un procesamiento y una imágen de salida. Intel Edison non contiene un'interfaccia video, per lo script di Python e il nuovo PC. Luego, después del funcionamiento exitoso del codice en la PC, modificamos el codice para correrlo en el Edison. Las cosas se aclararán cuando hagamos la implementación práctica. Nuestro objetivo es realizar la detección de rostros y, si se detecta, realizar alguna acción.

Forniture

El material que requerimos para llevar a cabo este tutorial es:

HARDWARE

  • 1 portatile/PC.
  • 1 Placa Arduino Intel Edison.
  • 2 cavi USB micro-B.
  • 1 smartphone con l'app "Webcam IP".
  • 1 servomotore sg 90.

SOFTWARE

  • Strumento Intel Flash Lite V5.2.4
  • putty
  • FileZilla FTP
  • Imágen Yocto Poky (V25.5-15)
  • Codice VS
  • Python 2.7
  • OpenCV Versione 3.3.0
  • Numpy
  • Libreria MRAA
  • Driver di Windows per il modulo Intel Edison (Se descargan en cuanto se conecta la placa).
  • Archivos dll de Windows (Pueda ser que te falten al momento de instalar OpenCV en tu laptop).

Passaggio 1: collegamento El Intel Edison a La PC

Conectando El Intel Edison a La PC
Conectando El Intel Edison a La PC
Conectando El Intel Edison a La PC
Conectando El Intel Edison a La PC
Conectando El Intel Edison a La PC
Conectando El Intel Edison a La PC

Il modulo di hardware Intel Edison lo podemos encontrar en tre presentazioni:

  • La placa de desarrollo creata da Intel compatibile con Arduino (es la que usamos en este tutorial).
  • Una placa mini-breakout (con il móudlo ya montado) compatibile con la scheda di espansione di Arduino.
  • Il modulo Intel Edison en su stato nativo (Aquí requerimos fabricar nuestra proprio PCB).

Yo usare la placa de Expansión Compatible con Arduino debido e la flexibilidad y compatibilidad para interactuar con altri attuatori e sensori. El Intel Edison, a diferencia de la otras placas de Arduino como UNO o MEGA corre un sistema operativo, en este caso una imágen Linux llamada Yocto.

Tal y come se muestra en la immagine conectaremos los dos cable USB micro-B del Arduino Edison a nuestra laptop. Fijate bien que el interrupor (marcado con el número 1 en la imágen), este apuntando hacia abajo, si no se encuentra en dicha posición el Arduino Edison permanecerá apagado.

Il connettore USB micro-B è marcato con il numero 2 se si utilizza per l'alimentazione di 5V, la programmazione utilizzando l'IDE Arduino, la lettura/scrittura e la memoria flash e l'uso di Ethernet su USB.

Il connettore USB micro-B è marcato con il numero 3 se utilizzato per accedere da SSH a nuovo Edison.

Una volta connesso ai driver installati su Windows. Successivamente è stato modificato l'amministratore dei dispositivi di Windows in base a quanto segue:

  • El porto COM virtuale del Intel Edison
  • El porto seriale COM del Intel Edison.

Habiendo revisado lo anterior, procedemos al siguiente paso, flashear el Intel Edison con l'immagine di Linux.

Passaggio 2: Flasheando El Intel Edison

Flasheando El Intel Edison
Flasheando El Intel Edison
Flasheando El Intel Edison
Flasheando El Intel Edison
Flasheando El Intel Edison
Flasheando El Intel Edison

Una volta che il dispositivo è stato rilevato correttamente dal PC, è possibile visualizzare l'immagine con un'immagine di Linux. Per utilizzare la memoria flash fornita da Intel: Flash Tool Lite e il connettore USB micro-B marcado con il numero 2 (ver paso anterior).

1. Abbreviazione di "Flash Tool Lite" e connessione al dispositivo al PC.

2. Haz clic en Examinar y busca el archivo.zip de l'imagen de Linux que descargaste (edison-image-ww25.5-15.zip).

3. Después de hacer clic en "Start to flash", la herramienta descomprimirá automáticamente l'archivo e empezará a subir the image de Linux en el Intel Edison.

4. Se te pedirá desconectar y volver a conectar el cable Cavo USB 2, hazlo.

5. El rectangulito de carga debe de llegar al 100%. ¡Listo! Ya flasheaste tu Intel Edison.

Ora che hai installato l'immagine "Linux Yocto Poky" puoi eseguire la configurazione di Intel Edison.

Passaggio 3: configurare El Intel Edison (Primeros Pasos)

Configurando El Intel Edison (Primeros Pasos)
Configurando El Intel Edison (Primeros Pasos)
Configurando El Intel Edison (Primeros Pasos)
Configurando El Intel Edison (Primeros Pasos)
Configurando El Intel Edison (Primeros Pasos)
Configurando El Intel Edison (Primeros Pasos)

Después de flashear con éxito tu Edison, ora configuramos el device, para ello vamos a usar the terminal PuTTY. PuTTY è un cliente SSH e telnet, desarrollado originalmente da Simon Tatham per la piattaforma Windows. Vamos a usar la conexión serial aqui.

Prima di aprire il terminale di PuTTY, di seguito l'"Amministratore dei dispositivi" e l'annotazione del numero di porto corrispondente per il COM del Edison (non il virtuale). Este valor lo usaremos para inicializar la comunicación.

Abre PUTTY y luego, selecciona el botón "Serial" e ingresa el número de puerto COM del Edison. Posteriormente annota la velocidad en baaudios a la que se comunicara el Edison con tu equipo, escribe 115200. Finalmente presiona abrir para empezar la comunicación con el dispositivo.

Una vez que estas en la terminal de PuTTY puedes ejecutar commands para configurar tu Edison. Lo siguiente es un elencodo tareas que haremos en la consola per configurare il dispositivo:

  • Configurare un numero per il dispsotivo.
  • Configurare una contraseña per root.
  • Conectar el Edison un WIFI rosso.

Cuando te conectas por primera vez se te pedira hace log in. Scrivi "root" y presiona "Enter". Veras "root@edison" lo cual significa que te encuentras en el directorio root.

Ahora que ya te encuentras listo para teclear comandos, escribe:

configure_edison --setup

Presiona entra y posteriormente escrivi una password e nuevamente presiona entra. Luego te pedira un nombre para el device (que en realidad es un alias mas que un nombre), escribe un nombre y da enter.

Finalmente puoi configurare un WIFI rosso. Il móudlo escaneara el lugar y detectará las redes WIFI disponibles, escribe el numero de la option de la red Detectada la que te vas a conectar y posteriormente te pedirá el password de la red, escríbelo y presiona enter.

¡Listo! È possibile connettersi al WIFI. Mostra una pantalla en el navegador con tu hostame y tu dirección IP. Asimismo puedes revisar más parámetros de tu conexión escribiendo:

ifconfig

Presiona entra y te mostrará los parámetros de tu red WIFI.

È disponibile un elenco per configurare l'Entorno de Desarrollo Integrado (IDE) per eseguire la programmazione. En nuestro caso será … ¡Python!

Passaggio 4: Usando Python per programmare El Edison

Usando Python Para Programar El Edison
Usando Python Para Programar El Edison
Usando Python Para Programar El Edison
Usando Python Para Programar El Edison

El Edison se puede programar usando el IDE de Arduino, sin embargo aqui usaremos Python.

Al tratar con Python y hardware, necesitamos usar la biblioteca "MRAA" para interactuar con los pines GPIO. MRAA es una biblioteca esqueleto de bajo nivel para comunicarse con los GPIO's en plataformas GNU / Linux y es compatibile con casi todas placas basadas en Linux utilizadas. Para ello procederemos a installarla.

En Putty, vete a la terminal y escribe (puedes ocupar el editor vi o nano por ejemplo) en el archivio que gestiona los paquetes de Linux /etc/opkg/base-feeds.conf lo siguiente:

  • src/gz all
  • src/gz edison
  • src/gz core2-32

Posteriormente guarda l'archivio e attualizza la lista de paquetes escribiendo:

aggiornamento opkg

Ahora vamos a instalar git, escrivi:

opkg installa git

Ahora vamos a instalar un repository de GitHib en el Edison:

git clone https://github.com/drejkim/edison-scripts.git ~/edison-scripts

Ahora añadiremos~/edison-scripts al PATH:

  • echo 'export PATH=$PATH:~/edison-scripts' >> ~/.profile
  • sorgente ~/.profilo

Ora ejecutaremos los siguientes comandi:

  • resizeBoot.sh
  • installPip.sh
  • installMraa.sh

¡Listo! È necessario configurare correttamente Python in Edison. Para probar lo anterior ejecutaremos el código anexado en este paso ("prueba.py") usando FileZilla. Para ello abriremos FileZilla en la PC (Lo debiste de haber descargado) y en el campo de "Servidor", "usuario", "contraseña" e "Puerto" escribimos la IP de tu edison (revisalo escribiendo ifcong en tu edison), el usuario (root), tu password y finalmente en el campo del puerto escribiremos 22, ya que es el que generalmente se emplea para conexiones SSH.

Una vez conectado transfiere el archivio "prueba.py" al folder "root".

Ahora escribe, desde tu Edison y en la ubicación "root" el comando siguiente para ejecutar el código.

pitone prueba.py

Debemos de observar como el LED 13 enciende 2 milisegundos. y se apaga 2 milisegundos.

¡Felicidità! Ha ejecutado correttamente un codice in phyton per tu Edison. Ahora ya estamos listo para procesar imágenes en nuestro Edison usando Python, pero antes escribiremos y probaremos el código de Python para detectar rostros en nuestra PC…

Passaggio 5: rilevamento dei rostri con OpenCV

Detectando Rostros Con OpenCV
Detectando Rostros Con OpenCV
Detectando Rostros Con OpenCV
Detectando Rostros Con OpenCV

El Intel Edison no tiene una interfaz de salida de video, por lo que para probar que el código que escribiremos en Python funciona a la perfección probaremos el código para correr en nuestra PC y posteriormente lo migraremos al Edison.

Nuestro objetivo es realizar la detección de rostros y, si se detecta, realizar alguna acción.

Antes de empezar necesitamos tener instalado Python y OpenCv en nuestras computadora. Per lo que vamos a realizar estos pasos en nuestra PC:

  1. Scarica Python 2.7 su PC
  2. Scarica OpenCV versione 3.3.0
  3. Ve al directory en donde se extrajo OpenCv y posicionate en C:\opencv\build\python\2.7\x86 e copia el arhivo cv2.pyd al directory de python C:\Python27\Lib\site-packages.
  4. Instala pip, mas info en el siguiente enlace
  5. Installa numpy scrivendo il comando de python -m pip install --user numpy

Per verificare che tutte le funzioni funzioni correttamente, escrivi il terminale de python de tu PC e inserisci:

  • importa numpy
  • importa cv2

Ambos comandi di rispettivo risponditore senza mensaje de error (osea nada), indicando le biblioteche se importato correttamente.

Ora scarica l'archivio "3_detectaRostrosOjos.py", abre un terminal de Python en tu PC y corre el programa. Este programa vamos debe de activar la webcam de tu PC y detectar rostros y ojos tal y comeo en la imágen, pasa salir del programa presiona la tecla ESC.

Si lograste, ¡felicidades! Passemos al siguiente paso que es correr este código desde nuestro Intel Edison y activar un motor a pasos cada vez que detecte un rostro.

Fase 6: Antes De Llegar Al Código En Edison… ¡Teoria De Funcionamiento

Antes De Llegar Al Código En Edison… ¡Teoria De Funcionamiento!
Antes De Llegar Al Código En Edison… ¡Teoria De Funcionamiento!

La detección de rostros è un caso muy específico del recononocimiento de objetos. Hay muchos enfoques para el recononocimiento facciale. Sin embargo, vamos a discutir los dos mas comunes:

Segmentación basada en color: En esta técnica, la cara se segmenta según el color de la piel. La entrada de este algoritmo suele ser una imagen en formato de colores RGB, mientras que en la etapa de procesamiento la cambiamos a los formatos HSV o YIQ. In questo modo, cada píxel es clasificado come un pixel del color de la piel o un pixel sin color de la piel. La razón detrás del uso di altri modelli di colore que no sean RGB es que a veces RGB no puede distinguir los colores de la piel en diverse condizioni di luz. Questo è meglio se si usa anche altri modelli di colore. Nosotros non usaremos este algoritmo

Riconoscimento basato sulle funzionalità: Esta es la técnica que si usaremos para este instructable. En esta técnica buscamos ciertas características, y en base a eso hacemos el reconocimiento. El empleo de "haar feature-based cascade" per la detección de rostros es un método eficaz de detección de objetos propuesto by Paul Viola y Michael Jones en su artículo Rapid Object Detection using a Boosted Cascade of Simple Features "del año 2001. Questo è un enfoque basado en el aprendizaje automático en oltre la "cascade function" se entrena contra un conjunto de images positivas y negatives. El algoritmo requiere de muchas imágenes positivas (en nuestro caso estas son imágenes de caras) y muchas imágenes negativas (que no contienen imágenes de caras). A partir de ello vamos a entrenar el modelo para extraer las características de cada imágen. Para este propósito, se utilizan las "haar feature" que se muestran en la figura. Cada una de las figuras es un valor único obtenido al restar la somma de píxeles debajo de un rectángulo de un rectángulo blanco de la somma de píxeles debajo de un rectángulo negro. Los "haar features" deben estar entrenados para la cara, ojos, sonrisa, etc. La biblioteca OpenCV contiene un conjunto de clasificadores predefinidos. Estos están disponibles en la moquette C:\opencv\build\etc\haarcascades

Passaggio 7: rilevamento dei rostri con OpenCV in Intel Edison

Detectando Rostros Con OpenCV En Intel Edison!
Detectando Rostros Con OpenCV En Intel Edison!
Detectando Rostros Con OpenCV En Intel Edison!
Detectando Rostros Con OpenCV En Intel Edison!

Vamos a instalar la biblioteca numpy y openCV en el Intel Edison, para ello escribimos los siguientes comandi desde la terminal del Edison:

  • aggiornamento opkg
  • aggiornamento opkg
  • opkg installa python-numpy python-opencv

Verifica que todo se haya installato correttamente. Para ello ve a la terminal de Python desde tu arduino Edison y escribe:

  • importa numpy
  • importa cv2

Si cada uno de estos comandos no nos reporta ningún mensaje, todo se encuentra instalado a la perfección.

Ora vamos a configurar la fuente de video de donde el Intel Edison leera los rostros. Scarica l'app "IP Webcam" per smartphone. Prima di accedere all'app e a "Ajustes de IP Webcam"/"Preferencias de video"/"Resolución de las fotos" e dejamos el parámetro a 640x480. Non è necessario che un notar que el Intel Edison non sia destinato per il processo di immagini debido a la poca disponibilità di RAM que posee (1GB di RAM).

En la app "IP Webcam" da fare clic su en el boton inferiore "Iniciar servidor". Ora, debe tu smartphone debes de poder ver la camara encendida (como si fuera a tomar foto) e una direzione IP abajito. Escribe dicha dirección IP en tu navegador web de la PC y deberas ver el video en vivo, en mi caso salgo yo sentado trabajando.

Ora scarica il codice "tres.py" e l'archivio "haarcascade_frontalface_default.xml" (Los dos códigos los puedes encontrar en gli archivi del passo attuale) e tu PC. Usa FileZilla per passare i codici a una misma localidad de tu Edison (per esempio nella root della cartella) e ejecuta el código de python con il comando:

pitone tres.py

Desde la terminal de tu Edison debes de ver un mensaje "Dame la dirección IP" qui inserire l'IP che te da "IP Webcam" (es la misma que escribiste en el navegador de tu PC para conectarte) e da entrare. Si todo es Correcto debes de ver el mensaje "Rostro detectado" en la terminal de tu Edison y "Rostro no detectado" en base a si pones un rostro en la webcam de tu celular. Asimismo si se rileva un rostro tu Intel Edison debe de hacer girar el servomotor.

Consigliato: