Talaan ng mga Nilalaman:

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

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

Video: Detección De Rostros Con Arduino Intel Edison: 8 Hakbang
Video: Detección y seguimiento de rostros con OpenCV + Python + Arduino Uno 2024, Hulyo
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 investigación debido a que involucra métodos para adquirir, procesar, analizar y comprender las imágenes del mundo real con el fin de prodir información numérica o simbólica para que pued ser tratados por un ordenador. Ang aktwal na, los mejores algorithitmos para sa tales tareas se basan en redes neuronales convolucionales, las cuales generalmente procesan miles de imágenes de rostros humanos mediante el uso de aprendizaje supervisado para sa entrenar el algoritmo que identificara el objeto buscado. Sin embargo, walang vamos a meternos en tantos lios en este itinuturo ng 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 menenen 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últiple idiomas y pluralros vamos a usar Python como nuestro lenguaje de programación para realizar la detección de rostros. Típicamente, una aplicación de procesamiento de imágenes ti imadagen un procesamiento y una imágen de salida. Ang Intel Edison ay walang unang interfaz de video, kung saan maaari mong ilabas ang script ng Python at nuestro PC. Luego, después del funcionamiento exitoso del código en la PC, modificaremos el código para mag-iwas kay 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.

Mga gamit

Ang mga materyal na kinakailangan para makapag-aral sa isang tutorial na tutorial na ito:

HARDWARE

  • 1 laptop / PC.
  • 1 Placa Arduino Intel Edison.
  • 2 cable USB micro-B.
  • 1 smartphone con la app na "IP Webcam".
  • 1servomotor sg 90.

SOFTWARE

  • Ang tool ng Intel Flash na Lite V5.2.4
  • PuTTy
  • FileZilla FTP
  • Imágen Yocto Poky (V25.5-15)
  • VS Code
  • Python 2.7
  • OpenCV Versión 3.3.0
  • Numpy
  • Libraryeria MRAA
  • Mga Driver para sa Windows para sa Intel Edison.
  • Mga Archivos dll de Windows (Pueda ser que te falten al momento de installar OpenCV en tu laptop).

Hakbang 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

Ang pinakamataas na hardware ng Intel Edison ay nag-encode ng mga presentasyon:

  • Sa pamamagitan ng desarrollo creada ng Intel tugma sa Arduino (es la que usamos en este tutorial).
  • Una placa mini-breakout (ayon sa iyo) na tumutugma sa pagpapalawak ng Board de Arduino.
  • Ang mga sumusunod na Intel Edison en su estado nativo (Kinakailangan ng aking tela ng PCB).

Yo usare la placa de expansión compatible with Arduino debido a la flexibility and kompatibilitas para makipag-ugnay sa otros actuadores at sensores. Ang El Intel Edison, isang diferencia de la otras placas de Arduino como UNO o MEGA corre un sistema operativo, en este caso una imágen Linux llamada Yocto.

Tungkol sa iyo ay maaari kang magdagdag ng mga kable ng USB micro-B del Arduino Edison isang nuestra laptop. Mag-iwan ng 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 permanecerá apagado.

Ang konektor ng USB micro-B marcado ay nasa 2 bilang isang paraan para sa 5V, programa sa paggamit ng IDE Arduino, lektura / escritura para sa memoria flash at uso ng Ethernet na isang USB drive.

El conector USB micro-B marcado con el número 3 se utiliza para acceder por SSH a nuestro Edison.

Una vez conectado dejemos que se installen los mga driver ng Windows. Posteriormente revisamos en el Admsinistrador de dispositivos de Windows para makilala ang mga talento:

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

Habiendo revisado lo anterior, mga pamamaraan sa sigurente paso, flashear el Intel Edison con la imagen de Linux.

Hakbang 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 sa iyong pag-iwas sa tamang pagtuklas ng iyong PC, mga debate sa isang imahe ng Linux. Para sa mga gumagamit ng flash ng flash sa Intel: Flash Tool Lite y el conector USB micro-B marcado con el numero 2 (ver paso anterior).

1. Abre la herramienta "Flash Tool Lite" at maaari mong gamitin ang isang 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 clic tl "Magsimula sa pag-flash", upang mai-scan ang automáticamente el archivo y empezará a subir la imágen ng Linux sa el Intel Edison.

4. Tingnan mo ang iyong koneksyon at volver isang conectar el cable USB cable 2, hazlo.

5. El rectangulito de carga debe de llegar al 100%. ¡Listo! Ya flasheaste tu Intel Edison.

Narito ang iyong pag-install ng imágen na "Linux Yocto Poky" na mga podemos empezar a configurar ng Intel Edison.

Hakbang 3: 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)
Configurando El Intel Edison (Primeros Pasos)

Después de flashear con éxito tu Edison, kung saan configuraremos el dispositivo, para sa iyong telepono at gamitin ang terminal PuTTY. Maaari mong mai-install ang SSH at telnet, na inilagay ang orihinal na porsyento ni Simon Tatham para sa plataforma Windows. Vamos a usar la conexión serial aqui.

Antes de abrir la terminal de PuTTY, abre el "Administrador de dispositivos" y 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, escribe 115200. Finalmente presiona abrir para empezar la comunicación con el dispositivo.

Una vez est est en la terminal de PuTTY puedes ejecutar comandos para configurar tu Edison. Narito ang un listado tareas que haremos en la consola para configurar el dispositivo:

  • Configurar un nombre para el dispsotivo.
  • Configurar una contraseña para root.
  • Conectar el Edison isang una pulang WIFI.

Cuando te conectas por primera vez se te pedira hace log in. Escribe "root" y presiona "Enter". Veras "root @ edison" lo cual significancea que te encuentras en el directorio root.

Narito ang mga listahan ng listahan para sa mga comandos, escribe:

configure_edison --setup

Ipasok ang iyong 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.

Finalmente te pedira configurar una red WIFI. El móudlo escaneara el lugar at detará 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 and presiona enter.

¡Listo! Ya debes de estar conectado al WIFI. Ang 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

Pumasok si Presiona sa mga parámetros de tu red WIFI.

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

Hakbang 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 se puede programar usando el IDE de Arduino, sin embargo aqui usaremos Python.

Al tratar con Python y hardware, kailangan mong gamitin ang biblioteca na "MRAA" para makipag-ugnay sa mga pines na GPIO. Ang MRAA ay un biblioteca esqueleto de bajo nivel para comunicarse con los GPIO's en plataformas GNU / Linux at magkatugma sa casi todas las placas basadas en 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 lahat
  • src / gz edison
  • src / gz core2-32

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

pag-upgrade ng opkg

Ahora vamos a instalar 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 añadiremos ~ / edison-script al PATH:

  • echo 'export PATH = $ PATH: ~ / edison-script' >> ~ /.profile
  • mapagkukunan ~ /.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 sa mga gumagamit ng 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 (ugat), tu password 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.

sawa prueba.py

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

¡Felicidades! Ay may ejecutado correctamente un código en phyton para sa Edison. Ahora ya estamos listo para sa mga imensa ng imahe sa nuestro Edison usando Python, ngunit ang mga sumusunod na ulat tungkol sa Python para makita ang mga rosas sa PC …

Hakbang 5: Detectando Rostros Con OpenCV

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

El Intel Edison no tiene una interfaz de salida de video, por lo que para probar que el código que escribiremos en Python funciona a la perfección probaremos el código para magwawasto sa iyong PC at 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 nekesitamos tener installado Python y OpenCv en nuestras computadora. Sa pamamagitan ng isang realizar estos pasos en nuestra PC:

  1. Descargar Python 2.7 para sa PC
  2. Descargar OpenCV bersyon 3.0.0
  3. Sa direktor ng en donde se extrajo OpenCv y posicionate en 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. Instala numpy escribiendo el comando de python -m pip install --user numpy

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

  • import numpy
  • import cv2

Ambos comandos respivamente deben de respondder ningún mensaje de error (osea nada), nagpapahiwatig ng iyong bibliotecas se han importado correctamente.

Ahora descarga el archivo "3_detectaRostrosOjos.py", abre una terminal de Python en tu PC y corre el programa. Este programa vamos debe de activar la webcam de tu PC y detect 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 y activar un motor a pasos cada vez que detecte un rostro.

Hakbang 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 pangmukha. 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. Ang entrada de este algorithitmo suele ser una imagen en formato de colores RGB, na nagsasagawa ng etapa de procesamiento la cambiamos a los formatos HSV o YIQ. Para sa mga ito, maaari mong gawin ang mga ito upang mai-download ang kulay ng la piel o un píxel sin color ng la piel. Ang mga razn detrás del uso de otros modelos de color na walang sean RGB ay mayroong isang RGB na walang pagkakaiba sa pagkakaiba-iba ng mga color de la piel at iba pang mga condiciones de luz. Mag-isip ng mga bisita sa bawat modelo ng kulay ng kulay. Nosotros no usaremos este algorithitmo

Pagkilala na nakabatay sa tampok: Esta es la técnica que si usaremos para este itinuturo. Sa pamamagitan ng mga buscamos ciertas características, at basahin ang isang eso hacemos el reconocimiento. El empleo de "haar tampok-based cascade" para sa 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 " Mabilis na Pagtuklas ng Bagay gamit ang isang Boosted Cascade ng Mga Simpleng Tampok 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). Ang isang partir de ello vamos isang entrenar el modelo para sa extraer las características de cada imágen. Para este propósito, se utilizan para sa "haar tampok" na kung saan maaari kang magtanong. 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. Ang biblioteca OpenCV contiene un conjunto de clasificadores predefinidos. Estos están disponibles en la carpeta C: / opencv / build / etc / haarcascades

Hakbang 7: Detectando Rostros Con OpenCV En Intel Edison

Detectando Rostros Con OpenCV En Intel Edison!
Detectando Rostros Con OpenCV En Intel Edison!
Detectando Rostros Con OpenCV En Intel Edison!
Detectando Rostros Con OpenCV En Intel Edison!

Vamos a installar la biblioteca numpy y openCV en el Intel Edison, para sa mga gumagamit ng mga sigurado na comandos desde la terminal del Edison:

  • update ng opkg
  • pag-upgrade ng opkg
  • opkg install ng python-numpy python-opencv

Tiyak na magagawa mong mag-install ng tama. Para sa iyong terminal de Python desde tu arduino Edison at escribe:

  • import numpy
  • import cv2

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

Ahora vamos a configurar la fuente de video de donde el Intel Edison leera los rostros. Sa iyong smartphone ay makikita mo ang app na "IP Webcam". Narito ang anterior accede a la app at ve a "Ajustes de IP Webcam" / "Preferencias de video" / "Resolution de las fotos" y dejamos el parámetro a 640x480. Ang mga ito ay nai-update sa isang Intel Edison simplemente no está destinado para el procesamiento de imágenes debido a la poca cantidad de RAM que posee (1GB de RAM).

Sa app na "IP Webcam" at mag-click sa el boton na mas mababa "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. Escribe dicha dirección IP en tu navegador web de la PC y 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 folder root) y ejecuta el código de python con el comando:

sawa tres.py

Desde la terminal de tu 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) and 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.

Inirerekumendang: