Índice:

Detección De Rostros Con Arduino Intel Edison: 8 etapas
Detección De Rostros Con Arduino Intel Edison: 8 etapas
Anonim
Detección De Rostros Con Arduino Intel Edison
Detección De Rostros Con Arduino Intel Edison

O procesamiento de imagens ou a visão por computador é um 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 producir información numérica o simbólica para que puedan ser tratado por um ordenador. Actualmente, los mejores algoritmos para contos 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 o algoritmo que identifica o objeto buscado. Sem embargo, não vamos a meternos en tantos lios en este instructable y usaremos una biblioteca de código aberto de visión por computadora llamada OpenCV la cual gracias al arduo trabajo de la comunidad de cientificos y desarrolladores que aportan, actualizan y mantienen el código, ya cuenta com um conjunto rico de carcaterísticas que podemos implementar facilmente para a detecção e reconhecimento de imagens.

A pesar de que o OpenCV se encuentra escrita en C ++ orientado a objetos, este soporta múltiplos idiomas e nosotros vamos usar Python como novo lenguaje de programação para realizar a detecção de rostros. Típicamente, uma aplicação de procesamiento de imagens tiene uma imagem de entrada, un procesamiento y una imágen de salida. Intel Edison não tem uma interface de vídeo, para que ejecutaremos o script de Python em nosso PC. Luego, após a função exitoso do código no PC, modificar o código para correr o disco no Edison. Las cosas se aclararán cuando hagamos la implementación práctica. Nosso objetivo é realizar a detecção de rostros y, si se detectar, realizar toda a ação.

Suprimentos

O material que requerimos para aprender um cabo este tutorial es:

HARDWARE

  • 1 laptop / PC.
  • 1 Placa Arduino Intel Edison.
  • 2 cabos USB micro-B.
  • 1 smartphone com o aplicativo "IP Webcam".
  • 1servomotor sg 90.

PROGRAMAS

  • Ferramenta Intel Flash Lite V5.2.4
  • PuTTy
  • FileZilla FTP
  • Imágen Yocto Poky (V25.5-15)
  • Código VS
  • Python 2.7
  • OpenCV versão 3.3.0
  • Numpy
  • Libreria MRAA
  • Drivers do Windows para o módulo Intel Edison (Se descargan en cuanto se conecta à placa).
  • Archivos dll de Windows (pode ser que você baixe o momento de instalar o OpenCV em seu laptop).

Etapa 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

O módulo de hardware Intel Edison para encontrarmos três apresentações:

  • A placa de desarrollo criada por Intel compatível com Arduino (é o que conhecemos neste tutorial).
  • Compatível com uma placa mini-breakout (com o móvel e montado) com a placa de expansão do Arduino.
  • O módulo Intel Edison em seu estado nativo (Aquí requerimos fabricar nuestra propia PCB).

Você usa a placa de expansão compatível com o Arduino e tem a flexibilidade e compatibilidade para interagir com outros atuadores e sensores. El Intel Edison, uma diferença de todas as outras placas de Arduino como UNO ou MEGA corre um sistema operacional, neste caso um Linux llamada Yocto.

Tal e como se muestra en la imágen conectaremos los dos cabos USB micro-B del Arduino Edison um laptop nuestra. Fijate bien that el interrupor (marcado com o número 1 na imagem), este apuntando hacia abajo, se não se encuentra en dicha posição el Arduino Edison permanecerá apagado.

O conector USB micro-B marcado com o número 2 se utiliza para alimentação de 5V, programado utilizando o IDE Arduino, leitura / escritura na memória flash e uso de Ethernet a través de USB.

O conector USB micro-B marcado com o número 3 é utilizado para acessar SSH a novo Edison.

Uma vez conectado dejemos que instale os drivers do Windows. Posteriormente revisamos no Admsinistrador de dispositivos de Windows e reconoce dos puertos:

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

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

Etapa 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

Uma vez que seu dispositivo esta corretamente detectado no PC, debes flashearlo com uma imagem de Linux. Para estar usando o provedor de flash da Intel: Flash Tool Lite e o conector USB micro-B marcado com o número 2 (ver anterior).

1. Abra a ferramenta "Flash Tool Lite" e conecte seu dispositivo ao 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 em "Start to flash", la herramienta descomprimirá automaticamente o arquivo e empezará para subir a imagem do Linux no Intel Edison.

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

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

Assim que você instalar a imagem "Linux Yocto Poky", você pode configurar a configuração do Intel Edison.

Etapa 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 que possamos usar o terminal PuTTY. PuTTY é um cliente SSH e telnet, desenvolvido por Simon Tatham para a plataforma Windows. Vamos a usar la conexión serial aqui.

Antes de abrir o terminal do PuTTY, abre o "Administrador de dispositivos" e o número do porto correspondente para o COM del Edison (no virtual). Este valor lo usaremos para inicializar la comunicación.

Abre PUTTY e luego, seleciona o botão "Serial" e inclui o número de porto COM del Edison. Posteriormente anota la velocidad en baudios a la that se comunicara el Edison con tu equipo, escribe 115200. Finalmente presiona abrir para empezar la comunicación con el dispositivo.

Uma vez que estas no terminal de PuTTY puedes ejecutar comandos para configurar tu Edison. Lo siguiente é uma lista de tareas que haremos en la consola para configurar el dispositivo:

  • Configure um nombre para o dispsotivo.
  • Configure una contraseña para root.
  • Conectar el Edison um WIFI vermelho.

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

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

configure_edison --setup

Presiona entra y posteriormente escribe un password y nuevamente presiona entra. Luego te pedira um nome para o dispositivo (que na realidade é um alias mas que um nome), escreva um nome e da entrada.

Finalmente te pedira configurar um WIFI vermelho. 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! Você deve estar conectado ao WIFI. Mostra uma pantalla no navegador com seu hostame e sua direção IP. Asimismo puedes revisar más parámetros de tu conexión escribiendo:

ifconfig

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

Ya estamos listo para configurar o Entorno de Desarrollo Integrado (IDE) para empezar com a programação. Em nosso caso será… ¡Python!

Etapa 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 pode ser programado usando o IDE de Arduino, mas aqui está o uso de Python.

Al tratar com Python e hardware, precisamos usar a biblioteca "MRAA" para interagir com os pinheiros GPIO. MRAA é uma biblioteca de esqueleto de base ao nível para comunicar com os GPIO's em plataformas GNU / Linux e é compatível com todas as placas basadas em Linux utilizado. 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 all
  • src / gz edison
  • src / gz core2-32

Posteriormente, guarde o arquivo e atualize a lista de paquetes.

atualização opkg

Ahora vamos a instalar git, escribe:

opkg install git

Vamos instalar um repositório 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
  • fonte ~ /.profile

Ahora ejecutaremos los siguientes Comandos:

  • resizeBoot.sh
  • installPip.sh
  • installMraa.sh

¡Listo! Ya debemos de tener corretamente configurado Python en el Edison. Para probar lo anterior ejecutaremos o código anexado a este paso ("prueba.py") usando FileZilla. Para abrir o FileZilla no PC (Lo debiste de haber descargado) e no campo de "Servidor", "usuario", "contraseña" e "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 é el que geralmente se emplea para conexiones SSH.

Una vez conectado transfiere el archivo "prueba.py" al folder "root".

Ahora escribe, from tu Edison y en la ubicación "root" el comando siguiente para ejecutar el código.

python prueba.py

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

¡Felicidades! Tem ejecutado corretamente um código em phyton para seu Edison. Ahora ya estamos listo para procesar imágenes en nuestro Edison using Python, pero antes escribiremos y probaremos el código de Python para detectar rostros en nuestra PC…

Etapa 5: Detectando Rostros Con OpenCV

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

El Intel Edison não tem uma interface de saída de vídeo, para que pare para testar o código que escribiremos em Python funciona na perfeição para testar o código para correr em nosso PC e posteriormente para migraremos para o Edison.

Nosso objetivo é realizar a detecção de rostros y, si se detectar, realizar toda a ação.

Antes de empatar necesitamos tener instalado Python y OpenCv en nuestras computadora. Por lo que vamos realizar estos pasos en nuestra PC:

  1. Descargar Python 2.7 en nuestra PC
  2. Descargar OpenCV versão 3.3.0
  3. Ve al diretorio en donde se extrajo OpenCv y posicionate en C: / opencv / build / python / 2.7 / x86 y copia el arhivo cv2.pyd al diretorio python C: / Python27 / Lib / site-packages.
  4. Instala pip, mas info en el siguiente enlace
  5. Instala numpy escrever o comando de python -m pip install --user numpy

Para verificar que todo funciona corretamente escribe no terminal de python do seu PC e digite:

  • importar numpy
  • import cv2

Ambos os comandos, respectivamente, deben de responder ningún mensagem de erro (osea nada), indicando que as bibliotecas se han importado corretamente.

Depois de descarregar o arquivo "3_detectaRostrosOjos.py", abre um terminal de Python em seu PC e o programa correspondente. Este programa vamos debe de ativar a webcam do seu PC e detectar rostros e ojos tal e como na imagem, passar a palavra do programa presiona a tecla ESC.

Si lo lograste, ¡felicidades! Passar para o seguinte passo que correr este código desde o novo Intel Edison e ativar um motor a cada vez que detectar um rostro.

Etapa 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!

A detecção de rostros é um caso muito específico do reconhecimento 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. A entrada deste algoritmo deve ser uma imagem no formato de cores RGB, mientras que na etapa de processamento para mudar para os formatos HSV ou YIQ. Neste processo, cada píxel é classificado como um píxel da cor do piel ou um píxel da cor do piel. La razón detrás del uso de otros modelos de color that no sean RGB es that a veces RGB no puede distinguir los colores de la piel en diferentes condiciones de luz. Esto mejora completo al usar otros modelos de cor. Nosotros no usaremos este algoritmo

Reconhecimento baseado em recursos: This 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 " Detecção rápida de objetos usando uma cascata impulsionada de recursos simples "del ano 2001. Es un enfoque basado en el aprendizaje automático en donde la" function cascade "se entrena contra um conjunto de imágenes positivos y negativas. O algoritmo requer imagens de muchas positivas (en nuestro caso estas son imagens de caras) e imagens de muchas negativas (que não contém imagens de caras). A partir de ello vamos entrar o modelo para as características adicionais de cada imagem. Para este propósito, use o "recurso haar" que se mostra na figura. Cada uma das figuras es un valor único obtenido al restar la suma de píxeles debajo de um retángulo branco 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 contém um conjunto de clasificadores predefinidos. Está disponível na carpeta C: / opencv / build / etc / haarcascades

Etapa 7: Detectando Rostros Con OpenCV em Intel Edison

Detectando Rostros com OpenCV no Intel Edison!
Detectando Rostros com OpenCV no Intel Edison!
Detectando Rostros com OpenCV no Intel Edison!
Detectando Rostros com OpenCV no Intel Edison!

Vamos a instalar la biblioteca numpy y openCV no Intel Edison, para ello escribimos los siguientes comandos from la terminal del Edison:

  • atualização de opkg
  • atualização opkg
  • opkg install python-numpy python-opencv

Verifique se tudo está instalado corretamente. Para ellove a la terminal de Python desde tu arduino Edison y escribe:

  • importar numpy
  • import cv2

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

Vamos configurar a função de vídeo de donde o Intel Edison leera los rostros. En tu smartphone descarrega o app "IP Webcam". Hecho lo anterior acesse a app y ve a "Ajustes de IP Webcam" / "Preferencias de video" / "Resolución de las fotos" y dejamos el parámetro a 640x480. Está aqui cuando comienzas a notar que o Intel Edison simplemente não está destinado para o procesamiento de imagens debido a la poca cantidad de RAM que posee (1GB de RAM).

No aplicativo "IP Webcam", clique no botão inferior "Iniciar servidor". Ahora, from your smartphone debes de poder ver la camara encendida (como se fuera a tomar foto) e uma direção IP abajito. Escreva dicha dirección IP em seu navegador web do PC e deberas ver o vídeo ao vivo, em meu caso de trabalho sentado.

A seguir, descarregar o código "tres.py" e o arquivo "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 os códigos uma misma localidade de seu Edison (por ejemplo na raiz da pasta) e execute o código de python com o comando:

python tres.py

Desde o terminal de tu Edison debes de ver uma mensagem "Dame la dirección IP" aquí inserta la IP que te da "IP Webcam" (é a misma que escribiste no navegador do teu PC para conectarte) e antes de entrar. Se todo es correcto debes de ver a mensaje "Rostro detectado" no terminal de tu Edison y "Rostro no detectado" en base a si pones un rostro en la webcam de seu celular. Asimismo si se detecta un rostro tu Intel Edison debe de hacer girar el servomotor.

Recomendado: