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

> Clean Markdown view of GeekNews topic #15525. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=15525](https://news.hada.io/topic?id=15525)
- GeekNews Markdown: [https://news.hada.io/topic/15525.md](https://news.hada.io/topic/15525.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-06-26T09:54:24+09:00
- Updated: 2024-06-26T09:54:24+09:00
- Original source: [shraiwi.github.io](https://shraiwi.github.io/read.html?md=blog/simd-fast-esp32s3.md)
- Points: 3
- Comments: 1

## Topic Body

### $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 명령어를 활용하면 저사양 하드웨어에서도 높은 성능을 달성할 수 있음.
- **어셈블리 언어 학습**: 어셈블리 언어를 배우면 하드웨어의 세부적인 동작을 이해하고 최적화할 수 있는 능력을 기를 수 있음.
- **제한 사항 극복**: 하드웨어의 제한 사항을 극복하는 과정에서 창의적인 문제 해결 능력을 키울 수 있음.
- **실시간 컴퓨터 비전**: 저비용 마이크로컨트롤러에서도 실시간 컴퓨터 비전 작업을 수행할 수 있는 가능성을 보여줌.

## Comments



### Comment 26613

- Author: neo
- Created: 2024-06-26T09:54:24+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=40783598) 
- 실리콘이 평균 커피보다 저렴한 것은 멋진 일임. 어쩌면 칩이 너무 저렴한 것이 아니라 커피가 너무 비싼 것일 수도 있음.
- 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가 있음.
