Innehållsförteckning:

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

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

Video: Detección De Rostros Con Arduino Intel Edison: 8 steg
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 processamiento 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, processar, analizar and comprender las imágenes del mundo real con el fin the producir information informaion numérica o simbólan para ser tratados por un ordenador. Actualmente, 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 identifiera 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 och desarrolladores que aportan, actualizan y mantan 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 en 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 processamiento y una imágen de salida. Intel Edison har inga gränssnitt för video, för att kunna utföra skript från Python och nu till 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.

Tillbehör

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

HÅRDVARA

  • 1 bärbar dator/dator.
  • 1 Placa Arduino Intel Edison.
  • 2 kablar USB micro-B.
  • 1 smartphone med appen "IP -webbkamera".
  • 1 servomotor sg 90.

PROGRAMVARA

  • Intel Flash -verktyg Lite V5.2.4
  • Spackel
  • FileZilla FTP
  • Imágen Yocto Poky (V25.5-15)
  • VS -kod
  • Python 2.7
  • OpenCV -version 3.3.0
  • Knasig
  • Libreria MRAA
  • Windows -drivrutiner för Intel Edison (kan laddas ner och sammanfattas).
  • Arkiverar dll för Windows (det går inte att installera OpenCV för din bärbara dator).

Steg 1: Anslut El Edison till La PC

Conectando El Intel Edison och La PC
Conectando El Intel Edison och La PC
Conectando El Intel Edison och La PC
Conectando El Intel Edison och La PC
Conectando El Intel Edison och La PC
Conectando El Intel Edison och La PC

Mer hårdvara Intel Edison för poddar kan innehålla och presentera följande:

  • La placa de desarrollo creada por Intel compatible with Arduino (es la que usamos en este tutorial).
  • Una placa mini-breakout (con el móudlo ya montado) kompatibel con la expansion Board de Arduino.
  • Elmodulo Intel Edison and su estado nativo (Aquí requerimos fabricar nuestra propia PCB).

Du kan använda expansionskompatibel med 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 imagen Linux llamada Yocto.

Du kan också använda en USB-mikro-B del Arduino Edison till en bärbar dator. 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.

Elanslutning USB-mikro-B-enhet med nummer 2 kan användas för 5V-alimentation, programanvändning för IDE-arduino, föreläsningar/minneskort och USB-mätningar.

Elanslutning USB micro-B marcado con el número 3 kan användas för anslutning till SSH och nu Edro.

Du kan också installera drivrutiner för Windows. Posteriormente revisamos en El Admsinistrador de dispositivos de Windows and reconoce dos puertos:

  • El puerto COM virtuell från Intel Edison
  • El Puerto seriell COM med Intel Edison.

Habiendo revisado lo anterior, procedemos al siguiente paso, flashear el Intel Edison con la imagen de Linux.

Steg 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

Om du vill ha en korrekt upptäckt av en PC, kommer flashearlo med en bild från Linux. För användning av flashminne som tillhandahålls av Intel: Flash Tool Lite och USB-mikro-B-märkare med nummer 2 (ver anterior).

1. Abre la herramienta "Flash Tool Lite" och anslutning till din dator.

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

3. Klicka på "Börja blinka", här kan du skapa en automatisk och arkivering av Linux och Intel Edison.

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

5. El rectangulito de carga debe de llegar al 100%. ¡Listo! Du kan bläddra i Intel Edison.

Du kan installera "Linux Yocto Poky" för att installera Intel Edison.

Steg 3: Konfigurera 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, ahora configuraremos el dispositivo, para ello vamos a usar la terminal PuTTY. PuTTY är en klient SSH och telnet, desarrollado originalmente av Simon Tatham för plattformar Windows. Vamos a usar la conexión serial aqui.

Antes de abrir la terminal de PuTTY, abre el "Administrador de dispositivos" och 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 y luego, selecciona el botón "Serial" e 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.

Du kan också använda en terminal för PuTTY som kan användas för att konfigurera Edison. Här kan du se vilka listor som har harem och en konsol för konfigurering av dispositioner:

  • Konfigurator un nombre para el dispsotivo.
  • Konfigurerar en kontroll för para root.
  • Conectar el Edison för en röd WIFI.

Cuando te conectas por primera vez se te pedira hace logga in. Skriv "root" och presiona "Enter". Veras "root@edison" ser ut som en betydelse som du kan använda för en root -root.

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

configure_edison --setup

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

Finalmente te pedira configurar una red WIFI. Du kan även hitta och redigera WIFI -funktioner, ange ett antal röda upptäckter för att upptäcka ett lösenord för att lösa lösenordet för rött, skriva ut och skriva in.

¡Listo! Ya debes de estar conectado al WIFI. Du kommer att kunna använda en webbadress med värdnamn och IP -adress. 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.

Ya estamos listo para configurar el Entorno de Desarrollo Integrado (IDE) för empezar con la programación. En nuestro caso será … ¡Python!

Steg 4: Usando Python för programmeraren El Edison

Usando Python för programmeraren El Edison
Usando Python för programmeraren El Edison
Usando Python för programmeraren El Edison
Usando Python för programmeraren El Edison

El Edison är ett program som använder oss av IDE de Arduino, för att göra Python -embargo.

Alla tratar med Python och hårdvara, kräver användningen av biblioteca "MRAA" för att interagera med GPIO. MRAA es un biblioteca esqueleto de bajo nivel para comunicarse con los GPIO's and plataformas GNU / Linux y es compatible con casi todas las placas basadas and Linux utilizadas. Para ello procederemos a instalarla.

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 alla
  • src/gz edison
  • src/gz core2-32

Posteriormente guarda el archivo and actualiza la lista de paquetes beskriver:

opkg uppgradering

Ahora vamos a instalar git, skriv:

opkg installera 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
  • källa ~/.profile

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 lösenord 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 escribe, desde tu Edison y en la ubicación "root" el comando siguiente para ejecutar el código.

python prueba.py

Observera att LED 13 innehåller 2 milisegundos. y se apaga 2 milisegundos.

¡Felicidades! Har ejecutado correctamente un código en phyton para tu Edison. Här kan du se en lista över processbilder och nuestro Edison usando Python, men det finns också en beskrivning av program och en del av Python för detektorer och datorer …

Steg 5: Detectando Rostros Con OpenCV

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

El Intel Edison kan inte användas för videoöverföring, för att vi ska kunna skriva ut en Python -funktion och en perfekt funktion för att kunna korrigera en ny dator och en efterföljande version av Edison.

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

Antes de empezar necesitamos tener installera Python och OpenCv en nuestras computadora. Om du vill ha en ny dator eller en ny dator:

  1. Ladda ner Python 2.7 och nuestra PC
  2. Ladda ner OpenCV version 3.3.0
  3. Du kan också använda extraCC och C: / opencv / build / python / 2.7 / x86 och kopiera el arhivo cv2.pyd för python C: / Python27 / Lib / site-paket.
  4. Instala pip, mas info en el siguiente enlace
  5. Instalera 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 y da enter:

  • importera numpy
  • importera cv2

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

Ahora descarga el archivo "3_detectaRostrosOjos.py", abre una terminal de Python en tu PC och 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 också göras att det är rätt att korrigera det nuvarande Intel Edison -systemet och en motor som kan användas för att identifiera en rostro.

Steg 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 ansiktsbehandling. 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. Vi kan använda färgmodeller som inte är färgade utan att RGB -enheterna kan användas för att RGB inte ska kunna skiljas från olika färger. Esto mejora significativamente al usar otros modelos de color. Nosotros no usaremos este algoritmo

Funktionsbaserat erkännande: 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 Snabb föremålsdetektering med hjälp av en förstärkt kaskad av enkla funktioner "del år 2001. Es un enfoque basado en el aprendizaje automático en donde la" cascade function "se entrena contra un conjunto de imágenes positiveas and negativeas. El algoritmo requiere de muchas imágenes positivas (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

Steg 7: Upptäck Rostros Con OpenCV och Intel Edison

Detectando Rostros Con OpenCV och Intel Edison!
Detectando Rostros Con OpenCV och Intel Edison!
Detectando Rostros Con OpenCV och Intel Edison!
Detectando Rostros Con OpenCV och Intel Edison!

Vi kan också installera biblioteca och openCV för Intel Edison, för att få en beskrivning av terminalerna i Edison:

  • opkg uppdatering
  • opkg uppgradering
  • opkg installera python-numpy python-opencv

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

  • importera numpy
  • importera cv2

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

Vi kan också konfigurera videon för Intel Edison för mer information. En smartphone laddar ner appen "IP -webbkamera". Du kan gå till en app med en "Ajustes de IP Webcam"/"Preferencias de video"/"Resolución de las fotos" och dejamos el parámetro a 640x480. Det är möjligt att använda en dator där Intel Edison förenklar inga processer för bildförändringar av RAM -minnet (1 GB RAM).

En la app "IP -webbkamera" och klicka på el boton inferior "Iniciar servidor". Ahora, desde tu smartphone debes de poder ver la camara encendida (como si fuera a tomar foto) y una dirección IP abajito. Prenumerera på din IP -adress för att kunna ta del av en dator och videor för alla videor och videor.

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 para 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

Ställ in terminalen för din Edison debes de ver un mensaje "Dame la dirección IP" aquí inserta la IP que te da "IP Webcam" (es la misma que escribiste en el navegador de tu PC para conectarte) y dale enter. Vi gör alla rättigheter för "Rostro detectado" en terminal de tu Edison och "Rostro no detectado" och baserar oss på en rostro och en webbkamera. Asimismo si se detecta un rostro tu Intel Edison debe de hacer girar el servomotor.

Rekommenderad: