TinyML의 과제는 마이크로컨트롤러급 하드웨어에서 AI 워크로드에 대해 가장 낮은 설치 공간에서 최대 성능/효율을 추출하는 것입니다. 유럽의 기계 학습 연구원 팀이 개발한 TinyML-CAM 파이프라인은 카메라로 비교적 저가형 하드웨어에서 달성할 수 있는 것을 보여줍니다.
가장 구체적으로, 그들은 약 1KB의 RAM을 차지하는 오픈 소스 TinyML-CAM 파이프라인을 사용하여 10달러 미만의 ESP32-CAM 보드에서 80 FPS 이상의 이미지 인식에 도달했습니다. 카메라가 있는 다른 MCU 보드에서 작동해야 하며 맞춤형 작업을 구현하는 데 약 30분이 걸린다고 하기 때문에 교육이 복잡해 보이지 않습니다.
연구원들은 마이크로컨트롤러용 TensorFlow Lite 및 Edge Impulse와 같은 솔루션이 이미 신경망(NN)을 사용하여 MCU 보드에서 ML 워크로드의 실행을 가능하게 한다고 언급했습니다. 그러나 일반적으로 50~500kB의 RAM을 사용하고 추론에 100~600ms가 소요되므로 개발자는 복잡성이 낮거나 정확도가 낮은 NN을 선택해야 합니다.
그래서 연구원들은 4단계로 작동하는 TinyML-CAM 파이프라인을 설계하기 위해 마이크로컨트롤러용 TFLite에 대한 "Eloquent Arduino" 라이브러리 대안을 활용하는 보다 효율적인 비-NN 알고리즘(예: Decision Tree, SVM)을 사용하기로 결정했습니다.
1. 카메라 서버(160 × 120 해상도)와 MjpegCollector를 통한 데이터 수집 사용자에게 클래스 이름을 묻고 사용자가 나갈 때까지 일정 시간 동안 이미지 프레임 수집
2. 4단계로 특징 추출
- 수집된 이미지를 RGB에서 회색으로 변환
- HOG(Histogram of Oriented Gradients) 기능 추출기를 실행하여 기능 벡터를 출력합니다(작업 속도를 높이기 위해 저해상도 40 x 30 이미지 사용).
- 추출된 특징이 얼마나 유익한지 시각적으로 이해하려면 Pairplot Visualization을 실행하십시오.
- UMAP(Uniform Manifold Approximation and Projection) 차원 축소 알고리즘을 실행하여 특징 벡터를 가져와 길이 2로 압축합니다.
3. 분류자 훈련
4. C++로 포팅 – HOG 구성 요소와 분류자(Pairplot)를 C++ 코드 또는 더 정확하게는 헤더 파일(.h)로 변환합니다.
그런 다음 헤더 파일을 Arduino Sketch에 추가할 수 있으며, 프로그램은 보드에서 컴파일되고 실행됩니다. 소스 코드, ESP32 하드웨어에 설치하기 위한 지침, GitHub에서 데모 비디오를 찾을 수 있습니다.
솔루션을 테스트하기 위해 ESP32-CAM이 Raspberry Pi Pico, Arduino Portenta H7 또는 Wio 터미널을 인식하도록 훈련합니다. 이러한 유형의 보드에 대한 성능은 훌륭하고 설치 공간은 정말 작지만 연구원들은 Portenta 및 Pi 보드가 Pairplot 분석 중에 종종 잘못된 레이블이 지정되었으며 이 문제는 데이터 세트 품질을 개선하여 수정될 것으로 기대합니다.
GitHub의 소스 코드를 살펴보는 것 외에도 참고 링크의 4페이지 분량의 짧은 연구 논문에서 추가 정보를 찾을 수 있습니다.
참고
TinyML-CAM: 80 FPS Image Recognition in 1 kB RAM 논문 참고
'ESP32' 카테고리의 다른 글
ESP32 Arduino IoT Cloud의 Color 위젯을 Wokwi의 RGB LED와 OLED 디스플레이로 연결 (1) | 2024.05.19 |
---|---|
ESP32 Arduino IoT Cloud Google 시트를 사용하여 4개의 센서 그래프를 표시 (0) | 2024.05.17 |
아두이노 Nano ESP32 빠른 가이드 1 - 시작 & FAQ (0) | 2024.05.15 |
ESP32 Arduino IoT Cloud 5개 릴레이 예약 제어 wokwi 시뮬레이션 (0) | 2024.05.06 |
ESP32 Wokwi 시뮬레이션 및 Arduino IoT Cloud 기반 릴레이 제어 (0) | 2024.05.06 |
프로그래밍 예제를 통해 ESP32 버튼 시작하기 (0) | 2024.04.03 |
DHT11 센서를 사용한 ESP32 BLE 온도 및 습도 모니터링 시스템 (0) | 2024.04.02 |
ESP32 BLE를 사용하여 LED 제어하기 (0) | 2024.04.01 |
더욱 좋은 정보를 제공하겠습니다.~ ^^