本文將手把手帶你實(shí)現(xiàn)實(shí)時人臉檢測,并將完整流程開源。打通從數(shù)據(jù)采集、模型訓(xùn)練、量化轉(zhuǎn)換,到集成部署的每一個環(huán)節(jié)。我們已為你準(zhǔn)備好了數(shù)據(jù)集、訓(xùn)練代碼、轉(zhuǎn)換工具鏈與RT-Thread工程。只需跟隨步驟,即可體驗在1 GHz Arm Cortex-M85 MCU上部署AI模型。(公眾號后臺回復(fù)RA8P1,加入交流群)
目錄
應(yīng)用效果預(yù)覽
流程圖
環(huán)境準(zhǔn)備
訓(xùn)練模型
ai模型轉(zhuǎn)換
ai模型部署
網(wǎng)盤資源及培訓(xùn)視頻
1 應(yīng)用效果預(yù)覽

2 流程圖
提示:可以上下滑動


3 環(huán)境準(zhǔn)備
3.1 硬件清單
開發(fā)板:RA8P1開發(fā)板(Titan Board)。

或復(fù)制鏈接購買:https://item.taobao.com/item.htm?ft=t&id=987791181903
傳感器/外設(shè):RGB565屏幕和攝像頭
3.2 軟件與?具
RT-Thread Studio
Python 3.9–3.11,pip包:pytorch等ai庫
Yolo-Fastest
3.3 RT-Thread Studio
在 RT-Thread Studio 中下載 Titan-Board SDK 及相關(guān)依賴(下載Titan-Board SDK 時,其他依賴會自動下載)。

網(wǎng)盤中提供了下載好的 Titan-Board SDK,可以通過導(dǎo)入的方式安裝 SDK。

選擇 SDK 壓縮包。

導(dǎo)入成功。

提示:如果在燒錄時檢測不到 DAP-Link,按下方鏈接中的步驟操作即可解決。
https://rt-thread-studio.github.io/sdk-bsp-ra8p1-titan-board/latest/faq/FAQ_page/README_zh.html
3.4. Python 環(huán)境
參考:https://github.com/AlexeyAB/darknet?tab=readme-ov-file#how-to-compile-on-windows-using-cmake
由于需要安裝vs 2022、cmake等工具,下載需要的時間過久,我這邊有編譯好的darknet.exe,可以使用cpu直接訓(xùn)練模型,如果需要使用gpu訓(xùn)練模型,可以按照darknet官方的安裝步驟重新編譯。
編譯前注意修改配置文件,根據(jù)自己的需求修改。
option(CMAKE_VERBOSE_MAKEFILE"Create verbose makefile"ON)option(CUDA_VERBOSE_BUILD"Create verbose CUDA build"OFF)option(BUILD_SHARED_LIBS"Create dark as a shared library"ON)option(BUILD_AS_CPP"Build Darknet using C++ compiler also for C files"OFF)option(BUILD_USELIB_TRACK"Build uselib_track"ON)option(MANUALLY_EXPORT_TRACK_OPTFLOW"Manually export the TRACK_OPTFLOW=1 define"OFF)option(ENABLE_OPENCV"Enable OpenCV integration"OFF)option(ENABLE_CUDA"Enable CUDA support"OFF)option(ENABLE_CUDNN"Enable CUDNN"OFF)option(ENABLE_CUDNN_HALF"Enable CUDNN Half precision"OFF)option(ENABLE_ZED_CAMERA"Enable ZED Camera support"OFF)option(ENABLE_VCPKG_INTEGRATION"Enable VCPKG integration"OFF)
3.5. Conda 安裝
雙擊安裝miniconda,注意這一步要選擇添加環(huán)境變量

3.6. 安裝 Python 環(huán)境
導(dǎo)入環(huán)境,convert用于將darknet模型轉(zhuǎn)為tflite模型并量化。
3.6.1. convert
下面是安裝方式,二選一
解壓(推薦)
將convert.zip解壓到anaconda安裝目錄的envs中。

安裝keras-YOLOv3-model-set環(huán)境。
condacreate-nconvertpython=3.8conda activateconvertcd keras-YOLOv3-model-setpip install Cythonpip install-r requirements.txt
3.6.2. ruhmi
安裝ruhmi環(huán)境, 用于將量化后的tflite模型轉(zhuǎn)為能在開發(fā)板上部署的模型。
condacreate -n ruhmi python=3.10condaactivate ruhmicdruhmi-framework-mcupipinstall"install\mera-2.4.0+pkg.179-cp310-cp310-win_amd64.whl"pipinstall onnx==1.17.0tflite==2.18.0
4 訓(xùn)練模型
4.1 收集數(shù)據(jù)
使用labelimg創(chuàng)建數(shù)據(jù)集。

創(chuàng)建好的數(shù)據(jù)集可以使用Yolo-Fastest\scripts\xml2yolo.py來轉(zhuǎn)為yolo格式。同時會得到會得到train.txt和val.txt的生成路徑。
python scripts/xml2yolo.py
修改voc.names。
face
得到anchor。
darknet.exe detector calc_anchors datasets/voc.data -num_of_clusters9-width192-height192
得到的anchor如下,每個人每次生成都不一樣。
anchors= 3, 5, 6,10, 11,17, 14,30, 25,25, 25,52, 43,54, 58,90, 94,117
修改yolo-fastest.cfg。
width=192height=192channels=1
# 兩個yolo都要改[convolutional]size=1stride=1pad=1filters=18activation=linear
[yolo]mask=0,1,2anchors= 3, 5, 6,10, 11,17, 14,30, 25,25, 25,52, 43,54, 58,90, 94,117classes=1
我提取收集整理好了人臉識別數(shù)據(jù),位于datasets中。

4.2 訓(xùn)練
使用我編譯好的darknet.exe
cdYolo-fastestdarknet.exe detector train datasets/voc.data datasets/yolo-fastest.cfg -dont_show
大概訓(xùn)練2小時才會有好一些的模型結(jié)果(GPU啟動訓(xùn)練的情況下)。


5 AI部署轉(zhuǎn)換
訓(xùn)練模型結(jié)束后,會在Yolo-fastest/backup中保存模型權(quán)重。我們選擇最后一輪的權(quán)重,用于轉(zhuǎn)換。

5.1 darknet->tflite
轉(zhuǎn)換代碼需要的參數(shù)如下。

我們需要復(fù)制訓(xùn)練好的權(quán)重、cfg文件到keras-YOLOv3-model-set下,然后運(yùn)行,這里需要稍等一會,需要大概6分鐘。
conda activate convertcd /path/to/keras-YOLOv3-model-setpython tools/model_converter/conver2tflite_and_int8.py--config_pathyolo-fastest.cfg--weights_pathyolo-fastest_last.weights--output_pathface.h5--int8_img_path../Yolo-Fastest/datasets/face/data_1/train/image/--save_tflite_pathface_int8.tflite-f
最終會得到face_int8.tflite模型。

5.2 tflite->ruhmi
將上?步得到的tflite文件復(fù)制到ruhmi-framework-mcu/models下,然后運(yùn)行以下指令
conda activate ruhmicd /path/to/ruhmi-framework-mcu/scriptspython mcu_deploy.py--ethos--ref_data../models/ deploy_qtzed_ethos

6 AI部署模型
在 RT-Thread Studio 中創(chuàng)建示例工程。

創(chuàng)建 ai 示例工程。

tflite->ruhmi會在ruhmi-framework-mcu/scripts下生成可部署模型?件,路徑如下

接下來,刪除*_io_data.*和hal_entry.c,然后將剩下的文件拷貝到剛剛創(chuàng)建的示例工程的Titan_npu_ai_face_detection/src/models下。
編譯然后下載。


檢測效果如下

7 網(wǎng)盤資源及培訓(xùn)視頻
網(wǎng)盤資源鏈接:https://pan.baidu.com/s/16OwyiITyhET6k-BtPnJokw?pwd=d983
培訓(xùn)視頻鏈接:
https://www.bilibili.com/video/BV1nsUSBFE8U/?spm_id_from=333.1387.collection.video_card.click
-
mcu
+關(guān)注
關(guān)注
147文章
18605瀏覽量
387033 -
AI
+關(guān)注
關(guān)注
89文章
38091瀏覽量
296592 -
RT-Thread
+關(guān)注
關(guān)注
32文章
1540瀏覽量
44280
發(fā)布評論請先 登錄
RA8P1部署ai模型指南:從訓(xùn)練模型到部署?|?本周六
瑞薩電子RA8D2系列MCU產(chǎn)品介紹
瑞薩電子RA8P1系列32位AI MCU介紹
貿(mào)澤開售Renesas Electronics RA8P1微控制器 為先進(jìn)AI提供高CPU性能
如何在基于Arm架構(gòu)的邊緣AI設(shè)備上部署飛槳模型
新唐科技推出高效AI MCU部署工具NuML Toolkit
ai_cube訓(xùn)練模型最后部署失敗是什么原因?
Arm方案 基于Arm架構(gòu)的邊緣側(cè)設(shè)備(樹莓派或 NVIDIA Jetson Nano)上部署PyTorch模型
地表最強(qiáng)M85內(nèi)核芯片-RA8P1測評 | 技術(shù)集結(jié)
stm32N657上部署cubeAI生成代碼,編譯出錯的原因?怎么解決?
RAKsmart企業(yè)服務(wù)器上部署DeepSeek編寫運(yùn)行代碼
基于stm32h743IIK在cubeai上部署keras模型,模型輸出結(jié)果都是同一組概率數(shù)組,為什么?
AI MCU# 瑞薩RA8T1搭載 Helium 和 TrustZone 的電機(jī)控制MCU 詳細(xì)介紹

1 GHz Arm? Cortex?-M85 MCU上部署AI模型
評論