?

基于YOLOv5的超市自動取貨機器人設計與實現

2023-12-18 10:42高駿一鄭榜貴王穎雪劉楚彤柳雨萌關景華
計算機時代 2023年11期
關鍵詞:目標檢測神經網絡機器人

高駿一 鄭榜貴 王穎雪 劉楚彤 柳雨萌 關景華

關鍵詞:YOLOv5;神經網絡;目標檢測;自動取貨;機器人

中圖分類號:TP391.4;TP242.3 文獻標識碼:A 文章編號:1006-8228(2023)11-22-06

0 引言

為客戶提供快速、便捷和舒適的購物環境是各大商場和超市所追求的目標。本文結合YOLOv5 神經網絡識別算法,設計了一款超市自動取貨機器人,力求在一定程度上減輕物流行業的壓力,提升服務工作效率,同時盡量避免因人群聚集而引起的病毒傳播。

1 整體設計

為使自動取貨機器人具有獨立決策、并行高效的特點,設計的機器人在樹莓派上運行YOLOv5 算法。機器人底層硬件控制部分采用了樹莓派4B,具有4G內存,搭載64 位操作系統Raspberry,給在樹莓派上實現YOLOv5 算法的目標檢測提供了保障。

在上層主機上配置YOLOv5 環境,下載源碼,使用數據集進行訓練。在底層樹莓派上配置YOLOv5運行環境,主機通過VNC 軟件與樹莓派建立遠程連接,樹莓派控制攝像頭進行圖像獲取,并通過無線傳輸的方式將圖像傳輸給主機。如圖1 所示。樹莓派利用部署在主機上的YOLOv5 模型進行圖像識別并返回識別結果,再控制機械臂進行抓取。

2 軟件設計與實現

YOLOv5 的檢測系統主要分為三個階段:

⑴ 數據預處理,將輸入圖像縮放到統一的大?。▽⒎直媛收{整到448 ×448,見2.1.3),然后進行數據增強以增加模型的泛化能力。

⑵ 將圖像通過全卷積神經網絡。

⑶ 利用極大值抑制(NMS)進行篩選以去除冗余的檢測框。

通過上述流程,結果中會顯示最具有代表性的框,且具有較小的誤檢率和重復率。

2.1 YOLOv5 工作原理

YOLOv5 是基于卷積神經網絡、網格視角和多尺度預測技術的目標檢測技術,它能夠快速準確地檢測目標物體。YOLO 采用回歸方法來解決物體檢測問題,使用“端到端”網絡,實現了從輸入原始圖像到輸出物體位置和類別的全過程。YOLO 主要有以下突出特點[1]:

⑴ 不像其他目標檢測算法采用回歸問題+分類問題的檢測方式,而是將目標檢測當作一個回歸問題來處理。

⑵ YOLO 使用單個網絡進行目標檢測,僅需一次前向傳播即可輸出圖像中所有目標的檢測框和類別信息。這種端到端的方法不僅方便了訓練和優化網絡,同時也提高了檢測的速度和效率。

2.1.1 網絡結構

YOLO 的檢測網絡由24 個卷積層和2 個全連接層組成。卷積層用于提取圖像特征,全連接層用于預測目標的位置和類別概率。此外,YOLO 采用了多個下采樣層來增加網絡感受野以提高目標檢測的準確性。YOLO 的網絡結構受到了GoogLeNet 分類網絡的啟發[2],但與GoogLeNet 不同的是,YOLO 沒有使用Inception 模塊,而是使用1 × 1卷積層和3 × 3卷積層的簡單組合來代替。

2.1.2 輸出

YOLO 的目標檢測方法將輸入圖像劃分成一個S×S 的網格,在每個網格上預測出B 個邊界框以及每個邊界框所屬物體的類別概率。當某個物體的中心點位于某個網格中時,該網格就負責檢測該物體。每個邊界框包含五個信息:中心點坐標(x, y)、寬度、高度以及邊界框所屬物體的置信度[3]。在卷積神經網絡中,B 和C 的數量是預先設定的。

2.1.3 模型訓練原理

⑴ 預訓練。YOLO 網絡的前20 個卷積層、1 個平均池化層和1 個全連接層使用ImageNet1000 類數據進行訓練[4]。輸入的圖像被調整到224×224 的分辨率。

⑵ 使用步驟1 得到的前20 個卷積層的網絡參數來初始化YOLO 模型前20 個卷積層的網絡參數,然后使用標注數據進行訓練。為了提高圖像精度,訓練過程中將輸入圖像的分辨率調整為448×448。

2.2 基于YOLOv5 的目標識別

2.2.1 系統訓練

找到相關數據集共4100 張,其中包含“apple”,“permission”,“orange”等共9 類。在運行YOLOv5 程序前,需先對數據集進行標簽化處理。由于圖像標注工具“labelimg”具有速度快,以及可保證數據質量與準確性的特點,最終選擇該平臺進行數據標注。最終得到有效標簽4000 個。

訓練執行前,進行了命令行的參數預設,預設結果如表1 所示。

在訓練過程中,模型通過反向傳播算法計算梯度,并使用梯度下降算法來更新模型的權重參數,以最小化損失函數。本文使用的模型是YOLOv5s,在訓練過程中,主要更改的是整個網絡結構的權重參數。這包括主干網絡和預測頭網絡。主干網絡通過修改各層的權重參數,以獲得更全面的特征信息。預測頭網絡則通過修改各層的權重參數,包括路徑聚合和檢測頭,以提高檢測性能,并使其適應于檢測不同尺寸的目標。本文利用PyQt5 構建了可視化界面,增添了視頻文件識別模塊和攝像頭實時識別模塊。最終可視化界面如圖2 所示。

2.2.2 目標識別

從以下評價參數對所得訓練結果進行分析:

其中,T/F 表示最終預測是否正確(True/False),P/N 表示模型預測結果為正例或為負例(Positive/Negative),TP 表示模型預測結果為正例且正確的識別數量,TN,FP,FN 含義同理[5]。下同。

由式⑴可知,準確率是最簡單、最直觀的評價指標。但當樣本分布不均時,指標的計算結果會被占比大的類別所主導,從而導致較大的誤差。同時,由該公式得到的結果太過于籠統,實際應用中,可能更加關注某一類別樣本的情況。

很明顯,精確率和召回率是一對相互矛盾的指標,一般來說高精準率往往對應著低召回率,反之亦然。

精確率-置信度關系圖與召回率-置信度關系圖則是為更加直觀地體現識別結果。為使實驗結果更具代表性,本文中使用的各類數據集總數并不一致,其中“pear”和“mongo”等類的數據集數量較少。

由圖3 可知,對于數據集數量較少的“pear”類和“mongo”類的準確率函數和隨置信度(Confidence)的變化波動性極大,而對于“orange”等類的函數值較為穩定,且非??拷?,這表示其精度較高。同時可知在置信度為0.902 時即可保證所有類別的識別結果正確的概率為1,其值較為可觀。

類似地,由圖4 可知,“pear”類和“mongo”類的召回率函數在相同的置信度條件下的函數值同樣較小,“orange”等類的函數值較高。當置信度小于0.96 時,可識別較多的目標物體類別。

除此之外,在評估中還有精確率-召回率關系圖。在該圖像中,還涉及到了IoU,mAP 兩個參數。

IoU 為深度學習模型中的常見評估指標,其常常用來評估性能。該指標表示預測邊界框與真實邊界框的重疊程度[7-8]。令A 為預測邊界框面積,B 為真實邊界框面積,則IoU 計算如下:

其中,A ∩ B 表示預測邊界框和真實邊界框之間重疊區域的面積,A ∪ B 表示兩個邊界框所占據的總區域的面積。顯然,IoU 的值越大,表示檢測器的性能越好。

mAP(Mean Average Precision),即均值平均精度,表示每個類的AP(Average Precision)的平均值[9]。

在表示時,常常表示為“a mAP @ b”,其中a 表示mAP 值,b 表示IoU 的閾值。在精確率-召回率關系圖中,其圖像與橫坐標所圍面積即為所求的均值平均精度[10]。一般地,我們希望曲線可以盡可能的地靠近(1,1)點,即所圍面積盡可能地靠近1,這樣所得的平均精度最高。如圖5 所示,本系統的平均精度為0.844,其值較高。

我們通過圖6 可視化訓練結果,更加明顯地體現上述參數的波動性:上述幾個函數隨訓練輪數的增大,波動不是很大,且體現出穩步上升趨勢。

⑶ 損失(loss)函數

YOLO 使用均方和誤差作為損失函數,即計算輸出的S × S × (B × 5 + C)維向量與真實圖像對應的向量的均方和誤差[11]。如式⑸所示:

在損失函數圖像中,通常使用Box_loss 表示bounding box 的損失,其值越小則表示方框越準,式⑸中對應coordError;使用Objectness_loss 表示目標檢測損失均值,其值越小則目標檢測越準,在式⑸中對應iouError;使用Classification_loss 表示分類損失的均值,其值越小則分類越準,式⑸中對應classError。由圖7可知,無論是在訓練集還是在驗證集中,隨著訓練輪數的增大,以上三種函數均體現出較好的函數趨勢。

2.3 機器人控制端軟件實現

主機通過VNC 軟件與樹莓派建立遠程連接,為樹莓派安裝Opencv 與Pytorch。通過文件傳輸將主機上訓練好的pt 模塊傳入到樹莓派上,用Linux 命令進入到YOLO 文件夾中并運行detect 文件。

2.3.1 圖像識別

以圖像中心點的(x,y )坐標作為設定值,以當前獲取的(x,y )坐標作為輸入值更新pid。電機速度會根據圖像位置的反饋進行計算,最后通過位置的變化使速度值發生線性變化,從而達到物體跟隨的效果。

2.3.2 舵機控制

在上位機識別出商品類型后,如果與要抓取的商品類型相同,上位機會向樹莓派發出指令,啟動抓取程序,機械臂根據之前記錄的(x,y )坐標值抓取物體。

根據舵機的規格,將逆運動學計算得到的角度轉換為相應的脈沖寬度值。其中最小脈沖寬度對應于舵機的最小角度,最大脈沖寬度對應于舵機的最大角度。接著,使用控制器或微控制器的輸出引腳,生成相應的PWM 信號。舵機接收到PWM 信號后,解析脈沖寬度值,并根據該值控制自身的位置。舵機內部的電路將根據脈沖寬度的變化來決定舵機的轉動方向和速度,從而使舵機轉動到與脈沖寬度對應的角度位置。

3 硬件設計與實現

樣機采用了TankPi 機器人,在其中結合了軟件的功能,實現了視覺識別系統和運動系統的合并,使其能夠實現在超市中自動識別、取貨。

3.1 運動結構設計

針對機器人運動系統功能要求,選擇履帶作為機器人行走構件,高壓舵機作為履帶的驅動機構。履帶能很好地保證機身運動時的流暢性與便捷性,履帶結構不易打滑,在機器人運動時能提供穩定的狀態。同時,履帶的裝配能實現前進、旋轉能功能,使機器人能在實際應用場景中靈活地運動,實現所需的取貨功能。機器人在面對實際應用場景中常常有負重的情況,故采用LX-224HV 高壓舵機以保證在小車在各種情況下的正常運行。

3.2 控制系統設計

本機器人的控制器設計采用基于樹莓派的微控制器。樹莓派有完善的操作系統,且對Python 的支持很好。使用Python 語言可以快速地在樹莓派上開發控制機器人各類結構的軟件??刂破魉惴ㄔO計采用YOLOv5 實現視覺識別目標物體,可方便地在樹莓派4B 上運行。另外,樹莓派體積小巧,占用機身空間很小,是主控器的理想選擇。

機器人的環境感知方面,主要采用了攝像頭和超聲波傳感器。2 自由度的高清晰度攝像頭能實現人臉檢測、顏色識別等等視覺識別功能。攝像頭安裝設計時增加LFD-01 防堵轉舵機和LD-20MG 數字舵機,這樣能使攝像頭的轉動角度增加,從而大大增加了檢測畫面的范圍。同時,機器人的超聲波傳感器能通過發射超聲波并接收反射的超聲波,通過發射波和接收波的時間差來計算機器人與目標物體的距離。攝像頭和超聲波傳感器的融合能使機器人實現較為復雜的抓取物品控制,還能實現機器人的自動避障功能。

機器人的目標物體抓取方面,采用了BigClaw 合金爪作為實現抓取功能的機械爪。3 自由度的機械爪能勝任許多物品的抓取。通過樹莓派控制器,機器人可以實現目標物件的抓取控制功能。

將上述的機器人運動部件、控制器、傳感器、抓取爪和供電模塊進行集成并組裝,形成了本設計的超市取貨機器人樣機。組裝時,首先將底部的機器人運動部件履帶作為底座,再采用金屬框架搭建,將機械臂安裝到金屬框架的前端,形成機器人抓取的空間環境。然后,將機器人的控制器主板固定在靠近機器人的幾何中心位置,完成電機與控制器之間的正確連線。最后,將機器人的傳感器部件安裝在控制器主板上方,其中攝像頭固定在機器人的最上方,為機器人的圖像采集提供合適的視野,并完成傳感器與控制器的正確連線。

機器人系統框圖如圖9 所示,機器人樹莓派控制器根據顧客的物品需求,通過攝像頭采集到圖像數據,利用基于YOLO 網絡的算法軟件,識別到目標物體的存在,再融合超聲波傳感器的檢測信息,獲得了目標物體的三維位置信息??刂破魍ㄟ^計算得到了運動路徑信息,并將該信息傳送至運動機構,履帶運動至目標位置后,控制器再發送抓取命令至機械臂,抓取目標物體,并搬運到指定地點。

4 系統測試

為了對機器人樣機進行功能測試,本文構建了如圖10 所示的實驗場景。

⑴ 將機器人被放置在一個超市貨架前,貨架上陳列著各種商品,例如:蘋果、香蕉、橘子等等。

⑵ 機器人通過攝像頭識別每個商品的種類和位置,并將識別結果傳回系統。

⑶ 發出抓取命令,觀察機器人是否能夠正確成功抓取。

實驗測試發現,測試中發出抓取蘋果的命令,機器人成功在貨架中抓起了蘋果,并運送至實驗員面前。

經過多次測試發現,機器人能夠在實際應用環境中成功運行YOLO v5 視覺識別系統。如圖11 所示,在50 次系統測試中,對目標物體的識別置信度浮動在0.85 上下。其準確性與軟件算法的模擬結果接近,達到預期目標。

此外,在測試過程中發現機器人還能完成利用超聲波傳感器進行障礙規避行駛的自動避障。同時,機器人也能實現目標物體的跟隨。

5 結束語

本文闡述了基于YOLOv5 網絡的超市自動取貨機器人的設計與實現,包括軟件設計以及硬件設計組裝,得到的機器人樣機經過測試取得了較高的準確率與穩定性。在后續研究中,將嘗試在實際超市環境下做目標物體的檢測實驗,驗證YOLOv5 算法的有效性和硬件設計的可靠性,并根據實驗結果對機器人樣機進行改進優化,簡化參數的復雜程度,以進一步提高樣機的識別速度和準確性。同時,嘗試使用更多商品種類和拍攝角度進行訓練和優化,進一步增強模型的泛化能力,爭取避免漏檢漏取等情況。

猜你喜歡
目標檢測神經網絡機器人
神經網絡抑制無線通信干擾探究
視頻中目標檢測算法研究
行為識別中的人體運動目標檢測方法
移動機器人圖像目標識別
基于神經網絡的拉矯機控制模型建立
基于P3電位的目標檢測研究
復數神經網絡在基于WiFi的室內LBS應用
機器人來幫你
認識機器人
機器人來啦
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合