Tabla de contenido:

Demostraciones de OpenMV de Sipeed MaiX Bit - Visión por computadora: 3 pasos
Demostraciones de OpenMV de Sipeed MaiX Bit - Visión por computadora: 3 pasos

Video: Demostraciones de OpenMV de Sipeed MaiX Bit - Visión por computadora: 3 pasos

Video: Demostraciones de OpenMV de Sipeed MaiX Bit - Visión por computadora: 3 pasos
Video: ¿Qué puede pasar? #shorts 2024, Mes de julio
Anonim
Image
Image

Este es el segundo artículo de la serie sobre Sipeed AI en la plataforma de microcontroladores Edge. Esta vez escribiré sobre MaiX Bit (enlace a Seeed Studio Shop), una placa de desarrollo más pequeña y lista para usar. Sus especificaciones son muy similares a las de MaiX Dock, la placa que usé para el último tutorial, ya que usan el mismo chip, Kendryte K210.

Usaremos firmware de micropython para probar algunas demostraciones de OpenMV. Aquí está la descripción de la página de inicio de OpenMV:

El proyecto OpenMV trata de crear módulos de visión artificial de bajo costo, extensibles y con tecnología Python, y tiene como objetivo convertirse en el “Arduino de la visión artificial”.… Python hace que trabajar con algoritmos de visión artificial sea mucho más fácil. Por ejemplo, el método find_blobs () en el código busca manchas de color y devuelve una lista de objetos de 8 valores que representan cada mancha de color encontrada. En Python, iterar a través de la lista de objetos devueltos por find_blobs () y dibujar un rectángulo alrededor de cada mancha de color se hace fácilmente con solo dos líneas de código.

Entonces, a pesar de que MaiX Bit presenta un acelerador de red neuronal dedicado, a veces puede ser más fácil usar algoritmos codificados de OpenMV para hacer el trabajo o usarlos uno junto al otro.

Algunos casos de uso que me vienen a la mente son:

1) Detección de línea para bot seguidor de línea

2) Detección de semáforos con detección de círculos y colores

3) Uso de la detección de rostros para encontrar los rostros para el reconocimiento de rostros (con DNN)

Repositorio de Github para este artículo

Paso 1: Flash del firmware de Micropython

Conectarse a MaiX Bit
Conectarse a MaiX Bit

En primer lugar, necesitaremos actualizar el firmware de micropython en nuestra placa. Se incluye un binario precompilado en el repositorio de github para este artículo, junto con kflash.py (una utilidad flash). Si desea compilar el firmware a partir del código fuente, simplemente descargue el código fuente de https://github.com/sipeed/MaixPy, instale la cadena de herramientas y compile el código fuente en el archivo maixpy.bin. Las instrucciones de construcción detalladas se pueden encontrar aquí.

Flash el archivo binario con

sudo python3 kflash.py kpu.bin

Después de parpadear correctamente, continúe con el siguiente paso.

Paso 2: Conéctese a MaiX Bit

Ahora nuestro MaiX Bit debería ser accesible a través de una conexión en serie USB con una velocidad de transmisión de 115200. Puede utilizar su software favorito para la comunicación en serie o simplemente los comandos cat y echo, lo que se adapte a sus necesidades. Estaba usando la pantalla para la comunicación en serie y lo encuentro muy conveniente.

El comando para establecer una sesión de comunicación serial con pantalla es

sudo pantalla / dev / ttyUSB0 115200

donde / dev / ttyUSB0 es la dirección de su dispositivo.

Es posible que deba presionar el botón de reinicio en su microcontrolador para ver el mensaje de saludo y el indicador del intérprete de Python.

Paso 3: ¡Ejecute las demostraciones

Ahora puede acceder al modo de copia presionando Ctrl + E y copiar y pegar los códigos de demostración. Para ejecutarlos, presione Ctrl + D en modo de copia.

Si no desea grabar los videos, debe comentar las líneas de grabación de video. De lo contrario, el código generará una excepción si no hay una tarjeta SD insertada

Aquí hay breves descripciones de cada demostración:

Buscar círculos: utiliza la función find_circles de OpenMV. Necesita más ajustes para su aplicación específica, particularmente el umbral (controla qué círculos se detectan desde la transformación de hough. Solo se devuelven los círculos con una magnitud mayor o igual que el umbral) y los valores r_min, r_max.

Buscar rectángulos: utiliza la función find_rects de OpenMV. Puede jugar con el valor de umbral, pero el valor que tengo en la demostración funciona bastante bien para encontrar rectángulos.

Encontrar caras, encontrar ojos: utiliza la función find_features con Haar Cascades para detectar ojos y caras frontales en la imagen. Puede jugar con los valores de umbral y escala para obtener el equilibrio correcto entre velocidad y precisión.

Buscar líneas infinitas: utiliza la función find_lines para encontrar todas las líneas infinitas en la imagen usando la transformación hough.

Detectar color: usa la función get_statistics para obtener el objeto percentil y luego convierte los valores medios de la tupla LAB en una tupla de valores RGB. Yo mismo escribí este ejemplo y funciona bastante bien, pero tenga en cuenta que los resultados de la detección de color se verán afectados por las condiciones de luz ambiental.

¡Puedes encontrar muchas más demostraciones interesantes en el repositorio github de OpenMV! En su mayoría son compatibles con MaiX Bit micropython, lo único que debe recordar es agregar sensor.run (1) después de configurar el formato de imagen y el tamaño de fotograma.

Feliz experimentación con código OpenMV. Si tiene alguna pregunta o desea compartir algunos de sus resultados interesantes, no dude en comunicarse conmigo en Youtube o LinkedIn. Ahora, discúlpeme, ¡iré a hacer algunos robots!

Recomendado: