ESP32-S3搭載YOLO:智慧邊緣裝置實現即時目標檢測的突破

  • 前言

在現代科技的日益發展中,智慧邊緣裝置的應用範圍不斷擴大。其中ESP32這樣的微控制器在物聯網和嵌入式應用中扮演著重要角色。但是ESP32也面臨著內存和計算資源的限制。在這樣的情況下,實現即時目標檢測可能會面臨挑戰。然而即使在內存限制的環境中,利用ESP32運行Swift YOLO模型仍然是一個具有吸引力的選擇。讓我們一起探索這個引人注目的技術。

 

  • ESP32-S3搭載YOLO:智慧邊緣裝置實現即時目標檢測的突破

首先我們使用的裝置為ESP32-S3-EYE,模型的部分可以在ModelAssistant Github 選擇。

首先我們需要clone SSCMA Source Code:

git clone https://github.com/Seeed-Studio/ModelAssistant.git --depth 1 && \

cd ModelAssistant

 

另外需要建立虛擬環境

conda create --name sscma python=3.8 -y && \

conda activate sscma

然後安裝 PyTorch,在這裡有兩種選擇,分別是 CPU-Only 平台和 GPUs (CUDA) 平台,請根據個人需求選擇。這裡使用 GPUs (CUDA) 平台:

pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117

 

在ModelAssistant路徑中安裝必須的依賴:

pip3 install -r requirements/base.txt && \

mim install -r requirements/mmlab.txt && \

mim install -e .

其他的部分如export.txt inference.txt則依照個人需求

接下來進行模型訓練的部分,ModelAssistant提供了數種模型選擇



這裡選擇 swift-yolo,準備好訓練資料並修改配置文件進行訓練。資料集格式為 COCO DATASET。

根據資料集位置圖像大小修改紅框部分,有需求的話也可以修改anchor。

接下來就可以進行訓練了,使用以下指令:

python tools/train.py configs/swift_yolo/street_coco.py --cfg-options \work_dir=work_dirs/street640 num_classes=1 epochs=300 height=640 width=640 data_root=/home/ubuntu/Documents/street/street_coco/ load_from=/home/ubuntu/Documents/ModelAssistant/work_dirs/person_detection.pth

 

訓練完成後,接下來匯出模型:

python tools/export.py configs/swift_yolo/street_coco.py /home/ubuntu/Documents/ModelAssistant/work_dirs/street4/best_coco_bbox_mAP_epoch_260.pth --target tflite --cfg-options \
    work_dir=work_dirs/street3 \
    num_classes=1 \
    epochs=300 \
    height=192 \
    width=192 \
    data_root=/home/ubuntu/Documents/street/street_coco/

 

模型訓練完後就能進行部屬了,clone sscma-example-esp32:
git clone https://github.com/Seeed-Studio/sscma-example-esp32


更新模組

git submodule update –init

在使用模型之前需要將 tflite 轉換成二進制,在 sscma-example-esp32 中執行:

python tools/tflite2c.py --input ./model_zoo/street3_epoch_295_int8.tflite --name street3 --output_dir ./examples/yolo_detection_demo/main --classes='("person")'

 

 

轉換完成後,對 example 中的模型進行修改。這裡使用的是 swift-yolo 模型,將下面的部分替換為您自己的模型。


接下來就能進行編譯了:

idf.py set-target esp32s3
idf.py build
idf.py --port /dev/ttyACM0 flash
idf.py --port /dev/ttyACM0 monitor


結果如下



  • 結語

總的來說,我們的努力展示了如何在ESP32-S3上運行YOLO模型,實現了智慧邊緣裝置的即時目標檢測。這一突破克服了內存和計算資源的限制,拓展了智慧邊緣裝置的應用範圍。這一技術的應用將為物聯網和嵌入式應用帶來更多可能性,為智慧邊緣裝置的未來發展提供了新的方向。

 

  • Q&A
  1. Q: 為什麼選擇ESP32-S3來部署模型?

A: 低成本:ESP32-S3是一種成本相對較低的微控制器,相比於一些更昂貴的硬件平台,如NVIDIA Jetson等,ESP32-S3的價格更為親民。

低功耗:ESP32-S3具有低功耗的特點,能夠在不影響性能的情況下實現長時間運行,這使得它非常適合應用於物聯網設備等需要長時間運行的場景。

 

  1. Q: 如何處理ESP32-S3的計算資源限制?

A: ESP32-S3的計算資源有限,需要對模型進行優化和壓縮,以適應其硬件限制。可以採用量化、剪枝、模型簡化等技術,減少模型大小和計算量。

 

  1. Q: ESP32-S3在部署模型時有什麼缺陷?

A: 在在硬體限制方面,ESP32-S3-EYE只有8MB的記憶體,模型在處理圖像時不能夠太大,這裡建議192x192的圖片大小。

 

  1. Q: ESP32-S3相對於ESP32有哪些改進?

A: 核心數量:ESP32 和 ESP32-S3 都有雙核處理器,但 ESP32-S3 使用的是 Xtensa LX7 核心,而 ESP32 使用的是 Xtensa LX6 核心。

運行速度:ESP32-S3 的主頻最高可達 240 MHz,與 ESP32 相同,但 ESP32-S3 的處理器性能更優化。

 

  1. Q: ESP32-S3上部署模型後,可以應用在哪些實際場景中?

A: 根據不同的模型可以做到

智慧家居: ESP32-S3可以用於監控家中的安全和環境,例如人員活動檢測、    煙霧和氣體警報等。

物聯網設備: 將ESP32-S3部署在物聯網設備中,可以實現遠程監控、數據收集和分析等功能。

農業和環境監測: ESP32-S3可以用於監測農作物的生長狀況、土壤濕度、氣象數據等,從而實現智慧農業和環境監測。

智慧城市: 在城市中部署ESP32-S3可以實現交通監控、停車管理、垃圾收集等功能,從而提高城市運行的效率。

健康監測: ESP32-S3可以用於實時監測人體生理數據,例如心率、血氧、體溫等,從而實現健康監測和警報功能。

 

  • 引用

sscma-example-esp32 GITHUB

ModelAssistant GITHUB

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論