본문 바로가기
임베디드 컴퓨팅/ESP32 & ESP8266

[ESP32] Espressif SoC ESP-DL 딥러닝 라이브러리

by makepluscode 2021. 10. 1.
반응형

ESP32 Espressif SoC ESPDL 딥러닝 라이브러리

AI Acceleration Support

 

저가 MCU Espressif ESP32 를 위한 딥러닝 라이브러리가 존재한다?

ESP-DL (Espressif Deep learning Library) 은 Espressif SoC (System On Chip) 전용 고성능 딥 러닝 라이브러리입니다.  ESP-DL 은 뉴럴 네트워크(neural network, NN) 추론(inference), 이미지 처리, 수학 연산 및 딥 러닝 모델을 위한 API를 제공합니다. 개발자는 ESP-DL 를 이용하여 뉴럴 네트워크 추론을 빠르고 쉽게 구현할 수 있습니다. 특히, 새로 릴리즈된 ESP32 S3 에서 DNN (Deep Neural Network) 하드웨어 가속 기능이 추가 되었습니다.

ESP32-S3 는 240MHz 듀얼 코어 XTensa LX7 MCU입니다. 512KB의 내부 SRAM 외에도 장거리 데이터 전송을 제공하는 통합 2.4GHz, 802.11 b/g/n Wi-Fi 및 Bluetooth 5(LE) 도 함께 제공됩니다. 45개의 프로그래밍 가능한 GPIO 가 있으며 다양한 주변 장치를 지원합니다. ESP32-S3는 설정 가능한 데이터 및 명령 캐시가 있는 고속 Octal SPI 플래시 및 PSRAM을 지원합니다.

ESP32 s3 에서 DNN 추론이 얼마나 향상되었는가?

ESP32 에 비해서 15배 성능향상이 있다?

ESP-DL 을 사용하면, 기존 ESP32 에 비해 ESP32-S3 는, 16bit detection 은 4.5배, 얼굴인식 모델은 6.2배 빠르다고 합니다. 추가로 8bit 모델을 사용할 경우 16bit 모델에 비해서 2.5배 더 개선된다고 합니다. 그러면 얼굴인식 8bit 모델의 경우에는 ESP32 와 ESP32-S3 가 15배 정도 차이가 날 수 있을까요? ESP32-S3 로 오면서, CPU core 가 Tensilica LX7 로 업그레이드 되면서 DNN 연산을 위한 일부 명령어가 추가되었기 때문이라고 가능하다고 생각 됩니다. 자세한 내용은 Tensilica LX7 에서 지원하는 DNN 관련 명령어 세트를 분석해봐야 합니다.


 

GitHub - espressif/esp-dl: Espressif deep-learning library for AIoT applications

Espressif deep-learning library for AIoT applications - GitHub - espressif/esp-dl: Espressif deep-learning library for AIoT applications

github.com

현재 ESP-DL 에서 지원되는 비전 모델은 다음과 같습니다.

사람의 얼굴 감지 https://github.com/espressif/esp-dl/blob/master/examples/human_face_detect
사람의 얼굴 인식 https://github.com/espressif/esp-dl/blob/master/examples/face_recognition
고양이 얼굴 감지 https://github.com/espressif/esp-dl/blob/master/examples/cat_face_detect

현재 ESP-DL 에 구현되어 있는 DNN 레이어는 아래와 같고, 이중에 일부는 ESP32-S3 에서 하드웨어 가속이 가능한 것으로 생각 됩니다.

ESP-DL DNN Layer

add2d, avg_pool2d, base, concat, concat2d, conv2d, depthwise_conv2d, expand_dims, flatten, fullyconnected, global_avg_pool2d, global_max_pool2d, leakyrelu, max2d, max_pool2d, min2d, model, mul2d, prelu, relu, reshape, squeeze, sub2d, transpose

ESP-DL Human face detect 예제

 

GitHub - espressif/esp-dl: Espressif deep-learning library for AIoT applications

Espressif deep-learning library for AIoT applications - GitHub - espressif/esp-dl: Espressif deep-learning library for AIoT applications

github.com

ESP-DL Human face detect 예제로, 추론의 결과는 좌표와 신뢰도 입니다. 추론의 결과를 입력이미지에 표시할 수 있는 도구 (display_image.py) 를 함께 제공하고 있습니다.

 

ESP-DL human_face_detect

ESP-DL Human face detect 예제를 ESP32, ESP32-S2, ESP32-S3 에서 실행해서 비교한 결과 입니다.

MCU SoC TWO_STAGE = 1
(얼굴 랜드마크 O)
TWO_STAGE = 0
(얼굴 랜드마크 X)
ESP32 415,246 us 154,687 us
ESP32-S2 1,052,363 us 309,159 us
ESP32-S3 56,303 us 16,614 us

검출된 얼굴의 랜드마크를 포함하지 않는 TWO_STAGE=0 기준으로, ESP32-S3 는 ESP32 와 ESP32-S2 에 비해, 각각 9.3배, 18.6배 빠른 성능을 보여 줍니다.

ESP32 s3 의 구매방법은?

2021년 10월 현재, ESP32-S3 는 sample 만 구입 가능한 것 같습니다. 알리익스프레스 (aliexpress.com) 에 구입가능한 Devkit 이 보여서 링크를 추가합니다.

https://ko.aliexpress.com/item/1005003341069001.html?spm=a2g0o.productlist.0.0.324b4d70ba9f75&algo_pvid=728cbed0-2929-4459-ad90-3366972a3dbf&algo_exp_id=728cbed0-2929-4459-ad90-3366972a3dbf-29&pdp_ext_f=%7B%22sku_id%22%3A%2212000025304508585%22%7D

ESP32-S3-DevKitC-1 개발 보드

ESP32-DL 관련링크

반응형