Innholdsfortegnelse:

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

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

Video: Detección De Rostros Con Arduino Intel Edison: 8 trinn
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 of 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, processar, analizar and comprender las imágenes del mundo real con el fin de producir information no simica of que ser tratados por un ordenador. Faktisk, los mejores algoritmos para tales tareas se basan en redes neuronales convolucionales, las cuales generalmente processan miles de imágenes de rostros humanos mediante el uso de aprendizaje supervisado para entrenar el algoritmo que identifierara 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, actualizan y manton con un rico set de carcaterisiticas que podemos implementar facilmente para la detección y reconocimiento de imágenes.

A pesar de que OpenCV se encuentra escrita no C ++ orientado a objetos, este soporta múltiples idiomas y nosotros vamos a usar Python como nuestro lenguaje de programación para realizar la detección de rostros. Típicamente una aplicá un procesamiento y una imágen de salida. Intel Edison har ikke noe grensesnitt for video, for å skaffe Python -skript og en ny PC. Luego, después del funcionamiento exitoso del código en la PC, modificaremos el código 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.

Rekvisita

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

MASKINVARE

  • 1 bærbar PC/PC.
  • 1 Placa Arduino Intel Edison.
  • 2 kabler USB micro-B.
  • 1 smarttelefon med app "IP -webkamera".
  • 1 servomotorisk sg 90.

PROGRAMVARE

  • Intel Flash -verktøy Lite V5.2.4
  • PuTTy
  • FileZilla FTP
  • Imágen Yocto Poky (V25.5-15)
  • VS -kode
  • Python 2.7
  • OpenCV Versjon 3.3.0
  • Klumpete
  • Libreria MRAA
  • Drivere for Windows for Intel Edison (kan lastes ned og samles inn).
  • Arkiverer dll for Windows (du kan ikke installere OpenCV på en bærbar datamaskin).

Trinn 1: Koble til El Intel Edison og La PC

Conectando El Intel Edison og La PC
Conectando El Intel Edison og La PC
Conectando El Intel Edison og La PC
Conectando El Intel Edison og La PC
Conectando El Intel Edison og La PC
Conectando El Intel Edison og La PC

Mer om maskinvare Intel Edison for podemos som inneholder følgende presentasjoner:

  • La placa de desarrollo creada for Intel compatible with Arduino (es la que usamos en este tutorial).
  • Una placa mini-breakout (con el móudlo ya montado) compatible con la expansion Board de Arduino.
  • El Eddons egen suksess (det er krav til fabrikat som er nåværende for PCB).

Du kan bruke ekspansjonskompatibel til Arduino debido a la flexibilidad y kompatibilidad para interactuar con otros actuadores y sensores. 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.

Du kan også koble til en USB-mikro-del av Arduino Edison og en bærbar datamaskin. 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 permanentecerá apagado.

USB-mikro-B-modulen kan brukes med 2 numre som kan brukes for alimentasjon av 5V, programbruk for IDE-arduino, leksjoner/eskort og flashminne og bruk av USB og USB.

El-kontakt USB micro-B-pakke med nummer 3 kan brukes for SSH og nåværende Edison.

Du kan også installere drivere for Windows. Posteriormente revisamos en El Administrasjon av disposisjoner for Windows og rekonstruksjon av porter:

  • El puerto COM virtuell av Intel Edison
  • El Puerto seriell COM av Intel Edison.

Habiendo revisado lo anterior, procedemos al siguiente paso, flashear el Intel Edison con the image of Linux.

Trinn 2: Flash og gjør El Intel Edison

Flash og El Intel Edison
Flash og El Intel Edison
Flash og El Intel Edison
Flash og El Intel Edison
Flash og El Intel Edison
Flash og El Intel Edison

Du kan også bruke en datamaskin til å koble til en flash -versjon av Linux. For bruk av blitsprodusenter som kan brukes av Intel: Flash Tool Lite og USB-mikro-B-marcado med nummer 2 (ver paso anterior).

1. Abre la herramienta "Flash Tool Lite" og tilkobling til PC.

2. Klikk på Examinar and busca el archivo.zip de la imagen de Linux que descargaste (edison-image-ww25.5-15.zip).

3. Klikk på "Start to flash", som gir deg et elektronisk arkiv og en del av Linux for Intel Edison.

4. Se for pedirá desconectar y volver a conectar el cable USB -kabel 2, farlig.

5. El rectangulito de carga debe de llegar al 100%. ¡Listo! Du blinker raskt fra Intel Edison.

Du kan installere "Linux Yocto Poky" for å installere Intel Edison.

Trinn 3: Konfigurering av El Intel Edison (Primeros Pasos)

Konfigurasjon av El Intel Edison (Primeros Pasos)
Konfigurasjon av El Intel Edison (Primeros Pasos)
Configurando El Intel Edison (Primeros Pasos)
Configurando El Intel Edison (Primeros Pasos)
Konfigurasjon av El Intel Edison (Primeros Pasos)
Konfigurasjon av 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 er en klient SSH og telnet, som kan lastes opp av Simon Tatham for Windows. Vamos a usar la conexión serial aqui.

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

Abre PUTTY og luego, selecciona el botón "Serial" and ingresa el número de puerto COM del Edison. Posteriormente anota la velocidad en baudios a la que se comunicara el Edison con tu equipo, write 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. Du kan se en liste over de haremene og konsollen for konfigurering av disposisjoner:

  • Konfigurasjon av en nombre para el dispsotivo.
  • Konfigurer en kontroll for para root.
  • Conectar el Edison for en rød WIFI.

Cuando te conectas por primera vez se te pedira hace logge inn. Skriv "root" og trykk "Enter". Veras "root@edison" kan kjenne betydningen av en encuentras en el rootio root.

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

configure_edison --setup

Presiona enter y posteriormente escribe un password and nuevamente presiona enter. Luego te pedira un nombre para el dispositivo (que en realidad es un alias mas que un nombre), write un nombre y da enter.

Endelig kan du konfigurere en rød WIFI. Du kan også oppdage og gjenkjenne WIFI -enheter, og du kan også angi et rødt nummer for å oppdage et passord for å redigere passordet for rødt, skrive inn og skrive inn.

¡Listo! Ya debes de estar conectado al WIFI. Du kan bare bruke en hoste med hostame og IP -adresse. Asimismo puedes revisar más parámetros de tu conexión escribiendo:

ifconfig

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

Du kan også angi en liste over konfigurasjoner av Entorno de Desarrollo Integrado (IDE) for empezar con la programación. En nuestro caso será … ¡Python!

Trinn 4: Usando Python for programmerer Edison

Usando Python for programmerer Edison
Usando Python for programmerer Edison
Usando Python for programmerer El Edison
Usando Python for programmerer El Edison

El Edison er et program for bruk av IDE de Arduino, for å stoppe Python.

På samme måte som Python og maskinvare, trenger vi bruk av biblioteca "MRAA" for å kommunisere med GPIO. MRAA es un biblioteca esqueleto de bajo nivel for comunicarse con los GPIO's and plataformas GNU / Linux y es compatible with casi todas las placas basadas and Linux utilizadas. Para ello procederemos a installer.

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

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

Posteriormente guarda el archivo and actualiza the list of paquetes description:

opkg oppgradering

Ahora vamos a installal git, beskriv:

opkg installere git

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

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

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

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

Ahora ejecutaremos los siguientes comandos:

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

¡Listo! Ya debemos de tener configurado correctamente Python en el 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" y "Puerto" escribimos la IP de tu edison (revisalo escribiendo ifcong en tu edison), el usuario (root), du passordet 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 archivo "prueba.py" al folder "root".

Ahora kan beskrive og beskrive Edison y en la ubicación "root" el comando siguiente para ejecutar el código.

python prueba.py

Observasjoner av LED 13 inkluderer 2 milisegundos. y se apaga 2 milisegundos.

¡Felicidades! Har ejecutado correctamente un código en phyton para tu Edison. Ahora ya estamos listo fora processar imágenes and nuestro Edison usando Python, but antes escribiremos and probaremos el código de Python for detar rostros and nuestra PC …

Trinn 5: Detectando Rostros Con OpenCV

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

El Intel Edison gir ingen grensesnitt for videoopptak, for å kunne skrive ut en beskrivelse av Python -funksjonen og for å kunne fullføre en korrigering av nåværende PC og posteriorment til 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 installere Python og OpenCv en nuestras computadora. For å se en realisar estos pasos en nuestra PC:

  1. Last ned Python 2.7 og nyeste PC
  2. Last ned OpenCV versjon 3.3.0
  3. Ve al directorio en donde se extrajo OpenCv y posicionate no C: / opencv / build / python / 2.7 / x86 y copia el arhivo cv2.pyd al directorio de python C: / Python27 / Lib / site-packages.
  4. Instala pip, mas info en el siguiente enlace
  5. Installer numpy escribiendo el comando de python -m pip install --user numpy

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

  • import numpy
  • importer cv2

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

Ahora kan laste ned arkivet "3_detectaRostrosOjos.py", abre una terminal de Python og tu PC og corre el programa. Este programa vamos debe de activar la webcam de 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, ¡felicidades! Det kan også brukes til å korrigere en ny Intel Edison og aktivere en motor for å oppdage en rostro.

Trinn 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. 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 processamiento la cambiamos a los formatos HSV o YIQ. En este proceso, cada píxel es clasificado como un píxel del color de la piel o un píxel sin color de la piel. Razón detrás del uso de otros modelos de color que no sean RGB es que a veces RGB no puede differir los colores de la piel and diferentes condiciones de luz. Esto mejora significativamente al usar otros modelos de color. Nosotros no usaremos este algoritmo

Funksjonsbasert anerkjennelse: 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 de detección de objetos propuesto por Paul Viola y Michael Jones en su artículo Hurtig gjenkjenning av objekter ved hjelp av en forsterket kaskade av enkle funksjoner "del año 2001. Es un enfoque basado en el aprendizaje automático en donde la" cascade function "se entrena contra un conjunto of imágenes positiveas and negativeas. El algoritmo requiere de muchas imágenes positiveas (en nuestro caso estas son imágenes de caras) y muchas imágenes negativeas (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 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, etc. La biblioteca OpenCV contiene un conjunto de clasificadores predefinidos. Estos están disponibles en la carpeta C: / opencv / build / etc / haarcascades

Trinn 7: Oppdag Rostros Con OpenCV og Intel Edison

Detectando Rostros Con OpenCV og Intel Edison!
Detectando Rostros Con OpenCV og Intel Edison!
Detectando Rostros Con OpenCV og Intel Edison!
Detectando Rostros Con OpenCV og Intel Edison!

Vi kan også installere biblioteca og openCV for Intel Edison, for å skrive en beskrivelse av terminalen i Edison:

  • opkg oppdatering
  • opkg oppgradering
  • opkg installer python-numpy python-opencv

Verifica que todo se haya instalado correctamente. Para ello ve a la terminal de Python desde tu arduino Edison og skriv:

  • import numpy
  • importer cv2

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

Vi kan også konfigurere videoen til Intel Edison for å få mer informasjon. En smarttelefon kan laste ned appen "IP -webkamera". Du kan også få tilgang til en app med "Ajustes de IP Webcam"/"Preferencias de video"/"Resolución de las fotos" og dejamos el parámetro a 640x480. Vi kan også bruke en Intel Edison -enhet som ikke kan brukes til å prosessere bilder med en RAM -posisjon (1 GB RAM).

En app "IP -webkamera" klikker deretter på den dårligere "Iniciar servidor". Du kan også bruke smarttelefonen til å laste ned en kode (for å vise et bilde) og for en IP -adresse. Abonner på retningslinjene for en IP -adresse for å kunne koble til PC -en og videoene våre.

Ahora descarga el código "tres.py" y el archivo "haarcascade_frontalface_default.xml" (Los dos códigos los puedes encontrar en los archivos del paso actual) en tu PC. Usa FileZilla for pasar ambos códigos and una misma localidad de tu Edison (por ejemplo en el folder root) y ejecuta el código de python con el comando:

python tres.py

Fra terminalen til Edison kan du lese "Dame la dirección IP" og sette inn IP som "IP -webkamera" (es la misma que escribiste en el navegador de tu PC for conectarte) y dale enter. 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 detecta un rostro tu Intel Edison debe de hacer girar el servomotor.

Anbefalt: