Cuprins:

Detecție De Rostros Con Arduino Intel Edison: 8 Steps
Detecție De Rostros Con Arduino Intel Edison: 8 Steps

Video: Detecție De Rostros Con Arduino Intel Edison: 8 Steps

Video: Detecție De Rostros Con Arduino Intel Edison: 8 Steps
Video: IoT based Home Control With Face Recognition Using Arduino 2024, Iulie
Anonim
Detecție De Rostros Con Arduino Intel Edison
Detecție De Rostros Con Arduino Intel Edison

El procesamiento de imágenes o la visión por computadora es uno de esos campos que requiere enormes cantidades de investigación debido a que involucra métodos para adquirir, procesar, analizar y comprender las imágenes del mundo real con el fin de producir información numérica o simbólica para que puedan sunt tratate pentru un computer. Actualmente, los mejores algoritmos para tales tareas se basan en redes neuronales convolucionales, cele care în mod obișnuit procesează mile de imagini de rosturi umane folosind utilizarea de învățare supravegheată pentru antrenarea algoritmului care identifică obiectul căutat. 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 care se mulțumesc la arduo munca de la comunitatea de științifici și dezvoltatori care să aducă, actualizează și mențin codul, deja cont cu un rico set de carcaterisitice care putem implementa ușor pentru detectarea și recunoașterea de imagini.

A pesar de ce OpenCV se găsește scris în C ++ orientat către obiecte, este suportat mai multe idiome și noi vom folosi Python ca și noi limbaj de programare pentru realizarea detecției de rosturi. Típic, o aplicație de procesare a imaginilor are o imagine de intrare, un procesament și o imagine de ieșire. Intel Edison nu are o interfață de video, pe care să executăm script-ul Python în PC. Luego, după funcționarea exitoso a codului în PC, modifică codul pentru corectarea în Edison. Las things se aclararán when hagamos the practice practice. Nuestro obiectiv este realizat detectarea rosturilor și, dacă se detectează, realizează o acțiune.

Provizii

Materialul care este necesar pentru efectuarea acestui tutorial este:

HARDWARE

  • 1 laptop / PC.
  • 1 Placa Arduino Intel Edison.
  • 2 cabluri USB micro-B.
  • 1 smartphone cu aplicația „IP Webcam”.
  • 1servomotor sg 90.

SOFTWARE

  • Instrumentul Flash Intel Lite V5.2.4
  • PUTTY
  • FileZilla FTP
  • Imágen Yocto Poky (V25.5-15)
  • Cod VS
  • Python 2.7
  • Versiunea OpenCV 3.3.0
  • Numpy
  • Libreria MRAA
  • Drivers de Windows pentru el módulo Intel Edison (Se descărcă în cuant se conectează placa).
  • Archivos dll de Windows (Pueda ser that te falten to moment de instalare OpenCV in your laptop).

Pasul 1: Conectarea El Intel Edison la computer

Conectând El Intel Edison la PC
Conectând El Intel Edison la PC
Conectând El Intel Edison la PC
Conectând El Intel Edison la PC
Conectând El Intel Edison la PC
Conectând El Intel Edison la PC

Modulul hardware Intel Edison îl putem găsi în trei prezentări:

  • La placa de desarrollo creada por Intel compatible with Arduino (es la que usamos en este tutorial).
  • O placă mini-breakout (cu telefonul tău montat) compatibilă cu expansiunea Board de Arduino.
  • El módulo Intel Edison în su estado nativo (Aici sunt necesari fabricarea noastră propriu PCB).

Voi folosiți placa de expansiune compatibilă cu Arduino datorită flexibilității și compatibilității pentru interacționare cu alți actuatori și senzori. El Intel Edison, a diferență a celorlalte locuri de Arduino ca UNO o MEGA corecționează un sistem operativ, în acest caz una imágen Linux llamada Yocto.

Tal y como se muestra en la imágen conectaremos los dos cables USB micro-B del Arduino Edison la nuestra laptop. Fijate bien que el interrupor (marcado con el número 1 en la imágen), este înscris către abajo, dacă nu se află în dicha poziție el Arduino Edison permanecerá apagado.

El conector USB micro-B marcado con el numero 2 se utilizează pentru alimentare de 5V, programare folosind IDE Arduino, lectură / scriere în memoria flash și utilizare de Ethernet prin USB.

Conectorul USB micro-B marcat cu numărul 3 se utilizează pentru accesarea SSH la Edison.

O dată conectat ne-am lăsat să instalăm driverele de Windows. Posteriormente revizuim în administratorul de dispozitive de Windows și recunoașteți două porturi:

  • El puerto COM virtual al Intel Edison
  • El puerto serial COM del Intel Edison.

Văzând anterior, procedăm la următorul pas, afișăm Intel Edison cu imaginea de Linux.

Pasul 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

O dată când dispozitivul tău este corect detectat pe computer, flash-uri cu imagini Linux. Pentru asta folosim instrumentul flash disponibil pentru Intel: Flash Tool Lite și conectorul USB micro-B marcat cu numărul 2 (ver paso anterior).

1. Deschideți instrumentul "Flash Tool Lite" și conectați dispozitivul la computer.

2. Haz clic en Examinar y busca el archive.zip de la imaginea Linux care descargaste (edison-image-ww25.5-15.zip).

3. După ce ați făcut clic pe „Start to flash”, instrumentul descomprimă automat fișierul și va începe să se întoarcă la Linux în Intel Edison.

4. Se te pedajează desconectarea și reveni la conectarea cablului USB cable 2, hazlo.

5. El dreptunghiul de încărcare trebuie să ajungă la 100%. ¡Listo! Ya flasheaste tu Intel Edison.

Ahora que ya tienes instalated the imágen "Linux Yocto Poky" ya we can begin to configure the Intel Edison.

Pasul 3: Configurarea El Intel Edison (Primeros Pasos)

Configurând El Intel Edison (Primeros Pasos)
Configurând El Intel Edison (Primeros Pasos)
Configurând El Intel Edison (Primeros Pasos)
Configurând El Intel Edison (Primeros Pasos)
Configurând El Intel Edison (Primeros Pasos)
Configurând El Intel Edison (Primeros Pasos)

După ce a apărut cu succes cu Edison, acum configurăm dispozitivul, pentru a putea folosi terminalul PuTTY. PuTTY este un client SSH și telnet, dezvoltat inițial de Simon Tatham pentru platforma Windows. Vamos a utiliza conexiunea serial aqui.

Antes de open the terminal de PuTTY, deschide "Administratorul de dispozitive" și anota numărul de port corespondent pentru COM del Edison (nu el virtual). Este valor pe care îl folosim pentru inițializarea comunicării.

Despre PUTTY y luego, selectați butonul "Serial" și introduceți numărul de port COM din Edison. Posteriormente anota viteza în baudii la care se comunică el Edison cu echipa ta, escribe 115200. Finalmente se deschide pentru a începe comunicarea cu dispozitivul.

O dată când ești în terminalul de PuTTY poți executa comenzi pentru configurarea ta Edison. Următorul este un listat de tarife pe care le avem în consola pentru configurarea dispozitivului:

  • Configurează un nume pentru dispsotiv.
  • Configurează o contraseña pentru root.
  • Conectează-l la Edison cu o WIFI roșie.

Când te conectezi pentru prima dată, te-ai dat log. Escribe "root" și presiona "Enter". Veras "root @ edison" ceea ce înseamnă că te întâlnești în directorul root.

Acum, că te întâlnești pregătit pentru comenzi tehnice, descrie:

configure_edison --setup

Presiona enter și posterior escribe un password ș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.

În cele din urmă, te-ai configurat cu un WIFI roșu. El móudlo escaneara el lugar y detectará the redes WIFI available, escribe the number of the option of the red detectada la care te vas a conectar and posteriormente te pedirá the password de la red, escríbelo y presiona enter.

¡Listo! Ya debes de estar conectado al WIFI. Te afișează o ecrană în navigator cu numele tău de gazdă și direcția ta IP. Asimismo puteți revizui mai mulți parametri de conexiune scriind:

ifconfig

Introduceți și afișați parametrii WIFI roșu.

Suntem pregătiți pentru configurarea Entornului de Dezvoltare Integrat (IDE) pentru a începe cu programarea. În nuestro caso será … ¡Python!

Pasul 4: Folosind Python pentru programarea 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 poate programa folosind IDE-ul de Arduino, fără a folosi acest Python.

La tratarea cu Python și hardware, trebuie să folosim biblioteca "MRAA" pentru a interacționa cu pinii GPIO. MRAA este o bibliotecă esqueleto de bajo nivel para comunicarse con los GPIO's en plataformas GNU / Linux și este compatibil cu aproape toate plăcile bazate în Linux utilizate. Pentru ello procedem la instalare.

În Putty, vete la terminal y escribe (puteți ocupa editorul vi sau nano de exemplu) în arhivul care gestionează paquetele de Linux /etc/opkg/base-feeds.conf lo siguiente:

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

Posteriormente se păstrează arhivul și se actualizează lista de pași scrise:

opkg upgrade

Ahora vamos a installar git, escribe:

opkg install git

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

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

Ahora adaugă ~ / edison-scripts al PATH:

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

Ahora execută următoarele comenzi:

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

¡Listo! Deja avem configurat corect Python în el Edison. Pentru a testa execuția anterioară a codului anexat în acest pas ("prueba.py") folosind FileZilla. Pentru a deschide FileZilla în PC (Lo debiste de haber descargado) y en el campo de "Servidor", "utilizator", "contraseña" și "Puerto" a scris IP-ul tău ediție (revizit scriind ifcong în tu ediție), el utilizator (root), tu password și în cele din urmă în câmpul din portul nostru scrie 22, deja că este el care în general se află pentru conexiuni SSH.

O dată conectat transfiere el archive "prueba.py" al folder "root".

Ahora escribe, de la Edison și în locația "root" următorul comandament pentru executarea codului.

python prueba.py

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

¡Felicități! A executat corect un cod în phyton pentru Edison. Acum suntem pregătiți pentru procesarea imaginilor în Edison folosind Python, dar înainte să scriem și să testăm codul de Python pentru detectarea rosturilor în PC-ul nostru …

Pasul 5: Detectarea Rostros Con OpenCV

Detectând Rostros Con OpenCV
Detectând Rostros Con OpenCV
Detectând Rostros Con OpenCV
Detectând Rostros Con OpenCV

El Intel Edison nu are o interfață de ieșire de video, pentru ceea ce pentru probă care codul care scrie în Python funcționează la perfecțiunea probarem codul pentru corectarea în PC-ul nostru și posterior pentru migrarea la Edison.

Nuestro obiectiv este realizat detectarea rosturilor și, dacă se detectează, realizează o acțiune.

Ante de început trebuie să avem instalat Python și OpenCv în noile noastre calculatoare. Pentru ceea ce vrem să realizăm acești pași în PC:

  1. Descarcă Python 2.7 în PC
  2. Descărcați versiunea OpenCV 3.3.0
  3. Vedeți directorul în care se află OpenCv extra și poziționați în C: / opencv / build / python / 2.7 / x86 și copiați arhivul cv2.pyd în directorul de python C: / Python27 / Lib / site-packages.
  4. Instala pip, mas info en the next enlace
  5. Instala numpy scriind comanda de python -m pip install --user numpy

Pentru verificarea că totul funcționează corect în terminalul de python de pe PC și dați:

  • import numpy
  • import cv2

Ambos comanda respectivamente must de responder no message de error (osea nada), indicând că bibliotecile se importă corect.

Ahora descarcă arhivul "3_detectaRostrosOjos.py", deschide un terminal de Python în PC și corelează programul. Este programul trebuie să activăm webcam-ul computerului tău și să detectezi rosturile și ochii tăi și cum să-l faci în imaginea mea, se trece prin programul de presiune al teclei ESC.

Si lo lograste, ¡felicidades! Pasează la următorul pas care este corectat de acest cod de la Intel Edison și activează un motor la pași de fiecare dată care detectează un rost.

Step 6: Antes De Llegar Al Code En Edison … ¡Teoria De Funcționare

Antes De Llegar Al Code En Edison… ¡Teoria De Funcționare!
Antes De Llegar Al Code En Edison… ¡Teoria De Funcționare!

Detecția rosturilor este un caz foarte specific al recunoașterii obiectelor. Hay many enfoques pentru recunoașterea facială. Fără embargou, vom discuta despre cele două comunități:

Segmentación basada en color: En esta técnica, la cara se segmentează după culoarea pielii. La entrada de este algoritmo suele este o imagine în format de culori RGB, în timp ce în etapa de procesare a schimbărilor la formatele HSV o YIQ. În acest proces, fiecare píxel este clasificat ca un píxel del color de la piel o un píxel sin color de la piel. La razón detrás del uso de otros modelos de color que no sean RGB es que a veces RGB nu poate distinge culorile pielii în diferite condiții de lumină. Acest lucru este semnificativ folosind alte modele de culoare. Nu vom folosi acest algoritm

Recunoaștere bazată pe caracteristici: Aceasta este tehnica pe care o folosim pentru a fi instructiv. În această tehnică căutăm ciertas caracteristici, și în baza a asta hacemos el reconocimiento. El empleo de "haar feature-based cascade" pentru detecția rosturilor este un metodă eficientă de detecție a obiectelor propuse de Paul Viola și Michael Jones în articolul său " Rapid Object Detection using a Boosted Cascade of Simple Features "del año 2001. Este un bazat în învățarea automată în care" funcția cascadă "se înscrie contra unui ansamblu de imagini pozitive și negative. El algoritmo requiere de muchas imágenes positivas (en nuestro caso estas son imágenes de caras) y muchas imágenes negativas (care nu conțin imagini de caras). A partir de ello vamos a entrenar el model para extraer las features de cada imágen. Para este propósito, se utilizează las "haar feature" care se muestran în figura. Cada una de las figuras es un valor único obtenido al restar la suma de píxeles debajo de un rectángulo blanco de la suma de píxeles debajo de un rectángulo negro. Los "haar features" trebuie să fie antrenate pentru cara, ochi, sonrisa, etc. Biblioteca OpenCV conține un ansamblu de clasificatori predefiniți. Sunt disponibile în carpeta C: / opencv / build / etc / haarcascades

Pasul 7: Detectarea Rostros Con OpenCV În Intel Edison

Detectand Rostros Con OpenCV En Intel Edison!
Detectand Rostros Con OpenCV En Intel Edison!
Detectand Rostros Con OpenCV En Intel Edison!
Detectand Rostros Con OpenCV En Intel Edison!

Vamos a instala la biblioteca numpy și openCV în Intel Edison, pentru ello scrie următoarele comenzi de la terminalul Edison:

  • actualizare opkg
  • opkg upgrade
  • opkg instalează python-numpy python-opencv

Verifică că totul se instalează corect. Pentru ello ve la terminal de Python de la arduino Edison și escribe:

  • import numpy
  • import cv2

Dacă fiecare dintre aceste comenzi nu raportăm niciun mesaj, totul se găsește instalat la perfecțiune.

Ahora vamos a configurar the source de video de where the Intel Edison leera los rostros. Pe telefonul tău smartphone descarcă aplicația „IP Webcam”. Hecho lo anterior access to the app y ve a "Ajustes de IP Webcam" / "Preferencias de video" / "Resolución de las fotos" și ne-am lăsat parametrul la 640x480. Este atunci când se înregistrează un notar pe care Intel Edison pur și simplu nu este destinat procesării de imagini datorită cantității de RAM care prezintă (1GB de RAM).

În aplicația „IP Webcam” dați clic pe butonul inferior „Iniciar server”. Ahora, de la tu smartphone debes de poder ver la camara encendida (as si afara a take foto) y una direction IP abajito. Escribe dicție direcție IP în navigatorul tău web de pe PC și trebuie să verizezi videoclipul în viu, în cazul meu salgându-te lucrând.

Ahora descarcă codul "tres.py" și arhivul "haarcascade_frontalface_default.xml" (Los dos códigos se pot găsi în fișierele pasului actual) pe PC. Usa FileZilla pentru a trece ambele coduri la o aceeași localitate de Edison (de exemplu, în folderul root) și ejecuta codul de python cu comanda:

python tres.py

De la terminalul tău Edison debes de ver un mensaje "Dame la direcție IP" aici inserta IP care te da "IP Webcam" (este aceeași care scrie în navigatorul tău PC pentru conectare) și dale enter. Dacă tot este corect debes de ver el message "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 detecta un rostro tu Intel Edison trebuie sa faci girar el servomotor.

Recomandat: