Table des matières:

Detección De Rostros Con Arduino Intel Edison: 8 Étapes
Detección De Rostros Con Arduino Intel Edison: 8 Étapes

Vidéo: Detección De Rostros Con Arduino Intel Edison: 8 Étapes

Vidéo: Detección De Rostros Con Arduino Intel Edison: 8 Étapes
Vidéo: Getting Started with Edison Part 3: Blinking an LED from the Console 2024, Juillet
Anonim
Détection De Rostros Avec Arduino Intel Edison
Détection De Rostros Avec 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 metodos para adquirir, procesar, analizar y comprender las imágenes del mundo real con el fin de produc o simbó informa numérica ser tratados por un ordenador. Actualmente, los mejores algoritmos para tales tareas se basan en redes neuronales convolucionales, las cuales generalmente miles de imágenes de rostros humanos mediante el uso de aprendizaje supervisado para entrenar el algoritmo que identificara 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 desarrollien adores ya cuy aportan, actuel 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 en una aplicación de unágenesamiento de procesamiento de un procesamiento y una imágen de salida. Intel Edison no tiene une interfaz de video, por lo que ejecutaremos el script de Python en nuestro 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.

Fournitures

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

MATÉRIEL

  • 1 ordinateur portable/PC.
  • 1 place Arduino Intel Edison.
  • 2 câbles USB micro-B.
  • 1 smartphone avec l'application "IP Webcam".
  • 1 servomoteur sg 90.

LOGICIEL

  • Outil Intel Flash Lite V5.2.4
  • Mastic
  • FileZilla FTP
  • Image Yocto Poky (V25.5-15)
  • Code VS
  • Python 2.7
  • OpenCV Version 3.3.0
  • Numpy
  • Libreria MRAA
  • Pilotes de Windows pour le module Intel Edison (Se descargan en cuanto se connecta la placa).
  • Archivos dll de Windows (Pueda ser que te falten al momento de instalar OpenCV en tu laptop).

Étape 1: Connexion 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

El módulo de hardware Intel Edison lo podemos encontrar en tres presentaciones:

  • La placa de desarrollo creada por Intel compatible avec Arduino (es la que usamos en este tutorial).
  • Una placa mini-breakout (con el móudlo ya montado) compatible avec la carte d'extension de Arduino.
  • El módulo Intel Edison en su estado nativo (Aquí requerimos fabricar nuestra propia PCB).

Vous utilisez la place d'extension compatible avec Arduino debido a la flexibilidad y compatibilidad para interactuar with 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 une image Linux llamada Yocto.

Tal y como se muestra en la imágen conectaremos los dos cables USB micro-B del Arduino Edison a nuestra laptop. 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 permanecerá apagado.

El conector USB micro-B marcado con el numero 2 se utiliza para alimentación de 5V, programación utilizando el IDE Arduino, lectura/escritura en la memoria flash y uso de Ethernet a través de USB.

Le connecteur USB micro-B avec le numéro 3 est utilisé pour accéder à SSH et à Edison.

Una vez conectado dejemos que instalen los drivers de Windows. Postiormente revisamos en el Admsinistrador de dispositivos de Windows si reconoce dos puertos:

  • Le port COM virtuel d'Intel Edison
  • Le port série COM d'Intel Edison.

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

Étape 2: Flasheando El Intel Edison

Flashando El Intel Edison
Flashando El Intel Edison
Flashando El Intel Edison
Flashando El Intel Edison
Flashando El Intel Edison
Flashando El Intel Edison

Una vez que votre dispositif est correctement détecté par le PC, debes flashearlo avec une image de Linux. Pour utiliser la herramienta flash fourni par Intel: Flash Tool Lite et le connecteur USB micro-B avec le numéro 2 (ver paso anterior).

1. Ouvrez la fenêtre "Flash Tool Lite" et connectez-vous à votre ordinateur.

2. Cliquez sur Examinar y busca el archive.zip de la imagen de Linux que descargaste (edison-image-ww25.5-15.zip).

3. Después de hacer clic en "Start to flash", la herramienta descomprimirá automáticamente el archivo y empezará a subir la imágen de Linux en el Intel Edison.

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

5. El rectangulito de carga debe de llegar al 100%. Listo ! Tu flashes sur Intel Edison.

Ahora que vous avez installé l'image "Linux Yocto Poky" que vous pouvez utiliser pour configurer Intel Edison.

Étape 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, ahora configuraremos el dispositivo, para ello vamos a usar la terminal PuTTY. PuTTY est un client SSH et telnet, conçu à l'origine par Simon Tatham pour la plate-forme 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 correspondantiente 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. Postiormente 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 in la consola para configurar el dispositivo:

  • Configurer un nombre pour le dispsotivo.
  • Configurar una contraseña para root.
  • Conectar el Edison a un WIFI rouge.

Cuando te conectas por primera vez te pedira hace connectez-vous. Écrivez "root" y presiona "Enter". Veras "root@edison" lo cual significa que te encuentras en el directory root.

Ahora que ya te encuentras listo para teclear comandos, écris:

configure_edison --setup

Presiona entrez y posteriormente écrivez un mot de passe et nouvellement presiona entrez. 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 WIFI rouge. 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 ! Ya debes de estar conectado al 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

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

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

Étape 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, necesitamos usar la biblioteca "MRAA" para interactuar con los pins GPIO. MRAA est une bibliothèque de niveau inférieur pour la communication avec les plates-formes GPIO et GNU / Linux et est compatible avec toutes les applications basées sur Linux. Para ello procederemos a instalarla.

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

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

Postiormente guarda el archivo y actualiza la lista de paquetses escribiendo:

mise à niveau opkg

Ahora vamos a instalar git, écrivez:

opkg installer git

Ahora vamos a 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 ~/.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 ") en utilisant 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), tu password y finalmente en el campo del puerto escribiremos 22, ya que es el que generalmente se plea para conexiones SSH.

Una vez conectado transfiere el archive "prueba.py" al dossier "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.

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

Étape 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 une 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 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. Télécharger Python 2.7 sur PC
  2. Télécharger OpenCV version 3.3.0
  3. Ve al directory en donde se extrajo OpenCv y posicionate en C:\opencv\build\python\2.7\x86 y copia el arhivo cv2.pyd al directory de python C:\Python27\Lib\site-packages.
  4. Instala pip, mas info en el siguiente enlace
  5. Instala numpy escribiendo el commando 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:

  • importer 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 descarga el archivo "3_detectaRostrosOjos.py", ouvre un terminal de Python sur PC et corre el programa. Este programa vamos debe de activar la webcam de tu PC y detectar rostros y ojos tal y como in the 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.

Étape 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. L'entrada de este algoritmo suele ser una imagen en formato de colores RGB, mientras que en la etapa de procesamiento 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 distinguir los colores de la piel en diferentes condiciones de luz. Esto mejora significativamente al usar otros modelos de color. Nosotros no usaremos este algoritmo

Reconnaissance basée sur les fonctionnalités: 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 Détection rapide d'objets à l'aide d'une cascade amplifiée de fonctionnalités simples " depuis l'année 2001. Il s'agit d'une information basée sur l'apprentissage automatique et d'une " fonction cascade " entrena contre un ensemble d'images positives et négatives. 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). 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 contient un ensemble de classifications prédéfinies. Estos están disponibles en la carpeta C:\opencv\build\etc\haarcascades

Étape 7: Détectez les Rostros avec OpenCV et 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 instalar la biblioteca numpy y openCV en el Intel Edison, para ello escribimos los siguientes comandos desde la terminal del Edison:

  • mise à jour opkg
  • mise à niveau opkg
  • opkg installer python-numpy python-opencv

Vérifiez que todo se haya instalado correctamente. Para ello ve a la terminal de Python desde tu arduino Edison et écrivez:

  • importer numpy
  • importer 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. En tu smartphone descarga la app "IP Webcam". Hecho lo anterior accède à la app y ve a "Ajustes de IP Webcam"/"Preferencias de video"/"Resolución de las fotos" y dejamos el parámetro a 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 (1 Go de RAM).

Dans l'application "IP Webcam" cliquez sur le bouton inférieur "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 archive "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:

python 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) 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.

Conseillé: