Spisu treści:

Detección De Rostros Con Arduino Intel Edison: 8 kroków
Detección De Rostros Con Arduino Intel Edison: 8 kroków

Wideo: Detección De Rostros Con Arduino Intel Edison: 8 kroków

Wideo: Detección De Rostros Con Arduino Intel Edison: 8 kroków
Wideo: Detección y seguimiento de rostros con OpenCV + Python + Arduino Uno 2024, Lipiec
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 reallica con elacimbé fin de fin ser tratados por un ordenador. Actualmente, los mejores algoritmos para 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 entrenar el algoritmo que identificara el objeto bus 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 aporty dearrolladores, con un rico set de carcaterisiticas que podemos implementar facilmente para la detección y reconocimiento de imagegenes.

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. un procesamiento y una obraz z salida. Intel Edison no tiene una 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.

Kieszonkowe dzieci

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

SPRZĘT KOMPUTEROWY

  • 1 laptop/komputer.
  • 1 Placa Arduino Intel Edison.
  • 2 kable USB micro-B.
  • 1 smartfon z aplikacją „IP Webcam”.
  • 1 serwomotor sg 90.

OPROGRAMOWANIE

  • Narzędzie Intel Flash Lite V5.2.4
  • Kit
  • FileZilla FTP
  • Zdjęcie Yocto Poky (V25.5-15)
  • Kod VS
  • Python 2.7
  • Wersja OpenCV 3.3.0
  • Numpy
  • Libreria MRAA
  • Drivers de Windows para el módulo Intel Edison (Se descargan en cuanto se conecta la placa).
  • Archivos dll de Windows (Pueda ser que te falten al momento de installar OpenCV en tu laptop).

Krok 1: Conectando El Intel Edison a La PC

Conectando El Intel Edison na PC
Conectando El Intel Edison na PC
Conectando El Intel Edison na PC
Conectando El Intel Edison na PC
Conectando El Intel Edison na PC
Conectando El Intel Edison na PC

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

  • La placa de desarrollo creada przez Intel kompatybilny z Arduino (es la que usamos en este tutorial).
  • Una placa mini-breakout (con el móudlo ya montado) kompatybilny z płytą rozszerzeń Arduino.
  • El módulo Intel Edison en su estado nativo (Aquí requerimos fabricar nuestra propia PCB).

Używasz la placa de expansión kompatybilny z Arduino debido a la flexibilidad y compatibilidad para interactuar con otros actuadores y sensores. El Intel Edison, różnica między różnymi miejscami Arduino, które są wspólne dla UNO lub MEGA działającego systemu operacyjnego, jest to przypadek obrazu z lamą systemu Linux Yocto.

Połącz się z muestra i obrazem podłączasz kable USB micro-B z Arduino Edison i laptopem Nuestra. 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.

Podłącz złącze USB micro-B z 2 numerami, które służą do zasilania 5V, obsługują programy IDE Arduino, wykłady/nauki i pamięć flash, korzystając z sieci Ethernet i portów USB.

Złącze USB micro-B podłącza się do numeru 3, który jest używany do akceleracji przez SSH i nuestro Edisona.

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

  • El porto COM wirtualny del Intel Edison
  • Port szeregowy COM del Intel Edison.

Zmieniono poprzednią wersję, postępuj zgodnie z aktualnymi procedurami, flashuj el Intel Edison z obrazem Linux.

Krok 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 vez que tu dispositivo esta poprawny wykryty na PC, debes flashearlo z imagen de Linux. Aby umożliwić korzystanie z oprogramowania flash przez Intel: Flash Tool Lite i złącze USB micro-B z numerem 2 (wcześniej).

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 clic pl "Start to flash", la herramienta descomprimirá automáticamente el archivo y empezará a subir la image de Linux en el Intel Edison.

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

5. El rectangulito de carga debe de llegar al 100%. ¡Listo! Bądź flasheste na Intel Edison.

Ahora que ya tienes instalada obraz "Linux Yocto Poky" ya podemos empezar konfigurowany przez Intel Edison.

Krok 3: Konfiguracja El Intel Edison (Primeros Pasos)

Konfiguracja El Intel Edison (Primeros Pasos)
Konfiguracja El Intel Edison (Primeros Pasos)
Konfiguracja El Intel Edison (Primeros Pasos)
Konfiguracja El Intel Edison (Primeros Pasos)
Konfiguracja El Intel Edison (Primeros Pasos)
Konfiguracja 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 jest klientem SSH i telnetem, oryginalnie zaprojektowanym przez Simona Tatham dla platformy Windows. Vamos a usar la conexión seryjny aqui.

Antes de brir la terminal de PuTTY, abre el „Administrador de dispositivos” y anota el número de puerto korespondente para el COM del Edison (brak 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 que estas en la terminal de PuTTY puedes ejecutar comandos para configurar tu Edisona. Lo siguiente es 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 to una czerwona sieć WIFI.

Zaloguj się Cuando te conectas por primera vez se te pedira hace. Napisz "root" y presiona "Enter". Veras "root@edison" lo cual significa que te encuentras en el directoryrio root.

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

configure_edison --setup

Presiona wpisz y a posteriori wypisz hasło y nuevamente presiona wejdź. Luego te pedira un nombre para el dispositivo (que en realidad es un alias mas que un nombre), opisz un nombre y da enter.

Finalmente te pedira configurar una red WIFI. 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 parametros de tu conexión escribiendo:

ifconfig

Presiona enter y te mostrará los parametros 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!

Krok 4: Usando Python Para Programar El Edison

Usando Python dla programistów El Edison
Usando Python dla programistów El Edison
Usando Python dla programistów El Edison
Usando Python dla programistów El Edison

El Edison może używać programu IDE w Arduino, z wyjątkiem embargo na używanie Pythona.

Al tratar con Python y hardware, necesitamos usar la biblioteca "MRAA" dla interakcji z pines GPIO. MRAA jest esqueleto de bajo nivel dla komunikacji z GPIO w platformach GNU/Linux i jest kompatybilny z wszystkimi innymi narzędziami do obsługi Linuksa. 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 wszystko
  • src/gz edison
  • src/gz core2-32

Postteriormente guarda el archivo yaktualiza la lista de paquetes escribiendo:

aktualizacja opkg

Ahora vamos instalarny git, opisz:

opkg zainstaluj git

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

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

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

  • echo 'export PATH=$PATH:~/edison-scripts' >> ~/.profile
  • źródło ~/.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), tu hasło 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 encende 2 milisegundos. y se apaga 2 milisegundos.

¡Felicidades! Czy 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 rostros en nuestra PC…

Krok 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 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. Pobierz Python 2.7 pl nowy PC
  2. Pobierz OpenCV wersja 3.3.0
  3. Ve al directory i donde se extrajo OpenCv y poloz w C:\opencv\build\python\2.7\x86 i kopiuj arhivo cv2.pyd al directory python C:\Python27\Lib\site-packages.
  4. Instala pip, mas info en el siguiente enlace
  5. Zainstaluj 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 wpisz:

  • importuj numer
  • importuj cv2

Ambos comandos revivamente 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 y 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! 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.

Krok 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 twarzy. 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. Entrada de este algoritmo suele ser una imagen en format de colores RGB, que en la etapa de processamiento la cambiamos a los formatos HSV lub 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 detras del rónorodne modele kolorów, które nie są w kolorze RGB, ale nie są takie same, jak RGB, nie można wyróżnić kolorów piel i różnych warunków luzu. Esto mejora significativamente al usar otros modelos de color. Nosotros no usaremos este algoritmo

Rozpoznawanie oparte na cechach: 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 detección de objetos el reconocimiento por Michael Vi Szybkie wykrywanie obiektów przy użyciu wzmocnionej kaskady prostych funkcji” del año 2001. Es un enfoque basado en el aprendizaje automático en donde la „cascade function” se entrena contra un conjunto de imagegenes positivas y negativas. El algoritmo requiere de muchas positivas (en nuestro caso estas son obrazami de caras) y muchas negativas (que no contienen images 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. La biblioteca OpenCV zawiera conjunto de clasificadores predefinidos. Estos están disponibles en la carpeta C:\opencv\build\etc\haarcascades

Krok 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 instalar la biblioteca numpy y openCV en el Intel Edison, para ello escribimos los siguientes comandos desde la terminal del Edison:

  • aktualizacja opkg
  • aktualizacja opkg
  • opkg zainstaluj python-numpy python-opencv

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

  • importuj numer
  • importuj cv2

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

Ahora vamos konfigurować fuente de video de el Intel Edison leera los rostros. En tu smartphone descarga la app "IP Webcam". Hecho lo anterior accede a la app y ve a "Ajustes de IP Webcam"/"Preferences de video"/"Resolución de las fotos" y dejamos el parametro a 640x480. Es aqui cuando comienzas a notar que el Intel Edison simplemente no está destinado para el processamiento de images debido a la poca cantidad de RAM que posee (1 GB pamięci RAM).

En la app "IP Webcam" da kliknij en el boton gorszy "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. Napisz 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 pasoctual) 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.

Zalecana: