9/15/2022

ESP32-S3 TinyML (Edge AI )

1. Arduino IDE 와 TinyML 

우연히 LinkedIn에서 보게되었는데, MCU기반으로 Machine Learning을 해서 동작이되는 것을 보고, 좀 쇼크를 받았다. 
Arduino 기반으로 Transfer Learning하여 이를 지원하는 것으로 보이며 음성인식을 하여 로봇 손을 제어한다. 
아이러니한 것은 소스를 보면, BLE로 동작되는 걸로 보인다. 

  • HW 사양 
  1. Board: Arduino Nano 33 BLE Sense (Nordic 사)
  2. 기타: Servo 와 BreadBoard(빵판) 과 Jumper 

  • 개발 Tools 
  1. Edge Impulse Studio 
  2. Arduino IDE 

일단 Transfer Learning(Training) 알려고 하면, 어쩔 수 없이 상위 Edge impulse Studio를 좀 알아야 할 것 같다. 
 
  • 음성인식 방법(모델?)
  1. MFCC(Mel-Frequency Cepstral Coefficient)
  2. MFE 

MFE 와 MFCC 비교 


  • Inference
NVIDIA Jetson 처럼 INT8 까지는 아니여도, INT16까지 양자화해서 Inference하는 것으로 보인다. 

  • 결론 
MFCC or MFE 사용한다고 하며, 아직 MFE는 검색이 안되어서 잘 모르겠다.
MFCC는 상위 블로그로 읽어보면, 간단히 동작방식의 핵심 다음과 같다고 생각되어진다. 

Mel-Filter Bank 라는 것을 일종의 Pattern을 저장해서 Machine Learning하는 것으로 보인다. 
다만 가성주파수 영역에 (300Hz ~ 3300Hz) 집중적 배포하여 사람 목소리인 음성인식을 하는 것으로 보인다. 

다시 DCT도 나오고 그렇는데, 오랜만에 다시 DSP를 보니 골치아프다. 
DCT 와 DFT/FFT 의 차이는 간단히 말해, 허수 사용여부이다. 
추후 시간이되면 좀 더 자세히 알아보도록 하자 .


1.1 Edge Impulse Studio 

Edge Impulse가 무엇인지 궁금해서 찾아 보게되었는데, 아래 사이트에서 쉽게 답을 얻었다. 

나의 경우는 거의 Arduino를 거의 사용해본 경험이 없는데, 거의 Arduino 기반으로 Library가 제공되어지는 것으로 보인다. 

  • EdgeImpulse Studio 
이 사이트 기반으로 Project를 진행하는 것으로 보이며, 나도 오늘 가입을 했다. 


1.2 Tensorflow light for MCU

Tensorflow를 보니, 지원되어지는 MCU Board는 적은 것으로 보이며, 다행히 Espressif 사의 ESP도 지원가능한걸로 보인다. 
다만, 대체적으로 Arduino 기반으로 Project가 진행이 되는 것으로 보인다. 
일단 Arduino 와 ESP32 or 다른 MCU EVM이 필요하다 

TensorFlow light for Microcontroller

ESP32 와 Tensorflow Lite for Microcontroller
ESP-IDF 와 ESP-NN을 사용한 것으로 보이며, CNN구조의 간단한 예제 


2. TinyML 

좀 생소하기는 한데, 아직 제한적으로 사용되어지는 것 같으며, MCU기반으로 사용되어지는 걸로 보인다. 
검색을 해보면, 책까지 나왔을 정도로 많이 보편화가 된 것으로 보이며, 현재 관심을 두고 보고 있다.
대부분 Inference를 할 경우, 각 NN Library와 연결하여 사용하는 것으로 생각되어진다. 


2.1 TinyML 관련책 과 세미나  


TinyML 
O'REILLY 에서 처음 영문으로만 나왔는데, 한글로 나옴 

TinyML Home 

Google TinyML 

Meetup TinyML
Meetup을 통해서, 자주 Youtube에 관련내용들이 공유되어지고 있음 


2.2 ARM 의 TinyML

ARM을 주로 보면 Cortex-M 기반으로 CMISIS-NN으로 연결하여, 주로 Inference용으로 사용하는 것 같다. 





2.3 ESP32의 TinyML 

ESP경우, ESP-NN이 존재하며, 연결하여 확장해서 ESP-DL 
주로 Inference용으로 사용


ESP-NN(Neural Network) 와 ESP-DL(Deep Learning Model)