3 pontos por GN⁺ 2024-06-26 | 1 comentários | Compartilhar no WhatsApp

Implementando visão computacional acelerada por SIMD em um microcontrolador de US$ 2

Desempenho do ESP32-S3

  • O ESP32-S3 é um microcontrolador barato com CPU dual-core de 240MHz e vários periféricos, incluindo WiFi e rádio Bluetooth Low Energy.
  • O chip oferece suporte a instruções SIMD de 128 bits, que podem ser usadas para melhorar bastante o desempenho.

Implementação de um detector de cantos FAST acelerado por SIMD

  • Ao acelerar o detector de cantos FAST com instruções SIMD, passou a ser possível processar frames QVGA (320x240) em cerca de 6 ms.
  • Com isso, foi alcançado aproximadamente o dobro do desempenho em relação à implementação de referência.

Linguagem assembly e alocador de registradores

  • Foi estudada a linguagem assembly no ESP32-S3 e escrito um alocador de registradores básico (basm) para contornar as limitações do chip.
  • Também foi implementada uma função que usa instruções SIMD para processar 16 pixels de uma vez.

Processamento de dados de pixels

  • Para processar os dados dos pixels, é feita a comparação entre o pixel central e os pixels ao redor.
  • Para contornar as limitações do ESP32-S3, foi concebida uma forma adequada de transformar os dados dos pixels.

Ganho de desempenho

  • O detector de cantos FAST acelerado por SIMD melhorou a velocidade de processamento em cerca de 220%.
  • Isso permitiu ao ESP32-S3 processar em tempo real um stream VGA a 30 fps.

Opinião do GN⁺

  • Versatilidade do ESP32-S3: O ESP32-S3 oferece desempenho robusto para o preço e é útil em vários projetos de IoT e sistemas embarcados.
  • Importância das instruções SIMD: Aproveitar instruções SIMD permite alcançar alto desempenho mesmo em hardware modesto.
  • Aprendizado de assembly: Aprender assembly ajuda a entender o funcionamento detalhado do hardware e a desenvolver capacidade de otimização.
  • Superando limitações: Superar as limitações do hardware ajuda a desenvolver criatividade na resolução de problemas.
  • Visão computacional em tempo real: O trabalho mostra que é possível executar tarefas de visão computacional em tempo real até mesmo em microcontroladores de baixo custo.

1 comentários

 
GN⁺ 2024-06-26
Comentários do Hacker News
  • É legal que o silício seja mais barato do que um café médio. Talvez não sejam os chips que estejam baratos demais, e sim o café que está caro demais.
  • A placa ESP32-CAM suporta projetos práticos de visão computacional.
  • Se tiver interesse, vale a pena conferir os produtos da Edge Impulse.
  • A Edge Impulse otimiza tarefas de deep learning, visão computacional e DSP.
  • Você pode enviar modelos do TensorFlow, PyTorch e JAX e receber bibliotecas C++ otimizadas.
  • A Edge Impulse oferece um estúdio de treinamento de modelos adaptado para vários hardwares embarcados.
  • Também vale a pena ver um texto curto sobre SIMD no ESP32-S3.
  • Fico curioso se seria possível usar vários ESP32 em paralelo para lidar com resoluções e taxas de quadros mais altas.
  • O detector de características FAST foi acelerado com SIMD, melhorando o desempenho em 220%.
  • ARMv7 e ARMv8 têm extensões opcionais do conjunto de instruções SIMD.
  • O Orrin Nano oferece 40 TOPS, o que é suficiente para o Copilot+.
  • Foi pesquisada uma forma de converter luz infravermelha em luz visível.
  • Existe a biblioteca PicoVGA para implementar displays VGA/TV no Raspberry Pi Pico.
  • Fico curioso se é possível usar controladores ESP32 com Rust.
  • Fico curioso se o ESP32 tem slots VLIW e se seria possível um empacotamento de instruções mais compacto.
  • SIMD é melhor do que SMT para esse tipo de processamento.
  • Prefiro algo mais caro e melhor. Existe o Intel UpSquared.