Taula de continguts:

Detecció de Rostros amb Arduino Intel Edison: 8 Steps
Detecció de Rostros amb Arduino Intel Edison: 8 Steps

Vídeo: Detecció de Rostros amb Arduino Intel Edison: 8 Steps

Vídeo: Detecció de Rostros amb Arduino Intel Edison: 8 Steps
Vídeo: Leap Motion SDK 2024, Juliol
Anonim
Detecció De Rostros Amb Arduino Intel Edison
Detecció De Rostros Amb Arduino Intel Edison

El processament d’imatges o la visió per computadora és un d’esos camps que requereixen enormes cantitats d’investigació degut a que involucra mètodes per adquirir, processar, analitzar i comprendre les imatges del món real amb la fi de producció d’informació numèrica o simbòlica per a què pugui ser tractats per un ordinador. Actualment, els millors algoritmes per a contes tareas es basen en redes neuronales convolucionals, les quals normalment processen miles de imatges de rostres humans mitjançant l’ús d’aprenentatge supervisat per entrenar l’algoritme que identifica l’objecte buscat. 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 qual cosa serà gràcies a l'arduo treball de la comunitat de científics i desenvolupadors que aportarà, actualitzarà i mantindrà el codi, ja compte amb un rico set de carcaterisitiques que podem implementar fàcilment per a la detecció i reconeixement d’imatges.

A pesar de que OpenCV es troba escrit en C ++ orientat a objectes, aquest suporta múltiples idiomes i nosaltres vamos a usar Python com a nostre llenguatge de programació per realitzar la detecció de rostres. Típicament, una aplicació de processament d’imatges té una imàgen d’entrada, un processament i una imatge de sortida. Intel Edison no té una interfície de vídeo, per lo que executem el script de Python en el nostre PC. Luego, després del funcionament exitoso del codi a la PC, modificarem el codi per corregir a l’Edison. Les coses s’aclariran quan haurem de implementar la pràctica. El nostre objectiu es realitza la detecció de rostres i, si es detecta, realitza alguna acció.

Subministraments

El material que es requereix per dur a terme aquest tutorial és:

HARDWARE

  • 1 portàtil / PC.
  • 1 Placa Arduino Intel Edison.
  • 2 cables USB micro-B.
  • 1 telèfon intel·ligent amb l'aplicació "Càmera web IP".
  • 1servomotor sg 90.

PROGRAMARI

  • Eina Intel Flash Lite V5.2.4
  • MUNTATGE
  • FileZilla FTP
  • Imágen Yocto Poky (V25.5-15)
  • Codi VS
  • Python 2.7
  • Versió OpenCV 3.3.0
  • Gronxador
  • Libreria MRAA
  • Drivers de Windows per al mòdul Intel Edison (Se descargan en cuanto se conecta la placa).
  • Archivos dll de Windows (Pueda ser que falten al moment d’instal·lar OpenCV en el teu portàtil).

Pas 1: Conectar El Intel Edison a La PC

Conectant El Intel Edison a La PC
Conectant El Intel Edison a La PC
Conectant El Intel Edison a La PC
Conectant El Intel Edison a La PC
Conectant El Intel Edison a La PC
Conectant El Intel Edison a La PC

El mòdul de maquinari Intel Edison ho podem trobar en tres presentacions:

  • La placa de desenvolupament creada per Intel compatible amb Arduino (és la que usem en aquest tutorial).
  • Una placa mini-breakout (amb el mòbil ja muntat) compatible amb la placa d’expansió d’Arduino.
  • El mòdul Intel Edison en el seu estat natiu (Aquí es requereix fabricar la nostra pròpia PCB).

Us us la placa d’expansió compatible amb Arduino degut a la flexibilitat i compatibilitat per interactuar amb altres actuadors i sensors. El Intel Edison, a diferencia de les altres places d'Arduino com UNO o MEGA corre un sistema operatiu, en aquest cas un imàgen Linux llamada Yocto.

Tal i com es mostra en la imàgen connectarem els dos cables USB micro-B del Arduino Edison a la nostra laptop. Fijate bien que el interrupor (marcado con el número 1 en la imágen), està apuntant cap a baix, si no es troba en dicha posició el Arduino Edison permanecerà apagat.

El conector USB micro-B marcat amb el número 2 es fa servir per a l'alimentació de 5V, programació utilitzant l'IDE Arduino, lectura / escriptura en la memòria flash i ús d'Ethernet a través de USB.

El conector USB micro-B marcat amb el número 3 s'utilitza per accedir per SSH al nostre Edison.

Una vegada connectat deixem que s'instal·lin els controladors de Windows. Posteriorment revisem a l'administrador de dispositius de Windows i reconegueu dos ports:

  • El port COM virtual de Intel Edison
  • El puerto serial COM de Intel Edison.

Havent revisat l’anterior, procedim al següent pas, apareix a Intel Edison amb la imatge de Linux.

Pas 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 vegada que el vostre dispositiu està correctament detectat per l'ordinador, els debes es llueixen amb una imatge de Linux. Per això utilitzarem l’eina flash proveïda per Intel: Flash Tool Lite i el conector USB micro-B marcat amb el número 2 (ver paso anterior).

1. Obre l’eina "Flash Tool Lite" i connecta el teu dispositiu al PC.

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

3. Després de fer clic a "Start to flash", l'eina descomprimirà automàticament l'arxiu i començarà a subir l'imatge de Linux a l'Intel Edison.

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

5. El rectangle de càrrega ha d’arribar al 100%. ¡Listo! Ja flasheaste tu Intel Edison.

Ara que ja hi ha instal·lat l'imatge "Linux Yocto Poky" ja podem començar a configurar l'Intel Edison.

Pas 3: Configurant El Intel Edison (Primeros Pasos)

Configurant El Intel Edison (Primeros Pasos)
Configurant El Intel Edison (Primeros Pasos)
Configurant El Intel Edison (Primeros Pasos)
Configurant El Intel Edison (Primeros Pasos)
Configurant El Intel Edison (Primeros Pasos)
Configurant El Intel Edison (Primeros Pasos)

Després de llampar amb èxit al teu Edison, ara configurarem el dispositiu, per fer-ho servir a la terminal PuTTY. PuTTY és un client SSH i telnet, desenvolupat originalment per Simon Tatham per a la plataforma Windows. Vamos a usar la conexión serial aqui.

Antes d'obrir la terminal de PuTTY, obre el "Administrador de dispositius" i anota el número de port corresponent per al COM de l'Edison (no el virtual). Aquest valor ho utilitzarem per inicialitzar la comunicació.

Abre PUTTY y luego, selecciona el botó "Serial" i s'introdueix el número de port COM de Edison. Posteriorment s’anota la velocitat en baudios a la que es comunica l’Edison amb el seu equip, escriu 115200. Finalment es preveu obrir per començar la comunicació amb el dispositiu.

Una vegada que estàs al terminal de PuTTY pots executar comandos per configurar el teu Edison. El següent és un llistat tareas que farem en la consola per configurar el dispositiu:

  • Configurar un nom per al dispsotiu.
  • Configurar una contrasenya per a root.
  • Connecta l'Edison a una WIFI vermella.

Quan t’has connectat per primera vegada, se t’ha fet la sessió. Escriu "root" i presiona "Enter". Veras "root @ edison" el que significa que es troben en el directori root.

Ahora que ja us trobeu llestos per a comandaments clars, escriviu:

configure_edison --setup

Presiona enter i posteriorment escriviu una contrasenya i nuevamente presiona enter. Luego te pedira un nombre para el dispositivo (que en realidad es un alias mas que un nombre), escribe un nombre y da enter.

Finalment, heu de configurar una WIFI vermella. El mòudlo escaneja el lloc i detectarà les redissenyades WIFI disponibles, s’escriu el número de l’opció de la detecció vermella que es pot connectar i posteriorment et pedirà la contrasenya de la vermella, escrivint i presiona enter.

¡Listo! Ja estàs connectat al WIFI. Mostrarà una pantalla al navegador amb el vostre hostame i la vostra direcció IP. Asimismo pots revisar més paràmetres de la teva connexió escrivint:

ifconfig

Presiona i mostra els paràmetres del teu WIFI vermell.

Ja estem preparats per configurar l'Entorn de Desenvolupament Integrat (IDE) per començar amb la programació. En nuestro caso será … ¡Python!

Step 4: Usando Python Para Programar El Edison

Usant Python Per Programar El Edison
Usant Python Per Programar El Edison
Usant Python Per Programar El Edison
Usant Python Per Programar El Edison

L'Edison pot programar-se utilitzant l'IDE d'Arduino, sense embarcar-se en utilitzar Python.

Al tractar amb Python i hardware, necessitem utilitzar la biblioteca "MRAA" per interactuar amb els pins GPIO. MRAA és una biblioteca esquelet de baix nivell per comunicar-se amb els GPIO en plataformes GNU / Linux i és compatible amb gairebé totes les places basades en Linux utilitzades. Per a ell procedirem a instal·lar-la.

En Putty, vete a la terminal y escribe (pots ocupar l'editor vi o nano per exemple) en l'arxiu que gestiona els paquets de Linux /etc/opkg/base-feeds.conf el següent:

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

Posteriorment guarda l'arxiu i actualitza la llista de paquets escrivint:

actualització opkg

Ahora vamos a instalar git, escriviu:

opkg install git

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

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

Ara afegirem ~ / edison-scripts al PATH:

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

Ahora executem els següents comandaments:

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

¡Listo! Ja hem tingut configurat correctament Python a l'Edison. Per provar l'execució anterior del codi anexat en aquest pas ("prova.py") mitjançant FileZilla. Per a obrir FileZilla a la PC (Lo debiste de haber descargado) y en el campo de "Servidor", "usuario", "contraseña" y "Puerto" escriví l'IP de la vostra edició (revisar-se escrivint ifcong en la vostra edició), el usuari (root), la teva contrasenya i finalment al camp del port escrivint 22, ja que és el que generalment s’utilitza per a connexions SSH.

Una vegada connectat transmetre l'arxiu "prueba.py" a la carpeta "root".

Ahora escribe, des del teu Edison i en la ubicació "root" el següent comandament per executar el codi.

python prueba.py

Debem observar com el LED 13 incloent 2 milisegundos. y se apaga 2 milisegundos.

¡Felicitats! Ha executat correctament un codi en phyton per al teu Edison. Ara ja estem a punt per processar imatges al nostre Edison utilitzant Python, però abans d’escriure i provar el codi de Python per detectar rostres al nostre PC …

Pas 5: Detectant Rostros amb OpenCV

Detectant Rostros Con OpenCV
Detectant Rostros Con OpenCV
Detectant Rostros Con OpenCV
Detectant Rostros Con OpenCV

El Intel Edison no té una interfície de sortida de vídeo, per lo que per provar que el codi que escriu en Python funciona a la perfecció probarà el codi per corregir en el nostre PC i posteriorment el migrarem a Edison.

El nostre objectiu es realitza la detecció de rostres i, si es detecta, realitza alguna acció.

Antes de començar necessitem tenir instal·lat Python i OpenCv a les nostres computadores. Per lo que vamos a realizar estos pasos en nuestro PC:

  1. Descarregueu Python 2.7 a la nostra PC
  2. Descarregar versió OpenCV 3.3.0
  3. Veieu el directori on es troba l'OpenCv extra i poseu-vos en C: / opencv / build / python / 2.7 / x86 i copieu l'arxiu cv2.pyd al directori de python C: / Python27 / Lib / site-packages.
  4. Instala pip, mas info en el següent enllaç
  5. Instala numpy escrivint l'ordre de python -m pip install --user numpy

Per verificar que tot funciona correctament a la terminal de python del vostre PC i introduïu:

  • importar numpy
  • importar cv2

Ambos comandos respectivamente han de respondre ningún mensaje de error (osea nada), indicant que les biblioteques s’han importat correctament.

Ahora descarrega l'arxiu "3_detectaRostrosOjos.py", obre una terminal de Python al teu PC i corre el programa. Este programa vamos debe activar la webcam del tu PC y detectar rostros y ojos tal y como en la imágen, pasa salir del programa presiona la tecla ESC.

Si lo lograste, ¡felicitats! Passem al següent pas que es corregeix aquest codi des del nostre Intel Edison i activem un motor a passos cada vegada que detectem un rostre.

Step 6: Antes De Llegar Al Code 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ó de rostres és un cas molt específic del reconeixement d’objectes. Hi ha molts enfocaments per al reconeixement facial. Sin embargo, vamos a discutir los dos mas comunes:

Segmentació basada en color: En aquesta tècnica, la cara es segmentarà segons el color de la pell. La entrada d’aquest algoritme suele ser una imatge en format de colors RGB, mentre que en l’etapa de processament els cambis als formats HSV o YIQ. En aquest procés, cada píxel es classifica com un píxel del color de la pell o un píxel sense color de la pell. La raó detràs de l’ús d’altres models de color que no sean RGB és que a vegades RGB no pot distingir els colors de la pell en diferents condicions de llum. Això millora significativament a utilitzar altres models de color. Nosotros no usaremos este algoritmo

Reconeixement basat en funcions: Aquesta és la tècnica que utilitzeu per a aquesta instrucció. En aquesta tècnica buscem ciències característiques, i en base a això fem el reconeixement. L’ocupació de "haar feature-based cascade" per a la detecció de rostres és un mètode eficaç de detecció d’objectes proposat per Paul Viola i Michael Jones en el seu article " Rapid Object Detection using a Boosted Cascade of Simple Features "de l'any 2001. És un enfocament basat en l'aprenentatge automàtic en què la" funció cascada "entra contra un conjunt d'imatges positives i 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 aquest propòsit, es farà servir les "haar feature" que es muestren en la figura. Cada una de les figures és un valor únic obtingut a restar la suma de píxels debat d’un recte blanc de la suma de píxels debat d’un recte negre. Los "haar features" han d’estar entrenats per a la cara, ulls, sonrisa, etc. La biblioteca OpenCV conté un conjunt de classificadors predefinits. Aquests estan disponibles a la carpeta C: / opencv / build / etc / haarcascades

Pas 7: Detectant Rostros amb OpenCV a Intel Edison

Detectant Rostros Amb OpenCV En Intel Edison!
Detectant Rostros Amb OpenCV En Intel Edison!
Detectant Rostros Amb OpenCV En Intel Edison!
Detectant Rostros Amb OpenCV En Intel Edison!

Vam instal·lar la biblioteca numpy i openCV a l'Intel Edison, per escriure els següents comandos des del terminal d'Edison:

  • actualització opkg
  • actualització opkg
  • opkg instal·la python-numpy python-opencv

Verifica que tot se haya instal·lat correctament. Per a ell a la terminal de Python des del teu arduino Edison i escribe:

  • importar numpy
  • importar cv2

Si cada un d’aquests comandaments no reportem cap missatge, tot es troba instal·lat a la perfecció.

Ahora vamos a configurar la fuente de video de donde el Intel Edison leera los rostros. Descarregueu el vostre telèfon intel·ligent a l’aplicació "Càmera web IP". Vaig accedir a l'aplicació anterior a "Ajustes de IP Webcam" / "Preferències de vídeo" / "Resolució de les fotos" i deixarem el paràmetre a 640x480. Es aqui quan es comença a notar que l'Intel Edison simplement no està destinat al processament d'imatges degut a la poca quantitat de RAM que posa (1GB de RAM).

A l'aplicació "IP Webcam", feu clic al botó inferior "Iniciar servidor". Ahora, des del teu smartphone debes de poder ver la camara encendida (com si fora a prendre foto) i una direcció IP abajito. Escribe dicha dirección IP en el teu navegador web de la PC i hauries de veure el vídeo en viu, en el meu cas salvi jo sentit treballant.

Ahora descarrega el codi "tres.py" i l'arxiu "haarcascade_frontalface_default.xml" (Els dos codis es poden trobar en els arxius del pas actual) al teu PC. Usa FileZilla per passar ambdós codis a una mateixa localitat del teu Edison (per exemple en el folder root) i executar el codi de python amb el comandament:

python tres.py

Des de la terminal del teu Edison debes de veure un missatge "Dame la dirección IP" aquí inserta la IP que et dóna "IP Webcam" (és la mateixa que escriu al navegador del teu PC per connectar-te) i dale enter. Si tot és correcte debes de veure el missatge "Rostro detectado" en la terminal de tu Edison i "Rostro no detectat" en base a si pones un rostre en la webcam de tu celular. Asimismo si se detecta un rostro tu Intel Edison ha de fer girar el servomotor.

Recomanat: