3P by neo 3달전 | favorite | 댓글 1개

$2 마이크로컨트롤러에서 SIMD 가속 컴퓨터 비전 구현

ESP32-S3의 성능

  • ESP32-S3는 240MHz 듀얼 코어 CPU와 WiFi, Bluetooth Low Energy 라디오를 포함한 다양한 주변 장치를 갖춘 저렴한 마이크로컨트롤러임.
  • 이 칩은 128비트 SIMD 명령어를 지원하며, 이를 활용하면 성능을 크게 향상시킬 수 있음.

SIMD 가속 FAST 코너 검출기 구현

  • FAST 코너 검출기를 SIMD 명령어를 사용해 가속화하여 QVGA(320x240) 프레임을 약 6ms에 처리할 수 있게 됨.
  • 이를 통해 레퍼런스 구현 대비 약 두 배의 성능을 달성함.

어셈블리 언어와 레지스터 할당기

  • ESP32-S3에서 어셈블리 언어를 배우고, 칩의 제한 사항을 극복하기 위해 기본적인 레지스터 할당기(basm)를 작성함.
  • SIMD 명령어를 사용해 16개의 픽셀을 한 번에 처리하는 함수를 구현함.

픽셀 데이터 처리

  • 픽셀 데이터를 처리하기 위해 중심 픽셀과 주변 픽셀의 차이를 비교하는 작업을 수행함.
  • ESP32-S3의 제한 사항을 극복하기 위해 픽셀 데이터를 적절히 변환하는 방법을 고안함.

성능 향상

  • SIMD 가속 FAST 코너 검출기를 통해 처리 속도를 약 220% 향상시킴.
  • 이를 통해 ESP32-S3가 30fps VGA 스트림을 실시간으로 처리할 수 있게 됨.

GN⁺의 의견

  • ESP32-S3의 활용성: 저렴한 가격에 비해 강력한 성능을 제공하는 ESP32-S3는 다양한 IoT 및 임베디드 시스템 프로젝트에 유용함.
  • SIMD 명령어의 중요성: SIMD 명령어를 활용하면 저사양 하드웨어에서도 높은 성능을 달성할 수 있음.
  • 어셈블리 언어 학습: 어셈블리 언어를 배우면 하드웨어의 세부적인 동작을 이해하고 최적화할 수 있는 능력을 기를 수 있음.
  • 제한 사항 극복: 하드웨어의 제한 사항을 극복하는 과정에서 창의적인 문제 해결 능력을 키울 수 있음.
  • 실시간 컴퓨터 비전: 저비용 마이크로컨트롤러에서도 실시간 컴퓨터 비전 작업을 수행할 수 있는 가능성을 보여줌.
Hacker News 의견
  • 실리콘이 평균 커피보다 저렴한 것은 멋진 일임. 어쩌면 칩이 너무 저렴한 것이 아니라 커피가 너무 비싼 것일 수도 있음.
  • ESP32-CAM 보드는 실용적인 컴퓨터 비전 프로젝트를 지원함.
  • 관심이 있다면 Edge Impulse 제품을 확인해보길 권장함.
  • Edge Impulse는 딥러닝, 컴퓨터 비전, DSP 작업을 최적화함.
  • TensorFlow, PyTorch, JAX 모델을 업로드하면 최적화된 C++ 라이브러리를 받을 수 있음.
  • Edge Impulse는 다양한 임베디드 하드웨어에 맞춘 모델 훈련 스튜디오를 제공함.
  • ESP32-S3에서 SIMD에 대한 짧은 글도 참고할 만함.
  • 여러 개의 ESP32를 병렬로 사용하여 더 높은 해상도와 프레임 속도를 처리하는 것이 가능할지 궁금함.
  • FAST 특징 검출기를 SIMD로 가속화하여 성능을 220% 향상시켰음.
  • ARMv7과 ARMv8에는 선택적인 SIMD 명령어 세트 확장이 있음.
  • Orrin Nano는 40 TOPS를 제공하며, 이는 Copilot+에 충분함.
  • 적외선 빛을 가시광선으로 변환하는 방법이 연구됨.
  • Raspberry Pi Pico에서 VGA/TV 디스플레이를 구현하는 PicoVGA 라이브러리가 있음.
  • Rust로 ESP32 컨트롤러를 사용하는 것이 가능한지 궁금함.
  • ESP32가 VLIW 슬롯을 가지고 있는지, 더 긴밀한 명령어 패키징이 가능한지 궁금함.
  • SIMD가 SMT보다 해당 유형의 처리에서 더 우수함.
  • 더 비싸고 좋은 것을 선호함. Intel UpSquared가 있음.