如何馴化機(jī)器狗讀懂人類手勢,手把手教你!
作為全國普通高校大學(xué)生競賽榜單內(nèi)競賽,“中國軟件杯”大學(xué)生軟件設(shè)計(jì)大賽-智能四足機(jī)器狗電力巡檢系統(tǒng)開發(fā)賽項(xiàng),目前已吸引了全國2041支隊(duì)伍參加。經(jīng)過激烈的目標(biāo)檢測與分割算法打榜賽,最終,有153支團(tuán)隊(duì)成功晉級區(qū)域賽。在即將于7月中旬開展的區(qū)域賽中,晉級選手須基于搭載飛槳框架的國產(chǎn)四足機(jī)器狗宇樹 Go1 機(jī)器狗,在規(guī)定的地圖上進(jìn)行自動(dòng)巡檢、避障越障和完成指定任務(wù),根據(jù)各任務(wù)的完成質(zhì)量和完成速度獲得分?jǐn)?shù)。

開發(fā)者介紹
安泓郡
大連海事大學(xué)智能科學(xué)與技術(shù)專業(yè)大三在讀,研究方向?yàn)闄C(jī)器視覺、智能自主機(jī)器人。RoboCup 機(jī)器人世界杯中國賽水下作業(yè)組全國總冠軍;全國大學(xué)生 RoboCom 機(jī)器人開發(fā)者大賽物資運(yùn)送賽道全國總冠軍;中國大學(xué)生計(jì)算機(jī)設(shè)計(jì)大賽飛槳賽道全國總冠軍;全國大學(xué)生嵌入式芯片與系統(tǒng)設(shè)計(jì)競賽海思賽道全國總冠軍。保送至西北工業(yè)大學(xué)光電與智能研究院攻讀博士研究生。
莫善彬
大連海事大學(xué)電子信息科學(xué)與技術(shù)專業(yè),主攻機(jī)器視覺以及硬件機(jī)器控制方向。廣泛涉獵各類大賽,2022屆 ROBCOM 物資運(yùn)送冠軍隊(duì)伍選手,熟悉四足機(jī)器狗的控制邏輯及其底層運(yùn)動(dòng)控制,有一定的開發(fā)經(jīng)驗(yàn);在全國大學(xué)生電子設(shè)計(jì)大賽,藍(lán)橋杯等嵌入式硬件開發(fā)大賽中屢獲佳績。
預(yù)期目標(biāo):先看效果



馴化之路一:感知部分實(shí)現(xiàn)
感知部分工作目標(biāo):使用 mini-HaGRID 數(shù)據(jù)集,借助 PaddleDetection 工具訓(xùn)練一個(gè)可以識(shí)別 like、call、stop 三種手勢的目標(biāo)檢測模型。
· 服務(wù)器端模型訓(xùn)練
本次使用 HaGRID 手勢檢測數(shù)據(jù)集的精簡版:mini-HaGRID 作為訓(xùn)練數(shù)據(jù)。當(dāng)然也可以使用?Labelme 標(biāo)注工具自行制作數(shù)據(jù)集,或?qū)ふ揖W(wǎng)絡(luò)公開數(shù)據(jù)集。使用 Labelme 標(biāo)注數(shù)據(jù)集可以參考教程:
https://gitee.com/paddlepaddle/PaddleDetection/blob/release/2.6/docs/tutorials/data/DetAnnoTools.md
在 AI Studio上,基于數(shù)據(jù)訓(xùn)練深度學(xué)習(xí)視覺模型。
1.1 數(shù)據(jù)準(zhǔn)備
1.2 下載并安裝 PaddleDetection v2.4
1.3?新建數(shù)據(jù)集配置文件
進(jìn)入 PaddleDetection/configs/datasets 目錄,新建文件 voc_hand.yml以同目錄下 voc.yml 為模板,修改數(shù)據(jù)集根目錄,數(shù)據(jù)集類別數(shù)及數(shù)據(jù)列表文件??芍苯訌?fù)制如下內(nèi)容:
1.4?新建訓(xùn)練配置文件
進(jìn)入PaddleDetection/configs/picodet目錄,新建配置文件picodet_xs_320_voc_hand.yml以同目錄下 picodet_xs_320_coco_lcnet.yml 為模板,修改數(shù)據(jù)集配置??芍苯訌?fù)制如下內(nèi)容:
1.5 訓(xùn)練模型
?·?模型導(dǎo)出
使用 PaddleDetection 訓(xùn)練完模型后,需要將模型導(dǎo)出。
2.1 導(dǎo)出為 PaddleInference 格式
2.2?服務(wù)器端安裝 PaddleLite
打開 PaddleLite 官方 github 倉庫:
https://github.com/PaddlePaddle/Paddle-Lite
打開 Release 頁面,下載v2.12版本的 opt_linux 至 PaddleDetection 根目錄。
可以直接執(zhí)行如下命令:
2.3?將模型導(dǎo)出為 PaddleLite 格式
其中,opt_linux 工具更加相信的使用說明可以參考https://www.paddlepaddle.org.cn/lite/v2.12/user_guides/opt/opt_bin.html
運(yùn)行完成后,可以在 inference_model_opt 文件夾下看到一個(gè)文件?“voc_hand.nb”,這就是轉(zhuǎn)換好的 PaddleLite 模型文件。??
· 可視化模型
3.1 下載模型文件
訓(xùn)練完成后,將 inference_model_opt 文件夾下看到一個(gè)文件“voc_hand.nb”?下載下來。打開模型可視化網(wǎng)站:https://netron.app/將 voc_hand.nb 模型上傳。
3.2?記錄輸入輸出名稱
模型可視化如圖所示:

點(diǎn)擊輸入節(jié)點(diǎn)“0”,彈出側(cè)邊欄:

可以看到,模型格式為?PaddleLite,模型有兩個(gè)輸入節(jié)點(diǎn)和兩個(gè)輸出節(jié)點(diǎn)。
每個(gè)節(jié)點(diǎn)的含義可以參考:https://gitee.com/paddlepaddle/PaddleDetection/blob/release/2.6/deploy/EXPORT_MODEL.md
scale_factor:縮放系數(shù)
image:輸入圖像
multiclass_nms3_0.tmp_0:經(jīng)NMS后的候選結(jié)果
multiclass_nms3_0.tmp_2:候選結(jié)果的個(gè)數(shù)
這四個(gè)節(jié)點(diǎn)的名稱要記住,部署的時(shí)候需要用。
馴化之路二:硬件部分實(shí)現(xiàn)
下面,我們就要講授如何將訓(xùn)練的 voc_hand 模型部署到宇樹 Go1 四足機(jī)器人,并用手勢控制機(jī)器狗完成響應(yīng)動(dòng)作。

克隆本項(xiàng)目至機(jī)器狗 Nano1 和樹莓派 home 目錄。
?·?Nano1 部署
進(jìn)入 nano1-workspace 目錄
殺進(jìn)程
修改系統(tǒng)時(shí)間?
將時(shí)間修改為你當(dāng)前的時(shí)間。時(shí)間不對可能會(huì)影響CMake程序編譯。
編譯程序
運(yùn)行 nano1 節(jié)點(diǎn)
樹莓派部署
進(jìn)入 pi-workspace 目錄
修改系統(tǒng)時(shí)間
將時(shí)間修改為你當(dāng)前的時(shí)間。時(shí)間不對可能會(huì)影響 CMake 程序編譯。
編譯程序
運(yùn)行pi節(jié)點(diǎn)
·?代碼解釋
Nano1 節(jié)點(diǎn)代碼解釋
https://gitee.com/an_hongjun/2023_paddle_dog_demo/blob/master/nano1-workspace/README.md
Pi 節(jié)點(diǎn)代碼解釋
https://gitee.com/an_hongjun/2023_paddle_dog_demo/blob/master/pi-workspace/README.md
結(jié)語:開發(fā)者有話說
作為作者,我必須承認(rèn):本項(xiàng)目提出的方案并不一定是最佳的。比如:
模型的選型,還有很大的空間;
模型在導(dǎo)出時(shí),模型的壓縮也可以做很多文章(或許 PaddleSlim 是個(gè)不錯(cuò)的參考);
模型在部署時(shí),代碼還有很大的優(yōu)化空間,以及結(jié)合 TensorRT 或許可以進(jìn)行更加快速的推理。
本項(xiàng)目的目的主要是幫助大家入門?;蛟S它不是最好的,但是個(gè)很好的開始。預(yù)祝大家比賽順利!?
