3 puntos por GN⁺ 2024-06-26 | 1 comentarios | Compartir por WhatsApp

Implementación de visión por computadora acelerada con SIMD en un microcontrolador de $2

Rendimiento del ESP32-S3

  • El ESP32-S3 es un microcontrolador económico con una CPU de doble núcleo a 240MHz y varios periféricos, incluidos radios WiFi y Bluetooth Low Energy.
  • Este chip es compatible con instrucciones SIMD de 128 bits, y aprovecharlas puede mejorar mucho el rendimiento.

Implementación de un detector de esquinas FAST acelerado con SIMD

  • Al acelerar el detector de esquinas FAST con instrucciones SIMD, fue posible procesar cuadros QVGA (320x240) en aproximadamente 6ms.
  • Con esto, se logra cerca del doble de rendimiento frente a la implementación de referencia.

Lenguaje ensamblador y asignador de registros

  • Se aprendió lenguaje ensamblador en el ESP32-S3 y se escribió un asignador básico de registros (basm) para superar las limitaciones del chip.
  • Se implementó una función que procesa 16 píxeles a la vez usando instrucciones SIMD.

Procesamiento de datos de píxeles

  • Para procesar los datos de píxeles, se comparan las diferencias entre el píxel central y los píxeles circundantes.
  • Para superar las limitaciones del ESP32-S3, se ideó una manera de transformar adecuadamente los datos de píxeles.

Mejora de rendimiento

  • El detector de esquinas FAST acelerado con SIMD mejora la velocidad de procesamiento en aproximadamente 220%.
  • Gracias a esto, el ESP32-S3 puede procesar en tiempo real un stream VGA a 30fps.

Opinión de GN⁺

  • Utilidad del ESP32-S3: El ESP32-S3 ofrece un rendimiento potente para su bajo precio, por lo que resulta útil en varios proyectos de IoT y sistemas embebidos.
  • Importancia de las instrucciones SIMD: Aprovechar instrucciones SIMD permite alcanzar alto rendimiento incluso en hardware de gama baja.
  • Aprender lenguaje ensamblador: Aprender ensamblador ayuda a entender el funcionamiento detallado del hardware y a desarrollar capacidad de optimización.
  • Superar limitaciones: El proceso de superar las limitaciones del hardware ayuda a fortalecer la capacidad de resolver problemas de forma creativa.
  • Visión por computadora en tiempo real: Muestra que es posible ejecutar tareas de visión por computadora en tiempo real incluso en microcontroladores de bajo costo.

1 comentarios

 
GN⁺ 2024-06-26
Comentarios de Hacker News
  • Es genial que el silicio sea más barato que un café promedio. Tal vez no sea que los chips sean demasiado baratos, sino que el café sea demasiado caro.
  • La placa ESP32-CAM soporta proyectos prácticos de visión por computadora.
  • Si te interesa, recomiendan revisar el producto de Edge Impulse.
  • Edge Impulse optimiza tareas de aprendizaje profundo, visión por computadora y DSP.
  • Si subes modelos de TensorFlow, PyTorch o JAX, puedes obtener una biblioteca optimizada en C++.
  • Edge Impulse ofrece un estudio de entrenamiento de modelos adaptado a varios tipos de hardware embebido.
  • También vale la pena leer un texto breve sobre SIMD en el ESP32-S3.
  • Me pregunto si sería posible usar varios ESP32 en paralelo para manejar una mayor resolución y tasa de cuadros.
  • Aceleraron con SIMD el detector de características FAST y mejoraron el rendimiento en un 220%.
  • ARMv7 y ARMv8 tienen extensiones opcionales del conjunto de instrucciones SIMD.
  • El Orrin Nano ofrece 40 TOPS, lo cual es suficiente para Copilot+.
  • Se ha investigado cómo convertir luz infrarroja en luz visible.
  • Existe la biblioteca PicoVGA para implementar pantallas VGA/TV en la Raspberry Pi Pico.
  • Me pregunto si es posible usar controladores ESP32 con Rust.
  • Me pregunto si el ESP32 tiene slots VLIW y si permite un empaquetado de instrucciones más ajustado.
  • SIMD es mejor que SMT para ese tipo de procesamiento.
  • Prefiero algo más caro y mejor. Está Intel UpSquared.