Tabla de contenido:
- Suministros
- Paso 1: Conectando El Intel Edison a La PC
- Paso 2: Flasheando El Intel Edison
- Paso 3: Configurando El Intel Edison (Primeros Pasos)
- Paso 4: Usando Python Para Programar El Edison
- Paso 5: Detectando Rostros Con OpenCV
- Paso 6: Antes De Llegar Al Código En Edison… ¡Teoria De Funcionamiento
- Paso 7: Detectando Rostros Con OpenCV En Intel Edison
- Paso 8: Muéstramelo Funcionando…
Video: Detección De Rostros Con Arduino Intel Edison: 8 Pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:41
El procesamiento de imágenes o la visión por computadora es uno de esos campos que requieren 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 tratados por un ordenador. Actualmente, los mejores algoritmos para tales tareas se basan en redes neuronales convolucionales, las cuales generalmente procesan millas 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 desarrolladores que aportan, actualizan y mantienen el código, ya cuenta 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. un procesamiento y una imagen de 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.
Suministros
El material que se requiere para llevar a cabo un tutorial de cabo este es:
HARDWARE
- 1 computadora portátil / PC.
- 1 Placa Arduino Intel Edison.
- 2 cables USB micro-B.
- 1 smartphone con la aplicación "IP Webcam".
- 1servomotor sg 90.
SOFTWARE
- Herramienta Intel Flash Lite V5.2.4
- Masilla
- FileZilla FTP
- Imágen Yocto Poky (V25.5-15)
- Código VS
- Python 2.7
- OpenCV Versión 3.3.0
- Numpy
- Librería 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 falten al momento de instalar OpenCV en tu laptop).
Paso 1: 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 con Arduino (es la que usamos en este tutorial).
- Una placa mini-breakout (con el móudlo ya montado) compatible con la placa de expansión de Arduino.
- El módulo Intel Edison en su estado nativo (Aquí requerimos fabricar nuestra propia PCB).
Yo usare la placa de expansión compatible con Arduino debido a la flexibilidad y compatibilidad para interactuar con otros actuadores y sensores. El Intel Edison, a diferencia de las otras placas de Arduino como UNO o MEGA corre un sistema operativo, en este caso una imágen Linux llamada Yocto.
Tal y como se muestra en la imagen 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 número 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.
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 instalen los drivers de Windows. Posteriormente revisamos en el Admsinistrador de dispositivos de Windows si reconoce dos puertos:
- El puerto COM virtual del Intel Edison
- El puerto serial COM del Intel Edison.
Habiendo revisado lo anterior, procedemos al siguiente paso, flashear el Intel Edison con la imagen de Linux.
Paso 2: Flasheando El Intel Edison
Una vez que tu dispositivo esta correctamente detectado por la PC, debes flashearlo con una imagen de Linux. Para esto usaremos la herramienta flash provista por Intel: Flash Tool Lite y el conector USB micro-B marcado con el número 2 (ver paso anterior).
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 en "Start to flash", la herramienta se descomprimirá automáticamente el archivo y empezará a subir la imagen de Linux en el Intel Edison.
4. Se te pedirá desconectar y volver a conectar el cable USB 2, hazlo.
5. El rectangulito de carga debe de llegar al 100%. ¡Listo! Ya flasheaste tu Intel Edison.
Ahora que ya tienes instalada la imagen "Linux Yocto Poky" ya podemos empezar a configurar el Intel Edison.
Paso 3: 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 es un cliente SSH y telnet, desarrollado originalmente por Simon Tatham para la 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 que estas en la terminal de PuTTY puedes ejecutar comandos para configurar tu Edison. Lo siguiente es un listado de 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 a una red WIFI.
Cuando te conectas por primera vez se te pedira hace iniciar sesión. 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 enter y luego escribe una contraseña 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 y detectará las redes WIFI disponibles, escribe el 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 ingresa y te muestra los parámetros de tu red WIFI.
Ya estamos listos para configurar el Entorno de Desarrollo Integrado (IDE) para empezar con la programación. En nuestro caso será… ¡Python!
Paso 4: 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 pines GPIO. MRAA es una biblioteca esqueleto de bajo nivel para comunicarse con los GPIO en plataformas GNU / Linux y es compatible con 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 todos
- src / gz edison
- src / gz core2-32
Posteriormente guarda el archivo y actualiza la lista de paquetes escribiendo:
actualización de opkg
Ahora vamos a instalar git, escribe:
opkg instalar git
Ahora vamos a instalar un repositorio de GitHib en el Edison:
clon de git https://github.com/drejkim/edison-scripts.git ~ / edison-scripts
Ahora añadiremos ~ / edison-scripts al PATH:
- echo 'exportar RUTA = $ RUTA: ~ / edison-scripts' >> ~ /.profile
- fuente ~ /.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 adjunto 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 contraseña 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" en la carpeta "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! Has ejecutado correctamente un código en phyton para tu Edison. Ahora ya estamos listos para procesar imágenes en nuestro Edison usando Python, pero antes escribiremos y probaremos el código de Python para detectar rostros en nuestra PC…
Paso 5: 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 nuestra computadora. Por lo que vamos a realizar estos pasos en nuestra PC:
- Descargar Python 2.7 en nuestra PC
- Descargar OpenCV versión 3.3.0
- Ve al directorio 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.
- Instala pip, mas info en el siguiente enlace
- Instala 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 enter:
- importar numpy
- importar 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 de Python en tu PC y corre el programa. Este programa vamos a activar la cámara web de tu PC y detectar rostros y ojos tal y como en la imagen, 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 detecta un rostro.
Paso 6: 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. La 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
Reconocimiento basado en funciones: 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. Detección rápida de objetos usando una cascada mejorada de características simples "del año 2001. Es un enfoque basado en el aprendizaje automático en donde la" función de cascada "se entrena contra un conjunto de imágenes positivas 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). A partir de ello vamos a entrenar el modelo para extraer las características de cada imagen. 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 contiene un conjunto de clasificadores predefinidos. Estos están disponibles en la carpeta C: / opencv / build / etc / haarcascades
Paso 7: 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:
- actualización de opkg
- actualización de opkg
- opkg instalar python-numpy python-opencv
Verifica que todo se haya correctamente. Para ello ve a la terminal de Python desde tu arduino Edison y escribe:
- importar numpy
- importar 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 aplicación "IP Webcam". Hecho lo anterior acceda a la aplicación 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 (1GB de RAM).
En la aplicación "IP Webcam" da clic en el botón inferior "Iniciar servidor". Ahora, desde tu smartphone debes de poder ver la cámara 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:
python tres.py
Desde la terminal de tu Edison debes 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 hacer girar el servomotor.
Recomendado:
Detección, entrenamiento y reconocimiento de rostros Opencv: 3 pasos
Detección, entrenamiento y reconocimiento de rostros de Opencv: OpenCV es una biblioteca de visión por computadora de código abierto que es muy popular para realizar tareas básicas de procesamiento de imágenes como desenfocar, mezclar imágenes, mejorar la calidad de imagen y video, establecer umbrales, etc. Además del procesamiento de imágenes, Prov
Sombrero parlante con detección de sacudidas con Circuit Playground Express: 12 pasos (con imágenes)
Shake Detecting Talking Hat con Circuit Playground Express: ¡Este sencillo y rápido tutorial te enseña cómo hacer un sombrero parlante! Respondería con una respuesta cuidadosamente procesada cuando "hicieras" una pregunta, y tal vez podría ayudarte a decidir si tienes alguna preocupación o problema. En mi clase de Wearable Tech, yo
Detección de rostros en tiempo real en RaspberryPi-4: 6 pasos (con imágenes)
Detección de rostros en tiempo real en RaspberryPi-4: En este Instructable vamos a realizar la detección de rostros en tiempo real en Raspberry Pi 4 con Shunya O / S usando la Biblioteca Shunyaface. Puede lograr una velocidad de fotogramas de detección de 15-17 en RaspberryPi-4 siguiendo este tutorial
¡Haga una puerta de apertura y cierre automático con detección automática con Arduino !: 4 pasos
¡Haga una puerta que se abra y se cierre automáticamente con detección automática con Arduino !: ¿Alguna vez ha querido hacer que su puerta se abra automáticamente como en las películas de ciencia ficción? Ahora puede seguir este Instructable. En este instructable construiremos una puerta que se puede abrir y cerrar automáticamente sin que usted toque la puerta. Sensores ultrasónicos o
Detección de rostros y ojos con Raspberry Pi Zero y Opencv: 3 pasos
Detección de rostros y ojos con Raspberry Pi Zero y Opencv: en este instructivo, voy a mostrar cómo puedes detectar rostros y ojos usando raspberry pi y opencv. Este es mi primer instructable en opencv. Seguí muchos tutoriales para configurar un CV abierto en frambuesa, pero siempre me encontré con algunos errores. De todos modos yo