Tabla de contenido:
- Paso 1: Sipeed MAix: IA en el borde
- Paso 2: Prepare su entorno
- Paso 3: compila el código
- Paso 4: carga del archivo.bin
- Paso 5: Conexión a Arduino
- Paso 6: Conexión a Raspberry Pi
- Paso 7: Conclusión
Video: Cámara AI para Raspberry Pi / Arduino: 7 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
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
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
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
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
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
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
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:
Cámara CCTV con módulo de cámara para portátil antiguo NodeMCU + (con y sin usar Blynk): 5 pasos
Cámara CCTV con módulo de cámara para portátil antiguo NodeMCU + (con y sin Blynk): ¡Hola, chicos! En este instructivo, les mostraré cómo usé el módulo de cámara de una computadora portátil vieja y el nodeMCU para hacer algo similar a CCTV
La cámara web más sencilla como cámara de seguridad: detección de movimiento e imágenes enviadas por correo electrónico: 4 pasos
Cámara web más sencilla como cámara de seguridad: detección de movimiento e imágenes enviadas por correo electrónico: ya no es necesario descargar o configurar el software para obtener imágenes de detección de movimiento desde su cámara web a su correo electrónico; simplemente use su navegador. Utilice un navegador Firefox, Chrome, Edge u Opera actualizado en Windows, Mac o Android para capturar la imagen
CÁMARA DE UNICORNIO - Cámara Raspberry Pi Zero W NoIR de 8 MP: 7 pasos (con imágenes)
CÁMARA DE UNICORNIO - Raspberry Pi Zero W NoIR 8MP Cámara Build: Pi Zero W NoIR 8MP Camera BuildThis Instructable fue creado para ayudar a cualquiera que quiera una cámara infrarroja o una cámara portátil realmente genial o una cámara portátil Raspberry Pi o simplemente quiera divertirse, jejeje . Este es el más asequible y configurab
Estabilizador de cámara para ENV2 u otros teléfonos con cámara: 6 pasos
Estabilizador de cámara para ENV2 u otros teléfonos con cámara: ¿Alguna vez quisiste hacer un video pero solo tienes un teléfono con cámara? ¿Alguna vez ha estado grabando un video con un teléfono con cámara pero no puede mantenerlo quieto? ¡Bueno, este es el instructivo para ti
Agregue un conector de sincronización de PC a un cable Ttl Nikon Sc-28 (use la configuración automática para un flash en la cámara y disparar flashes fuera de la cámara): 4 pasos
Agregue un conector de sincronización de PC a un cable Ttl Nikon Sc-28 (use la configuración automática para un flash en la cámara y un disparo fuera de la cámara): en este instructivo, le mostraré cómo quitar uno de esos molestos conectores TTL patentados de 3 pines en el lateral de un cable TTL de cámara Nikon SC-28 y sustitúyalo por un conector de sincronización de PC estándar. esto le permitirá utilizar un flash dedicado, s