Kazalo:

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

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

Video: Detección De Rostros Con Arduino Intel Edison: 8 korakov
Video: Detección y seguimiento de rostros con OpenCV + Python + Arduino Uno 2024, Julij
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 el fin de producir informació numérica numérica ser tratados por un ordenador. Dejansko, los mejores algoritmos para tales tareas se basan en redes neuronales convolucionales, las cuales generalmente procesan miles de imágenes de rostros humanos mediana el uso de aprendizaje superviado 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 in desarrolladores que aportan, actualizan ydi centi 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 en C ++ orientado a objecttos, este soporta múltiples idiomas y nosotros vamos a usar Python como nuestro lenguaje de programción para realizar la detección de rostros. un procesamiento y una imágen de salida. Intel Edison nima povezave med video posnetki, ki jih je treba izpisati s skriptom Python na osebnem računalniku. Luego, después del funcionamiento exitoso del código en la PC, modify elmos 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.

Zaloge

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

HARDWARE

  • 1 prenosni računalnik/računalnik.
  • 1 Placa Arduino Intel Edison.
  • 2 kabla USB micro-B.
  • 1 aplikacija za pametni telefon "IP spletna kamera".
  • 1 servomotor sg 90.

PROGRAMSKA OPREMA

  • Orodje Intel Flash Lite V5.2.4
  • PuTTy
  • FileZilla FTP
  • Imágen Yocto Poky (V25.5-15)
  • Koda VS
  • Python 2.7
  • OpenCV različica 3.3.0
  • Numpy
  • Libreria MRAA
  • Gonilniki za Windows za namestitev Intel Edison (Se descargan en cuanto se conecta la placa).
  • Archivos dll de Windows (Prenesite prenosni računalnik OpenCV en tu prenosnega računalnika).

1. korak: 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

Več o strojni opremi Intel Edison o nastavitvah in predstavitvah:

  • La placa de desarrollo creada por Intel compatible con Arduino (es la que usamos en este tutorial).
  • Mini-breakout (con el móudlo ya montado), združljiv z razširitveno ploščo de la Arduino.
  • Nameščen je Intel Edison in je natisnjen (Aquí requerimos fabricar nuestra propia PCB).

Yo usare la placa de expansión compatible with Arduino debido a la flexibilidad y compatiblebilidad para interactuar con otros actuadores y sensores. El Intel Edison, različica, ki je nameščena na Arduinu kot UNO ali MEGA, je operacijski sistem, ki je namenjen Linuxu Yocto.

Če želite, da so vmesniki povezani s kablom USB micro-B del Arduino Edison in prenosnim računalnikom. 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 permanentcerá apagado.

Priključek USB micro-B marcado s številko 2 se lahko uporabi za napajanje 5 V, program uporabljate za IDE Arduino, lectura/escritura in pomnilnik flash in uporabite Ethernet in USB.

Priključek USB micro-B marcado con el número 3 se uporablja za dostop do SSH-ja in novejšega Edisona.

Ne moremo namestiti nobenih gonilnikov za Windows. Posteriormente revisamos en el Admsinistrador de dispositivos de Windows si reconoce dos puertos:

  • Na voljo je COM virtualni del Intel Edison
  • Je serijski COM del Intel Edison.

Najprej pregledajte spodaj, postopek al siguiente paso, bliskovit prikaz Intel Edison s sliko Linux.

2. korak: 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

Ne veste, kaj je na voljo za popravljanje na PC -ju, ki se prikaže z Linuxom. Za več informacij o bliskovni bliskavici, ki je na voljo za Intel: Flash Tool Lite in priključek USB micro-B, označen s številko 2 (spredaj).

1. Abre la herramienta "Flash Tool Lite" y conecta tu dispositivo a la 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. Después de hacer click en "Start to flash", la herramienta descomprimirá automáticamente el archivo y empezará and subir la imágen de Linux in Intel Edison.

4. Priključite deskonektor in kabel USB kabla 2, hazlo.

5. El pravokotnik de carga debe de llegar al 100%. Listo! Najnovejši Intel Edison.

Če želite namestiti "Linux Yocto Poky" in prilagoditi konfigurator Intel Edison, namestite ta program.

3. korak: Konfigurirajte El Intel Edison (Primeros Pasos)

Konfigurirajte El Intel Edison (Primeros Pasos)
Konfigurirajte El Intel Edison (Primeros Pasos)
Konfigurirajte El Intel Edison (Primeros Pasos)
Konfigurirajte El Intel Edison (Primeros Pasos)
Konfigurirajte El Intel Edison (Primeros Pasos)
Konfigurirajte 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 ena od strank SSH in telneta, ki je originalno nameščen Simonu Tathamu za okna iz sistema Windows. Vamos a usar la conexión serijski aqui.

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

Abre PUTTY y luego, selected boton "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, 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 listado tareas que haremos en la consola para configurar el dispositivo:

  • Konfigurator un nombre para el dispsotivo.
  • Configurar una contraseña para root.
  • Priključek Edison in rdeč WIFI.

Cuando te conectas por primera vez se te pedira hace log in. Vpišite "root" in pritisnite "Enter". Veras "root@edison" lokalno pomeni que te encuentras en el Directorio root.

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

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), escribe un nombre y da enter.

Končna konfiguracija pedikarja z rdečim WIFI -jem. El móudlo escaneara el lugar y detectará las redes WIFI disponibles, escribe 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! Brezplačno povežete WIFI. Te mostrará una pantalla en el navegador con tu hostame y tu dirección IP. Asimismo puedes revisar más parámetros de tu conexión escribiendo:

ifconfig

Če želite vstopiti v redni WIFI, morate vnesti več informacij.

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

4. korak: 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 našo programsko opremo, ki uporablja IDE de Arduino, gre za embargo in uporablja Python.

Če želite vmesnik za Python in strojno opremo, morate uporabiti biblioteko "MRAA" za medsebojni vmesnik GPIO. 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 uselizadas. Para ello procederemos in 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 vse
  • src/gz edison
  • src/gz core2-32

Posteriormente guarda el archivo y actualiza la list de paquetes escribiendo:

opkg nadgradnja

Ahora vamos a instalar git, opišite:

opkg install git

Ahora vamos in 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 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 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 geslo 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

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

¡Felicidade! Je ejecutado correctamente un código en phyton para tu Edison. Ahora ya estamos listo para processar imágenes en nuestro Edison usando Python, pero antes escribiremos y probaremos el código de Python para detectar rostros en nuestra PC…

5. korak: Detectando Rostros Con OpenCV

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

El Intel Edison ne povezuje vmesnika s videoposnetki, ki jih je treba prikazati v probar que el código que escribiremos v Python funciona la la perfección probaremos el código para correr en nuestra PC y posteriormente lo 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 instalado Python y OpenCv en nuestras computadora. Por lo que vamos a realizar estos pasos en nuestra PC:

  1. Prenesite Python 2.7 na novi računalnik
  2. Prenesite različico OpenCV 3.3.0
  3. Vse direktorije in donde se uporabljajo za OpenCv in so na voljo v C: / opencv / build / python / 2.7 / x86 in kopijo v arhivu cv2.pyd v direktoriju python C: / Python27 / Lib / site-packages.
  4. Instala pip, info info en el siguiente enlace
  5. Namestitev numpy -ja, ecribiendo el comando de python -m pip install -uporabnik numpy

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

  • uvoz numpy
  • uvoz 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 of Python en tu PC and corre el program. Este program 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! Pasemos al siguiente paso que es correr este código desde nuestro Intel Edison in aktivirajte motor in pasos cada vez que detecte un rostro.

6. korak: 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 obraza. Gre za embargo, o katerem lahko razpravljate o 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. La razón detrás del uso de otros modelos de color que no sean RGB es que a veces RGB no puede distinkris los colores de la piel en diferentes condiciones de luz. Esto mejora signifikationalmente al usar otros modelos de color. Nosotros no usaremos este algoritmo

Priznavanje na podlagi lastnosti: 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 " Hitro odkrivanje objektov z uporabo okrepljene kaskade enostavnih funkcij "del año 2001. Es un enque basado en el aprendizaje automático en donde la" cascade function "se ujema z unconnto de imágenes pozitivas y negativas. 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). Partr 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 itd. La biblioteca OpenCV vsebuje un unanto de clasificadores predefinidos. Estos están ima na voljo en la carpeta C: / opencv / build / etc / haarcascades

7. korak: Detectando Rostros Con OpenCV in Intel Edison

Detectando Rostros Con OpenCV in Intel Edison!
Detectando Rostros Con OpenCV in Intel Edison!
Detectando Rostros Con OpenCV in Intel Edison!
Detectando Rostros Con OpenCV in Intel Edison!

Vamos in instalar la biblioteca numpy y openCV en el Intel Edison, para ello escribimos los siguientes comandos desde la terminal del Edison:

  • posodobitev opkg
  • opkg nadgradnja
  • opkg namestite python-numpy python-opencv

Verifica que todo se haya instalado correctamente. Para ello ve a la terminal de Python desde tu arduino Edison in napišite:

  • uvoz numpy
  • uvoz cv2

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

Ahora vamos a configurar la fuente de video de donde el Intel Edison leera los rostros. S pametnega telefona prenesite aplikacijo "IP spletna kamera". Predhodno dostopajte do aplikacije in nastavite "Nastavitev spletne kamere IP"/"Prednost videoposnetkov"/"Resolución de las fotos" in dejanske nastavitve v velikosti 640x480. Es aqui cuando comienzas a notar que el Intel Edison simplemente no está destinado para el procesamiento de imágenes debido a la poca cantidad de RAM que posee (1GB de RAM).

V aplikaciji "IP spletna kamera" kliknite in kliknite na spodnji "začetni strežnik". Ahora, desde tu smartphone debes de poder ver la camara encendida (como si fuera a tomar foto) in una dirección IP abajito. Odločite se za usmerjanje IP -ja na spletnem mestu la PC in deberas ver el video en vivo, en mi caso salgo yo sentado trabajando.

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

Desde la terminal de tu Edison debes un versa mensaje "Dame la dirección IP" aquí inserta la IP que te to "IP Webcam" (es la misma que escribiste en el navegador de tu PC para 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 in webcam de tu celular. Asimismo si odkriti in rostro tu Intel Edison debe de hacer girar el servomotor.

Priporočena: