Sadržaj:

Detección De Rostros Con Arduino Intel Edison: 8 koraka
Detección De Rostros Con Arduino Intel Edison: 8 koraka

Video: Detección De Rostros Con Arduino Intel Edison: 8 koraka

Video: Detección De Rostros Con Arduino Intel Edison: 8 koraka
Video: Detección y seguimiento de rostros con OpenCV + Python + Arduino Uno 2024, Juli
Anonim
Detección De Rostros Con Arduino Intel Edison
Detección 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 investición debido a que involucra métodos para adquirir, procesar, analiza y comprender las imágenes del mundo real con fin fin de producir informacione numeričke numeričke informacije ser tratados por un ordenador. Zapravo, los mejores algoritmos para tales tareas se basan en redes neuronales convolucionales, las cuales generalmente procesan miles de imágenes de rostros humanos mediaan el uso de aprendizaje superado para entrenar el algoritmo que identificara el objectto 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 cicientos y desarrolladores que aportan, acgoalizan cdi man con un rico set de carcaterisiticas que podemos implementar facilmente para la detección y reconocimiento de imágenes.

Pesar de que OpenCV je encuentra escrita na C ++ orijentiran na objetos, este soporta múltiples idiomas y nosotros vamos a usar Python como nuestro lenguaje de programción para realizar la detección de rostros. Tipicamente, una applicación deáge degenerirano un procesamiento y una imágen de salida. Intel Edison ne sadrži video zapise niti instalira skriptu za Python na novom računaru. Luego, después del funcionamiento exitoso del código en la PC, modifikacije el código para correrlo en el Edison. Las cosas je aklararan kuando hagamos la implementación práctica. Nuestro objetivo es realizar la detección de rostros y, si se detecta, realizar alguna acción.

Supplies

Materijal koji zahtijeva requerimos para llevar a cabo este tutorial es:

HARDVER

  • 1 laptop/PC.
  • 1 Placa Arduino Intel Edison.
  • 2 kabla USB micro-B.
  • 1 aplikacija za pametni telefon "IP web kamera".
  • 1servomotor sg 90.

SOFTVER

  • Intel Flash alat Lite V5.2.4
  • PuTTy
  • FileZilla FTP
  • Imágen Yocto Poky (V25.5-15)
  • VS kod
  • Python 2.7
  • OpenCV verzija 3.3.0
  • Numpy
  • Libreria MRAA
  • Upravljački programi za Windows za upravljački program Intel Edison (Potražite i preuzmite)
  • Arhiva dll -a u sistemu Windows (Preuzmite sertifikat o pogrešnom trenutku instaliranja OpenCV računara).

Korak 1: 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
Conectando El Intel Edison a La PC

Hardverski upravljački program Intel Edison nudi podešavanja i prezentacije:

  • La placa de desarrollo kreirana sa Intel kompatibilnim Arduinom (es la que usamos en este tutorial).
  • Una placa mini-breakout (con el móudlo ya montado) kompatibilan sa la proširenom pločom de Arduino.
  • Napravljen je Intel Edison i nalazi se na naljepnici (Aquí requerimos fabricar nuestra propia PCB).

Možete koristiti proširivo kompatibilno računalo sa Arduino debido a la fleksibilnim i kompatibilnim za interakcije s otrovima koji djeluju i senzore. El Intel Edison, diferencijalna platforma za Arduino sa UNO -om ili MEGA -om u operativnom sistemu, posebno u Linux -u sa Yocto -om.

Razgovarajte o tome kako da povežete kablove USB mikro-B del Arduino Edison sa novim računarom. 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 pozicija el Arduino Edison permanentcer apagado.

Konektor USB micro-B markado s brojem 2 može se koristiti za alimentaciju na 5V, programiranje koristiti IDE Arduino, predavanje/escritura i memorijska memorija na USB-u putem USB-a.

USB priključak micro-B sa priključkom za napajanje 3 se koristi za pristup preko SSH-a i Edisona.

Ne možete da instalirate upravljačke programe za Windows. Posteriormente revisamos en el Admsinistrador de dispozitivos de Windows si reconoce dos puertos:

  • El puerto COM virtualni Intel Edison
  • Pu puni serijski COM dio Intel Edison.

Pregledajte prethodnu verziju, nastavite sa radom, provjerite Intel Edison sa Linuxom.

Korak 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 vez que tu dispositivo esta correctamente detectado na la PC -u, debes flashhearlo sa Linuxom. Za korištenje uspravnog i fleksibilnog bljeskalnog pogona za Intel: Flash Tool Lite i konektor USB mikro-B markado s brojem 2 (naprijed).

1. Abre la herramienta "Flash Tool Lite" y povezivanje tu dispozitivo na PC.

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

3. Descués de hacer click en "Start to flash", la herramienta descomprimirá automáticamente el arhive y empezará subir la imágen de Linux i Intel Edison.

4. Odspojite deskonektor i priključite kabl USB kabel 2, hazlo.

5. El pravokutni de carga debe de llegar al 100%. ¡Listo! Najnovije informacije o Intel Edison -u.

Molimo vas da instalirate "Linux Yocto Poky" i prilagodite konfiguraciju Intel Edison -a.

Korak 3: Konfigurirajte El Intel Edison (Primeros Pasos)

Konfiguracija El Intel Edison (Primeros Pasos)
Konfiguracija El Intel Edison (Primeros Pasos)
Konfiguracija El Intel Edison (Primeros Pasos)
Konfiguracija El Intel Edison (Primeros Pasos)
Konfiguracija El Intel Edison (Primeros Pasos)
Konfiguracija El Intel Edison (Primeros Pasos)

Después de flashear con éxito tu Edison, ahora configuraremos el dispositivo, para ello vamos a usar la terminal PuTTY. PuTTY je klijent SSH -a i telneta, koji je originalno dizajnirao Simon Tatham za Windows. Vamos a usar la conexión serijski aqui.

Antes de abrir la terminal de PuTTY, abre el "Administrator de dispositivos" y anota el número de puerto korespondente for COM del Edison (no virtual). Este valor lo usaremos para inicializar la comunicación.

Abre PUTTY y luego, odaberite botu "Serial" i unesite je u jezik COM iz Edisona. Posteriormente anota la velocidad en baudios 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 comandos para configurar tu Edison. Lo siguiente es un list tareas que haremos en la console para configurar el dispositivo:

  • Configurar un nombre para el dispsotivo.
  • Konfigurator je kontra root za root.
  • Priključak Edison na crvenu WIFI vezu.

Cuando te conectas por primera vez se te pedira hace login. Ispišite "root" i pritisnite "Enter". Veras "root@edison" znači lokalno značenje u direktoriju root.

Ahora que ya te encuentras listo para teclear comandos, opišite:

configure_edison --setup

Pritisnite Enter i posteriormente upišite lozinku i najnovije pritisnite 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.

Konačna konfiguracija pedifera s crvenim WIFI -jem. El móudlo escaneara el lugar y detectará las redes WIFI disponibles, describe el numero de la opción 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! Mogućnost povezivanja putem WIFI -ja. Te mostrará una pantalla en el navegador con tu hostame and tu dirección IP. Asimismo puedes revisar más parámetros de tu conexión escribiendo:

ifconfig

Pristupite svom najtoplijem los parámetros de tu crvenom WIFI -u.

Ovo je popis za konfiguraciju Entorno de Desarrollo Integrado (IDE) za empezar sa programom. En nuestro caso será… ¡Python!

Korak 4: Usando Python Para Programar 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 je najnoviji program koji koristi IDE de Arduino, jer je embargo uveden u Python.

Al tratar sa Python i hardverom, potrebno je koristiti biblioteku "MRAA" za međuzavisne GPIO -ove. MRAA je un biblioteca esqueleto de bajo nivel para comunicarse con los GPIO's en plataformas GNU / Linux y es compatible with casi todas las placas basadas and Linux useliz. Para ello procederemos and instalarla.

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

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

Posljednje jamstvo arhive i ažuriranje popisa opisa packetes:

opkg nadogradnja

Ahora vamos a instalar git, opišite:

opkg install git

Ahora vamos and instalar un repositorio 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
  • source ~/.profile

Ahora ejecutaremos los siguientes comandos:

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

¡Listo! Ya debemos de tener konfigurira ispravne Python i el Edison. Para probar lo anterior ejecutaremos el código anexado en este paso ("prueba.py") usando FileZilla. Para ello abriremos FileZilla en PC (Lo debiste de haber descargado) y en campo de "Servidor", "usuario", "contraseña" y "Puerto" escribimos IP de tu edison (revisalo escribiendo ifcong en tu edison), el usuario (root), tu lozinku i konačni zapisnik na el campo del puerto escribiremos 22, možete pročitati općenito emplea para conexiones SSH.

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

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

python prueba.py

Debemo posmatrači sa LED 13 u 2 milisegunda. y se apaga 2 milisegundos.

¡Felicidades! Ima ejekutado ispravke u kodigu i fitonu za Edisona. Ahora ya estamos listo za procesor imágenes en nuestro Edison usando Python, pero antes escribiremos y probaremos el código de Python para detectar rostros en nuestra PC…

Korak 5: Detectando Rostros Con OpenCV

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

El Intel Edison ne sadrži interfaz za prikazivanje videa, por lo que para probar que el código que escribiremos u Python funkciji sa savršenom probaremos código za korekciju na novom PC -u i poslije migracije al Edisona.

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. Por lo que vamos a realizar estos pasos en nuestra PC:

  1. Preuzmite Python 2.7 na svom računaru
  2. Preuzmite OpenCV verziju 3.3.0
  3. Svi direktoriji i donde se dodaju OpenCv-u i pozicionirani su u C: / opencv / build / python / 2.7 / x86 u kopiji u arhivi cv2.pyd u direktoriju pythona C: / Python27 / Lib / site-paketi.
  4. Instalacijski pip, dodatne informacije i siguiente enlace
  5. Instaliraj numpy escribiendo el comando python -m pip install --user numpy

Para verificar que todo funciona correctamente escribe en la terminal de python de tu PC and enter:

  • import numpy
  • import cv2

Ambos comandos respectivamente deben de responder ningún mensaje de error (osea nada), indicando que las bibliotecas se han importado correctamente.

Ahora preuzmite arhivu "3_detectaRostrosOjos.py", ili krajnjeg Python terminala za PC i odgovarajući program. Este programi mogu debelo aktivirati web kameru na PC -u i otkriti rostros i ojos tal i komo en la imágen, pasa salir del programa presia la tecla ESC.

Si lo lograste, ¡felicidades! Pasemos al siguiente paso que es correr este codigo desde nuestro Intel Edison i aktivirajte motor i pasos cada vez que detectte un rostro.

Korak 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 es un caso muy específico del reconocimiento de objetos. Hay muchos enfoques para el reconocimiento facial. Pogrešno embargo, raspravite se o sljedećim temama:

Segmentación basada en color: En esta técnica, la cara segmenta según el color de la piel. La entrada de este algoritmo suele ser imagen en formato de colores RGB, mientras que en la etapa de processamiento la cambiamos a los formatos HSV o YIQ. U skladu s tim, pikseli cada su klasificirani kao piksel u boji de la piel ili u pikselu u boji de la piel. La razón detrás del uso de otros modelos de color que no sean RGB es que a veces RGB no puede razlikuje los colores de la piel en diferentes condiciones de luz. Ovo mejora značajno označava sve ostale modele boje. Nosotros no usaremos este algoritmo

Prepoznavanje zasnovano na značajkama: 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" para la detección de rostros es un método eficaz detección de objetos propuesto by Paul Viola y Michael Jones en su artico Brzo otkrivanje objekata pomoću pojačane kaskade jednostavnih značajki "od 2001. godine. Es unfoque basado en el aprendizaje automático en donde la" cascade function "entren contra un conconnto de imágenes pozitivas y negativas. El algoritmo requiere de muchas imágenes pozitivas (en nuestro caso estas son imágenes de caras) y muchas imágenes negativas (que no contienen imágenes de caras). Partr de ello vamos a entrenar el modelo para extraer las características de cada imágen. Para este propósito, is utilizan las "haar feature" que se muestran en la 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" deben estar entrenados para la cara, ojos, sonrisa itd. La biblioteca OpenCV sadrži un unanto de clasificadores predefinidos. Estos están raspolaže en la carpeta C: / opencv / build / etc / haarcascades

Korak 7: Detectando Rostros Con OpenCV i Intel Edison

Detectando Rostros Con OpenCV i Intel Edison!
Detectando Rostros Con OpenCV i Intel Edison!
Detectando Rostros Con OpenCV i Intel Edison!
Detectando Rostros Con OpenCV i Intel Edison!

Možete instalirati biblioteku numpy y openCV u Intel Edison -u, ali ne i kao escrimopis los siguientes comandos desde la terminal del Edison:

  • opkg update
  • opkg nadogradnja
  • opkg instalirajte python-numpy python-opencv

Provjerite je li potrebno instalirati ispravke. Para ello ve a la terminal de Python desde tu arduino Edison i opišite:

  • import numpy
  • import cv2

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

Ahora vamos ima konfiguraciju za video zapise sa Intel Edison -a koji su došli do rostrosa. Na vašem pametnom telefonu preuzmite aplikaciju "IP web kamera". Prethodno pristupite ala aplikaciji i "Prilagodite IP web kameru"/"Preferencije za video zapise"/"Rezolucija fotografije" na ekranu u paru 640x480. Ako želite da preuzmete i instalirate Intel Edison, jednostavno nije potrebno odrediti parametre za procesor de imágenes debido a la poca cantdad de RAM que posee (1GB RAM -a).

U aplikaciji "IP web kamera" kliknite na bolju verziju "Početni servis". Ahora, desde tu smartphone debes de poder ver la camara encendida (como si fuera a tomar foto) and una dirección IP abajito. Omogućite IP adresu na web stranici na računaru i debera za video zapise uživo, u slučaju da ste spremni za trabajando.

Ahora descarga el código "tres.py" y arhive "haarcascade_frontalface_default.xml" (Los dos códigos los puedes encontrar en los archivos del paso actual) en PC. Upotreba FileZilla za pasos ambos codigos i una misma localidad de tu Edison (por ejemplo en el root root) y ejecuta el código de python con el comando:

python tres.py

Na terminalu Edison deblokirali ste verziju "Dame la dirección IP" i ubacili IP adresu na "IP web kameru" (es la misma que escribiste en el navegador de tu PC para conectarte) y dale enter. U ovom slučaju, ispravno je prikazano "Rostro detectado" na terminalu Edison i "Rostro no detectado" na bazi mobilnog telefona. Asimismo ćete otkriti i instalirati Intel Edison -ov upravljački program za servo motor.

Preporučuje se: