高駿一 鄭榜貴 王穎雪 劉楚彤 柳雨萌 關(guān)景華
關(guān)鍵詞:YOLOv5;神經(jīng)網(wǎng)絡(luò);目標(biāo)檢測;自動取貨;機(jī)器人
中圖分類號:TP391.4;TP242.3 文獻(xiàn)標(biāo)識碼:A 文章編號:1006-8228(2023)11-22-06
0 引言
為客戶提供快速、便捷和舒適的購物環(huán)境是各大商場和超市所追求的目標(biāo)。本文結(jié)合YOLOv5 神經(jīng)網(wǎng)絡(luò)識別算法,設(shè)計了一款超市自動取貨機(jī)器人,力求在一定程度上減輕物流行業(yè)的壓力,提升服務(wù)工作效率,同時盡量避免因人群聚集而引起的病毒傳播。
1 整體設(shè)計
為使自動取貨機(jī)器人具有獨立決策、并行高效的特點,設(shè)計的機(jī)器人在樹莓派上運行YOLOv5 算法。機(jī)器人底層硬件控制部分采用了樹莓派4B,具有4G內(nèi)存,搭載64 位操作系統(tǒng)Raspberry,給在樹莓派上實現(xiàn)YOLOv5 算法的目標(biāo)檢測提供了保障。
在上層主機(jī)上配置YOLOv5 環(huán)境,下載源碼,使用數(shù)據(jù)集進(jìn)行訓(xùn)練。在底層樹莓派上配置YOLOv5運行環(huán)境,主機(jī)通過VNC 軟件與樹莓派建立遠(yuǎn)程連接,樹莓派控制攝像頭進(jìn)行圖像獲取,并通過無線傳輸?shù)姆绞綄D像傳輸給主機(jī)。如圖1 所示。樹莓派利用部署在主機(jī)上的YOLOv5 模型進(jìn)行圖像識別并返回識別結(jié)果,再控制機(jī)械臂進(jìn)行抓取。
2 軟件設(shè)計與實現(xiàn)
YOLOv5 的檢測系統(tǒng)主要分為三個階段:
⑴ 數(shù)據(jù)預(yù)處理,將輸入圖像縮放到統(tǒng)一的大?。▽⒎直媛收{(diào)整到448 ×448,見2.1.3),然后進(jìn)行數(shù)據(jù)增強(qiáng)以增加模型的泛化能力。
⑵ 將圖像通過全卷積神經(jīng)網(wǎng)絡(luò)。
⑶ 利用極大值抑制(NMS)進(jìn)行篩選以去除冗余的檢測框。
通過上述流程,結(jié)果中會顯示最具有代表性的框,且具有較小的誤檢率和重復(fù)率。
2.1 YOLOv5 工作原理
YOLOv5 是基于卷積神經(jīng)網(wǎng)絡(luò)、網(wǎng)格視角和多尺度預(yù)測技術(shù)的目標(biāo)檢測技術(shù),它能夠快速準(zhǔn)確地檢測目標(biāo)物體。YOLO 采用回歸方法來解決物體檢測問題,使用“端到端”網(wǎng)絡(luò),實現(xiàn)了從輸入原始圖像到輸出物體位置和類別的全過程。YOLO 主要有以下突出特點[1]:
⑴ 不像其他目標(biāo)檢測算法采用回歸問題+分類問題的檢測方式,而是將目標(biāo)檢測當(dāng)作一個回歸問題來處理。
⑵ YOLO 使用單個網(wǎng)絡(luò)進(jìn)行目標(biāo)檢測,僅需一次前向傳播即可輸出圖像中所有目標(biāo)的檢測框和類別信息。這種端到端的方法不僅方便了訓(xùn)練和優(yōu)化網(wǎng)絡(luò),同時也提高了檢測的速度和效率。
2.1.1 網(wǎng)絡(luò)結(jié)構(gòu)
YOLO 的檢測網(wǎng)絡(luò)由24 個卷積層和2 個全連接層組成。卷積層用于提取圖像特征,全連接層用于預(yù)測目標(biāo)的位置和類別概率。此外,YOLO 采用了多個下采樣層來增加網(wǎng)絡(luò)感受野以提高目標(biāo)檢測的準(zhǔn)確性。YOLO 的網(wǎng)絡(luò)結(jié)構(gòu)受到了GoogLeNet 分類網(wǎng)絡(luò)的啟發(fā)[2],但與GoogLeNet 不同的是,YOLO 沒有使用Inception 模塊,而是使用1 × 1卷積層和3 × 3卷積層的簡單組合來代替。
2.1.2 輸出
YOLO 的目標(biāo)檢測方法將輸入圖像劃分成一個S×S 的網(wǎng)格,在每個網(wǎng)格上預(yù)測出B 個邊界框以及每個邊界框所屬物體的類別概率。當(dāng)某個物體的中心點位于某個網(wǎng)格中時,該網(wǎng)格就負(fù)責(zé)檢測該物體。每個邊界框包含五個信息:中心點坐標(biāo)(x, y)、寬度、高度以及邊界框所屬物體的置信度[3]。在卷積神經(jīng)網(wǎng)絡(luò)中,B 和C 的數(shù)量是預(yù)先設(shè)定的。
2.1.3 模型訓(xùn)練原理
⑴ 預(yù)訓(xùn)練。YOLO 網(wǎng)絡(luò)的前20 個卷積層、1 個平均池化層和1 個全連接層使用ImageNet1000 類數(shù)據(jù)進(jìn)行訓(xùn)練[4]。輸入的圖像被調(diào)整到224×224 的分辨率。
⑵ 使用步驟1 得到的前20 個卷積層的網(wǎng)絡(luò)參數(shù)來初始化YOLO 模型前20 個卷積層的網(wǎng)絡(luò)參數(shù),然后使用標(biāo)注數(shù)據(jù)進(jìn)行訓(xùn)練。為了提高圖像精度,訓(xùn)練過程中將輸入圖像的分辨率調(diào)整為448×448。
2.2 基于YOLOv5 的目標(biāo)識別
2.2.1 系統(tǒng)訓(xùn)練
找到相關(guān)數(shù)據(jù)集共4100 張,其中包含“apple”,“permission”,“orange”等共9 類。在運行YOLOv5 程序前,需先對數(shù)據(jù)集進(jìn)行標(biāo)簽化處理。由于圖像標(biāo)注工具“l(fā)abelimg”具有速度快,以及可保證數(shù)據(jù)質(zhì)量與準(zhǔn)確性的特點,最終選擇該平臺進(jìn)行數(shù)據(jù)標(biāo)注。最終得到有效標(biāo)簽4000 個。
訓(xùn)練執(zhí)行前,進(jìn)行了命令行的參數(shù)預(yù)設(shè),預(yù)設(shè)結(jié)果如表1 所示。
在訓(xùn)練過程中,模型通過反向傳播算法計算梯度,并使用梯度下降算法來更新模型的權(quán)重參數(shù),以最小化損失函數(shù)。本文使用的模型是YOLOv5s,在訓(xùn)練過程中,主要更改的是整個網(wǎng)絡(luò)結(jié)構(gòu)的權(quán)重參數(shù)。這包括主干網(wǎng)絡(luò)和預(yù)測頭網(wǎng)絡(luò)。主干網(wǎng)絡(luò)通過修改各層的權(quán)重參數(shù),以獲得更全面的特征信息。預(yù)測頭網(wǎng)絡(luò)則通過修改各層的權(quán)重參數(shù),包括路徑聚合和檢測頭,以提高檢測性能,并使其適應(yīng)于檢測不同尺寸的目標(biāo)。本文利用PyQt5 構(gòu)建了可視化界面,增添了視頻文件識別模塊和攝像頭實時識別模塊。最終可視化界面如圖2 所示。
2.2.2 目標(biāo)識別
從以下評價參數(shù)對所得訓(xùn)練結(jié)果進(jìn)行分析:
其中,T/F 表示最終預(yù)測是否正確(True/False),P/N 表示模型預(yù)測結(jié)果為正例或為負(fù)例(Positive/Negative),TP 表示模型預(yù)測結(jié)果為正例且正確的識別數(shù)量,TN,F(xiàn)P,F(xiàn)N 含義同理[5]。下同。
由式⑴可知,準(zhǔn)確率是最簡單、最直觀的評價指標(biāo)。但當(dāng)樣本分布不均時,指標(biāo)的計算結(jié)果會被占比大的類別所主導(dǎo),從而導(dǎo)致較大的誤差。同時,由該公式得到的結(jié)果太過于籠統(tǒng),實際應(yīng)用中,可能更加關(guān)注某一類別樣本的情況。
很明顯,精確率和召回率是一對相互矛盾的指標(biāo),一般來說高精準(zhǔn)率往往對應(yīng)著低召回率,反之亦然。
精確率-置信度關(guān)系圖與召回率-置信度關(guān)系圖則是為更加直觀地體現(xiàn)識別結(jié)果。為使實驗結(jié)果更具代表性,本文中使用的各類數(shù)據(jù)集總數(shù)并不一致,其中“pear”和“mongo”等類的數(shù)據(jù)集數(shù)量較少。
由圖3 可知,對于數(shù)據(jù)集數(shù)量較少的“pear”類和“mongo”類的準(zhǔn)確率函數(shù)和隨置信度(Confidence)的變化波動性極大,而對于“orange”等類的函數(shù)值較為穩(wěn)定,且非??拷?,這表示其精度較高。同時可知在置信度為0.902 時即可保證所有類別的識別結(jié)果正確的概率為1,其值較為可觀。
類似地,由圖4 可知,“pear”類和“mongo”類的召回率函數(shù)在相同的置信度條件下的函數(shù)值同樣較小,“orange”等類的函數(shù)值較高。當(dāng)置信度小于0.96 時,可識別較多的目標(biāo)物體類別。
除此之外,在評估中還有精確率-召回率關(guān)系圖。在該圖像中,還涉及到了IoU,mAP 兩個參數(shù)。
IoU 為深度學(xué)習(xí)模型中的常見評估指標(biāo),其常常用來評估性能。該指標(biāo)表示預(yù)測邊界框與真實邊界框的重疊程度[7-8]。令A(yù) 為預(yù)測邊界框面積,B 為真實邊界框面積,則IoU 計算如下:
其中,A ∩ B 表示預(yù)測邊界框和真實邊界框之間重疊區(qū)域的面積,A ∪ B 表示兩個邊界框所占據(jù)的總區(qū)域的面積。顯然,IoU 的值越大,表示檢測器的性能越好。
mAP(Mean Average Precision),即均值平均精度,表示每個類的AP(Average Precision)的平均值[9]。
在表示時,常常表示為“a mAP @ b”,其中a 表示mAP 值,b 表示IoU 的閾值。在精確率-召回率關(guān)系圖中,其圖像與橫坐標(biāo)所圍面積即為所求的均值平均精度[10]。一般地,我們希望曲線可以盡可能的地靠近(1,1)點,即所圍面積盡可能地靠近1,這樣所得的平均精度最高。如圖5 所示,本系統(tǒng)的平均精度為0.844,其值較高。
我們通過圖6 可視化訓(xùn)練結(jié)果,更加明顯地體現(xiàn)上述參數(shù)的波動性:上述幾個函數(shù)隨訓(xùn)練輪數(shù)的增大,波動不是很大,且體現(xiàn)出穩(wěn)步上升趨勢。
⑶ 損失(loss)函數(shù)
YOLO 使用均方和誤差作為損失函數(shù),即計算輸出的S × S × (B × 5 + C)維向量與真實圖像對應(yīng)的向量的均方和誤差[11]。如式⑸所示:
在損失函數(shù)圖像中,通常使用Box_loss 表示bounding box 的損失,其值越小則表示方框越準(zhǔn),式⑸中對應(yīng)coordError;使用Objectness_loss 表示目標(biāo)檢測損失均值,其值越小則目標(biāo)檢測越準(zhǔn),在式⑸中對應(yīng)iouError;使用Classification_loss 表示分類損失的均值,其值越小則分類越準(zhǔn),式⑸中對應(yīng)classError。由圖7可知,無論是在訓(xùn)練集還是在驗證集中,隨著訓(xùn)練輪數(shù)的增大,以上三種函數(shù)均體現(xiàn)出較好的函數(shù)趨勢。
2.3 機(jī)器人控制端軟件實現(xiàn)
主機(jī)通過VNC 軟件與樹莓派建立遠(yuǎn)程連接,為樹莓派安裝Opencv 與Pytorch。通過文件傳輸將主機(jī)上訓(xùn)練好的pt 模塊傳入到樹莓派上,用Linux 命令進(jìn)入到Y(jié)OLO 文件夾中并運行detect 文件。
2.3.1 圖像識別
以圖像中心點的(x,y )坐標(biāo)作為設(shè)定值,以當(dāng)前獲取的(x,y )坐標(biāo)作為輸入值更新pid。電機(jī)速度會根據(jù)圖像位置的反饋進(jìn)行計算,最后通過位置的變化使速度值發(fā)生線性變化,從而達(dá)到物體跟隨的效果。
2.3.2 舵機(jī)控制
在上位機(jī)識別出商品類型后,如果與要抓取的商品類型相同,上位機(jī)會向樹莓派發(fā)出指令,啟動抓取程序,機(jī)械臂根據(jù)之前記錄的(x,y )坐標(biāo)值抓取物體。
根據(jù)舵機(jī)的規(guī)格,將逆運動學(xué)計算得到的角度轉(zhuǎn)換為相應(yīng)的脈沖寬度值。其中最小脈沖寬度對應(yīng)于舵機(jī)的最小角度,最大脈沖寬度對應(yīng)于舵機(jī)的最大角度。接著,使用控制器或微控制器的輸出引腳,生成相應(yīng)的PWM 信號。舵機(jī)接收到PWM 信號后,解析脈沖寬度值,并根據(jù)該值控制自身的位置。舵機(jī)內(nèi)部的電路將根據(jù)脈沖寬度的變化來決定舵機(jī)的轉(zhuǎn)動方向和速度,從而使舵機(jī)轉(zhuǎn)動到與脈沖寬度對應(yīng)的角度位置。
3 硬件設(shè)計與實現(xiàn)
樣機(jī)采用了TankPi 機(jī)器人,在其中結(jié)合了軟件的功能,實現(xiàn)了視覺識別系統(tǒng)和運動系統(tǒng)的合并,使其能夠?qū)崿F(xiàn)在超市中自動識別、取貨。
3.1 運動結(jié)構(gòu)設(shè)計
針對機(jī)器人運動系統(tǒng)功能要求,選擇履帶作為機(jī)器人行走構(gòu)件,高壓舵機(jī)作為履帶的驅(qū)動機(jī)構(gòu)。履帶能很好地保證機(jī)身運動時的流暢性與便捷性,履帶結(jié)構(gòu)不易打滑,在機(jī)器人運動時能提供穩(wěn)定的狀態(tài)。同時,履帶的裝配能實現(xiàn)前進(jìn)、旋轉(zhuǎn)能功能,使機(jī)器人能在實際應(yīng)用場景中靈活地運動,實現(xiàn)所需的取貨功能。機(jī)器人在面對實際應(yīng)用場景中常常有負(fù)重的情況,故采用LX-224HV 高壓舵機(jī)以保證在小車在各種情況下的正常運行。
3.2 控制系統(tǒng)設(shè)計
本機(jī)器人的控制器設(shè)計采用基于樹莓派的微控制器。樹莓派有完善的操作系統(tǒng),且對Python 的支持很好。使用Python 語言可以快速地在樹莓派上開發(fā)控制機(jī)器人各類結(jié)構(gòu)的軟件??刂破魉惴ㄔO(shè)計采用YOLOv5 實現(xiàn)視覺識別目標(biāo)物體,可方便地在樹莓派4B 上運行。另外,樹莓派體積小巧,占用機(jī)身空間很小,是主控器的理想選擇。
機(jī)器人的環(huán)境感知方面,主要采用了攝像頭和超聲波傳感器。2 自由度的高清晰度攝像頭能實現(xiàn)人臉檢測、顏色識別等等視覺識別功能。攝像頭安裝設(shè)計時增加LFD-01 防堵轉(zhuǎn)舵機(jī)和LD-20MG 數(shù)字舵機(jī),這樣能使攝像頭的轉(zhuǎn)動角度增加,從而大大增加了檢測畫面的范圍。同時,機(jī)器人的超聲波傳感器能通過發(fā)射超聲波并接收反射的超聲波,通過發(fā)射波和接收波的時間差來計算機(jī)器人與目標(biāo)物體的距離。攝像頭和超聲波傳感器的融合能使機(jī)器人實現(xiàn)較為復(fù)雜的抓取物品控制,還能實現(xiàn)機(jī)器人的自動避障功能。
機(jī)器人的目標(biāo)物體抓取方面,采用了BigClaw 合金爪作為實現(xiàn)抓取功能的機(jī)械爪。3 自由度的機(jī)械爪能勝任許多物品的抓取。通過樹莓派控制器,機(jī)器人可以實現(xiàn)目標(biāo)物件的抓取控制功能。
將上述的機(jī)器人運動部件、控制器、傳感器、抓取爪和供電模塊進(jìn)行集成并組裝,形成了本設(shè)計的超市取貨機(jī)器人樣機(jī)。組裝時,首先將底部的機(jī)器人運動部件履帶作為底座,再采用金屬框架搭建,將機(jī)械臂安裝到金屬框架的前端,形成機(jī)器人抓取的空間環(huán)境。然后,將機(jī)器人的控制器主板固定在靠近機(jī)器人的幾何中心位置,完成電機(jī)與控制器之間的正確連線。最后,將機(jī)器人的傳感器部件安裝在控制器主板上方,其中攝像頭固定在機(jī)器人的最上方,為機(jī)器人的圖像采集提供合適的視野,并完成傳感器與控制器的正確連線。
機(jī)器人系統(tǒng)框圖如圖9 所示,機(jī)器人樹莓派控制器根據(jù)顧客的物品需求,通過攝像頭采集到圖像數(shù)據(jù),利用基于YOLO 網(wǎng)絡(luò)的算法軟件,識別到目標(biāo)物體的存在,再融合超聲波傳感器的檢測信息,獲得了目標(biāo)物體的三維位置信息。控制器通過計算得到了運動路徑信息,并將該信息傳送至運動機(jī)構(gòu),履帶運動至目標(biāo)位置后,控制器再發(fā)送抓取命令至機(jī)械臂,抓取目標(biāo)物體,并搬運到指定地點。
4 系統(tǒng)測試
為了對機(jī)器人樣機(jī)進(jìn)行功能測試,本文構(gòu)建了如圖10 所示的實驗場景。
⑴ 將機(jī)器人被放置在一個超市貨架前,貨架上陳列著各種商品,例如:蘋果、香蕉、橘子等等。
⑵ 機(jī)器人通過攝像頭識別每個商品的種類和位置,并將識別結(jié)果傳回系統(tǒng)。
⑶ 發(fā)出抓取命令,觀察機(jī)器人是否能夠正確成功抓取。
實驗測試發(fā)現(xiàn),測試中發(fā)出抓取蘋果的命令,機(jī)器人成功在貨架中抓起了蘋果,并運送至實驗員面前。
經(jīng)過多次測試發(fā)現(xiàn),機(jī)器人能夠在實際應(yīng)用環(huán)境中成功運行YOLO v5 視覺識別系統(tǒng)。如圖11 所示,在50 次系統(tǒng)測試中,對目標(biāo)物體的識別置信度浮動在0.85 上下。其準(zhǔn)確性與軟件算法的模擬結(jié)果接近,達(dá)到預(yù)期目標(biāo)。
此外,在測試過程中發(fā)現(xiàn)機(jī)器人還能完成利用超聲波傳感器進(jìn)行障礙規(guī)避行駛的自動避障。同時,機(jī)器人也能實現(xiàn)目標(biāo)物體的跟隨。
5 結(jié)束語
本文闡述了基于YOLOv5 網(wǎng)絡(luò)的超市自動取貨機(jī)器人的設(shè)計與實現(xiàn),包括軟件設(shè)計以及硬件設(shè)計組裝,得到的機(jī)器人樣機(jī)經(jīng)過測試取得了較高的準(zhǔn)確率與穩(wěn)定性。在后續(xù)研究中,將嘗試在實際超市環(huán)境下做目標(biāo)物體的檢測實驗,驗證YOLOv5 算法的有效性和硬件設(shè)計的可靠性,并根據(jù)實驗結(jié)果對機(jī)器人樣機(jī)進(jìn)行改進(jìn)優(yōu)化,簡化參數(shù)的復(fù)雜程度,以進(jìn)一步提高樣機(jī)的識別速度和準(zhǔn)確性。同時,嘗試使用更多商品種類和拍攝角度進(jìn)行訓(xùn)練和優(yōu)化,進(jìn)一步增強(qiáng)模型的泛化能力,爭取避免漏檢漏取等情況。