Tabla de contenido:

Cámara AI para Raspberry Pi / Arduino: 7 pasos
Cámara AI para Raspberry Pi / Arduino: 7 pasos

Video: Cámara AI para Raspberry Pi / Arduino: 7 pasos

Video: Cámara AI para Raspberry Pi / Arduino: 7 pasos
Video: Si robas mi casa te veran 250.000 personas - Sistema de camaras barato 2024, Noviembre
Anonim
Image
Image

Si ha estado siguiendo las noticias recientemente, hubo una explosión de empresas emergentes que desarrollaron chips para acelerar la inferencia y el entrenamiento de algoritmos de aprendizaje automático (aprendizaje automático). Sin embargo, la mayoría de esos chips aún están en desarrollo y no es algo que su fabricante promedio pueda tener en sus manos. La única excepción significativa hasta ahora fue Intel Movidius Neural Compute Stick, que está disponible para su compra y viene con un buen SDK. Tiene algunas desventajas significativas, a saber, el precio (alrededor de 100 USD) y el hecho de que viene en formato de memoria USB. Es genial si desea usarlo con una computadora portátil o Raspberry PI, pero ¿qué sucede si desea hacer algunos proyectos de reconocimiento de imágenes con Arduino? ¿O Raspberry Pi Zero?

Paso 1: Sipeed MAix: IA en el borde

Sipeed MAix: IA en el borde
Sipeed MAix: IA en el borde

No hace mucho tiempo tuve en mis manos la placa de desarrollo Sipeed M1w K210, que tiene una CPU RISC-V de 64 bits de doble núcleo y cuenta con un KPU (Procesador de red neuronal) integrado, diseñado específicamente para acelerar CNN para el procesamiento de imágenes. Puedes leer más detalles aquí.

El precio de esta placa, francamente, me sorprendió, ¡es solo 19 USD por una placa de desarrollo AI-on-the-edge completa con soporte para Wi-Fi! Sin embargo, hay una advertencia (por supuesto que la hay): el firmware de micropython para la placa todavía está en desarrollo y, en general, no es demasiado fácil de usar a partir de ahora. La única forma de acceder a todas sus funciones en este momento es escribir su propio código C integrado o modificar algunas demostraciones existentes.

Este tutorial explica cómo usar el modelo de detección de clase Mobilenet 20 para detectar los objetos y enviar el código del objeto detectado a través de UART, desde donde puede ser recibido por Arduino / Raspberry Pi.

Ahora, este tutorial asume que está familiarizado con Linux y los conceptos básicos de compilación de código C. Si escuchar esta frase te hizo sentir un poco mareado:), salta al Paso 4, donde subes mi binario prediseñado a Sipeed M1 y omites la compilación.

Paso 2: Prepare su entorno

Prepare su entorno
Prepare su entorno

Usé Ubuntu 16.04 para la compilación y carga de código C. Es posible hacer eso en Windows, pero yo mismo no lo probé.

Descargue RISC-V GNU Compiler Toolchain, instale todas las dependencias necesarias.

git clone --recursivo

sudo apt-get install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev

Copie la cadena de herramientas descargada en el directorio / opt. Después de eso, ejecute los siguientes comandos

./configure --prefix = / opt / kendryte-toolchain --with-cmodel = medany

hacer

Agregue / opt / kendryte-toolchain / bin a su PATH ahora.

¡Ya está listo para compilar el código!

Paso 3: compila el código

Compilar el código
Compilar el código

Descarga el código de mi repositorio de github.

Descargar el SDK independiente de Kendryte K210

Copie la carpeta / kpu de mi repositorio de github a la carpeta / src en el SDK.

Ejecute los siguientes comandos en la carpeta SDK (¡no en la carpeta / src!)

mkdir build && cd build

cmake.. -DPROJ = nombre_proyecto -DTOOLCHAIN = / opt / kendryte-toolchain / bin && make

donde project_name es el nombre de su proyecto (depende de usted) y -DTOOLCHAIN = debe apuntar a la ubicación de su cadena de herramientas risc-v (la descargó en el primer paso, ¿recuerda?)

¡Excelente! Ahora, con suerte, verá la compilación finalizada sin errores y tendrá un archivo.bin que puede cargar.

Paso 4: carga del archivo.bin

Cargar el archivo.bin
Cargar el archivo.bin

Ahora conecte su Sipeed M1 a la computadora y desde la carpeta / build ejecute el siguiente comando

sudo python3 isp_auto.py -d / dev / ttyUSB0 -b 200000 kpu.bin

Donde kpu.bin es el nombre de su archivo.bin

La carga generalmente demora entre 2 y 3 minutos, después de que se haga, verá la placa ejecutando la detección de 20 clases. El último paso para nosotros es conectarlo a Arduino mega o Raspberry Pi.

!!! ¡¡¡Si acaba de llegar del Paso 2 !

Ejecute el siguiente comando desde la carpeta donde clonó mi repositorio de github

sudo python3 isp_auto.py -d / dev / ttyUSB0 -b 200000 kpu_bin.bin

La carga suele tardar entre 2 y 3 minutos, después de que haya terminado, verá la placa ejecutando la detección de 20 clases. El último paso para nosotros es conectarlo a Arduino mega o Raspberry Pi.

Paso 5: Conexión a Arduino

Conectando a Arduino
Conectando a Arduino
Conectando a Arduino
Conectando a Arduino
Conectando a Arduino
Conectando a Arduino

Usé el Arduino Mega con Seeed Studio Mega Shield, por eso soldé un conector Grove a la placa Sipeed M1. Sin embargo, puede usar cables de puente y conectar Sipeed M1 directamente a Arduino Mega, siguiendo este diagrama de cableado.

Después de eso, cargue el boceto de camera.ino y abra el monitor serial. Cuando apuntas la cámara a diferentes objetos (la lista de 20 clases está en el boceto) debería mostrar el nombre de la clase en el monitor serial.

¡Felicidades! ¡Ahora tiene un módulo de detección de imágenes en funcionamiento para su Arduino!

Paso 6: Conexión a Raspberry Pi

Conexión a Raspberry Pi
Conexión a Raspberry Pi
Conexión a Raspberry Pi
Conexión a Raspberry Pi

Usé el sombrero Grove Pi + para Raspberry Pi 2B, pero nuevamente, al igual que con Arduino, puede conectar directamente Sipeed M1 a la interfaz UART de Raspberry Pi siguiendo este diagrama de cableado.

Después de que inicie camera_speak.py y apunte la cámara a diferentes objetos, el terminal emitirá el siguiente texto "Creo que es" y también si tiene altavoces conectados, dirá esta frase en voz alta. Bastante genial, ¿no?

Paso 7: Conclusión

Estamos viviendo tiempos muy emocionantes, con la inteligencia artificial y el aprendizaje automático penetrando en todas las áreas de nuestras vidas. Espero con ansias el desarrollo en esta área. Me mantengo en contacto con el equipo de Sipeed y sé que están desarrollando activamente una envoltura de micropython para todas las funciones necesarias, incluida la aceleración de CNN.

Cuando esté listo, es muy probable que publique más instructivos sobre cómo usar sus propios modelos de CNN con micropython. ¡Piense en todas las aplicaciones interesantes que puede tener para una placa que puede ejecutar sus propias redes neuronales de procesamiento de imágenes por este precio y con esta huella!

Recomendado: