吳添凡,文奧捷,高雨,張志寰
(東南大學成賢學院 電子與計算機工程學院,江蘇南京, 210000)
目前幾乎所有的掃地機器人都不具備識別具體物體的功能,在碰到一些小物品時無法進行規避,而一些常見的情況是會將物品推動到墻角。因此引入神經網絡和深度學習是掃地機器人在圖像識別領域邁出的重要一步,物品的識別與檢測應用到掃地機器人的潛力是非常大的。本文使用YOLOv5s神經網絡架構,實現了對于U盤、鑰匙、戒指、手表的識別。對于散落在地上的小物品進行檢測和特殊處理。
基于YOLOv5s的掃地機器人主要由微型計算機、外圍電路(如電機驅動電路、舵機驅動電路、各個傳感器數據回傳電路)、數據接收模塊、傳輸命令模塊組成。數據接收模塊主要由攝像頭和傳感器組成,負責機器人外部環境感知及外部信息內傳,傳輸命令模塊主要由驅動電機和清掃電機組成,負責完成掃地機器人的移動和清掃工作。
結構框圖如圖1所示。

圖1 基于YOLOv5s的掃地機器人結構框圖
主控單元為Arduino UNO和MSP430F5529雙主控,由Arduino UNO控制機械臂完成抓取功能和清掃功能,MSP430F5529完成避障功能、電機PWM輸出功能、紅外識別功能以及可以通過藍牙模塊接收從電腦端返回的識別結果再傳輸給Arduino UNO。
圖2和圖3是Arduino UNO的原理圖和MSP430F5529的原理圖。

圖2 Arduino UNO原理圖

圖3 MSP430F5529原理圖
本文采用超聲波HC-SR04超聲波傳感器,其原理是:當持續時間至少為10μs的脈沖施加到觸發引腳時,開始執行檢測任務傳感器以40kHz的頻率發射八個脈沖的聲音脈沖。八個超聲波脈沖通過空氣傳播,遠離發射器,回聲引腳變為高電平,開始形成回聲信號的開始。如果這些脈沖沒有被反射回來,則回波信號將在38ms后超時并返回低電平。因此38ms的脈沖表示在傳感器范圍內沒有阻塞。如果這些脈沖被反射回去,則在收到信號后,Echo引腳就會變低。這會產生一個脈沖,其寬度在150μs至25ms之間變化,具體取決于接收信號所花費時間。這樣就可以達到超聲波模塊自動發出一次檢測信號的效果了。超聲波檢測模塊原理圖如圖4所示。

圖4 超聲波檢測模塊原理圖
本文采用BTN7971驅動芯片,BTN7971B是用于電機驅動應用的集成大電流半橋,有大電流高驅動的特點,超小內阻,并對驅動電路加裝了隔離芯片,最大限度地保護單片機。還采用了高質量濾波大電容,使電路更加穩定。驅動模塊原理圖如圖5所示。

圖5 驅動模塊原理圖
本文采用TCRT5000紅外模塊,工作時發射管發射出一定頻率的紅外線,當檢測到障礙物的時候,紅外線反射回來被接收管接收,經過比較器電路處理之后,得到一個信號,此時輸出指示燈會亮起,同時信號輸出接口輸出一個低電平信號,從而達到檢測物品的效果。紅外模塊原理圖如圖6所示。

圖6 紅外模塊原理圖
本文采用HC-05藍牙模塊與電腦端進行通訊,將電腦端神經網絡識別的結果返回給主控模塊,達到檢測結果傳輸的目的。藍牙模塊原理圖如圖7所示。

圖7 藍牙模塊原理圖
近年來隨著神經網絡和深度學習的應用廣泛,越來越多的人加入到了神經網絡的開發和更新換代中,YOLO算法是Joseph Redmon于2015年提出的單階段目標檢測算法,YOLO算法跟R. Girshick于2014年創立的RCNN系列兩階段目標計算一起引領基于深度學習的目標測試計算的發展。YOLO系列算法是一種能滿足實時檢測要求(FPS>30)的高精度算法,他也是更新換代很快的一種神經網絡,在2020年2月21日,YOLO算法創始人宣布停止更新YOLO后各路民間高手層出不窮,2020年6月9日,在距離上一個YOLOv4發表不到50天的時間里,Ultralytics公司開放了YOLOv5,并且YOLOv5是全部通過PyTorch完成。YOLOv5m在YOLOv5s基本上,繼續深入加寬網絡,AP精確度也繼續提高,但速度的消耗也在繼續加大。YOLOv5l在YOLOv5m技術基礎上,進一步深入加寬網絡技術,AP精確度也進一步提高,但速度的耗費也在不斷地加大。YOLOv5x在YOLOv5l基本上,繼續深入加寬網絡,AP精確度也繼續提高,但速度的耗費也在繼續加大。而YOLOv5s網絡是YOLOv5系列中特征圖的深度最淺、寬度最小的網絡。雖然YOLOv5s AP精度最低速、網絡最小。但如果在檢測中追求部署的容易程度或者硬件要求等,YOLOv5s倒也是個不錯的選擇。
考慮到硬件本身和需要快速地檢測物品以及成本等,本文采用輕量級的YOLOv5s神經網絡進行訓練,實現了對于U盤、鑰匙、戒指的識別。
YOLO神經網絡結構首先輸入一個480*480的圖片,通過一定數量的卷積層和池化層,最后再經過兩個全連接層,生成7*7*30的輸出。
具體分析:YOLO將一幅480*480的原圖劃分成了7×7=49個網格,各個網格要估計2個預選框(bounding box)的位置(x,y,w,h),其中x和y代表box中心線與該格子界線的距離值,w和h代表預估框的長寬和高程相應于整幅圖片的長寬和高程的比值。所以,這四個值的大小都會被限制在0-1之間。各個網格還會預計框內是否含有物品的置信度(confidence),各個預選框都有一種置信度,包括物品歸屬于每一種類型的概率(YOLO的訓練數據為VOC2012,是一種20類型的統計集合),也就意味著各個網格預計20個類型的概率。所以我們可以得出,4×2+2+20=30,也即是一個網格有30個值,對應一個30維的向量。
整個YOLOv5s模型包含了如下幾個模塊:CBS模 塊:conv+bn+silu,這 里 的silu就 是swish無參數的實現版本,下采樣都是來自CBS的2的stride實現CSP1模塊:兩路,一路CBS+殘差堆疊,一路只有一個CBS來調整通道,concat做聚合,這里的不同在于殘差會有N個,主要用于backbone階段,Backbone網絡是檢測網絡的主干,網絡提取出圖像的高中低層的特征。CSP2模塊:相比于CSP1,去掉了殘差,用的原始的CBS,主要用于neck階段。SPPF:SPP的快速實現版本,這里maxpooling的kernel都是5,stride為1,padding補齊。head: 普通conv卷積,輸出為(class+obj+x+y+w+h)* len(anchors), 因 為coco是80個類別,anchors數量是3,所以就是(80+1+4)*3 =255。
本文的檢測小物品的框架圖如圖8所示。從圖中可以看出,實現小物品檢測的步驟是先輸入圖像,建立數據集標注小物品預處理,對模型進行訓練,最后將正常的圖片輸入模型進行判斷,輸出檢測結果。

圖8 小物品檢測方案圖
3.3.1 訓練前的準備工作
為了保證數據集的質量,采集的數據采用真實自然的場景和真實的物品,利用代碼將二者隨機結合隨機生成,得到可以采用的數據集,最后再經過篩選得到16347張數據集準備標注。
數據集的標注,采用labelimg工具對小物品(戒指、手表、U盤、鑰匙)進行標注,并將圖片的標注的圖片格式由xml轉換為YOLOv5s的格式,再對圖片進行編號排序。
3.3.2 網絡訓練中
首先搭建目標檢測環境對模型進行訓練,文中采用的實驗平臺選擇的是Windows 10操作系統,利用Pycharm軟件進行模擬仿真,具體配置情況如表1所示。

表1 硬件參數
在訓練的過程中,具體的訓練參數設置情況如下:分組大小batch_size設置為4,訓練次數epoch設置為200。
通過YOLOv5s算法檢測,結果如圖9所示。

圖9 小物品檢測結果圖
F1值:兼顧模型的準確性和召回率。精確率是根據我們預測結果來說的,它代表的是預期為正的樣品中有幾個是真實的正樣品。召回率是指針對我們最初的樣品來說的,它代表的是樣品中的正例有哪些被預期正確了。
PR曲線中的P代表的是precision(精準率),R代表的是recall(召回率)。
AP是Precision-Recall Curve(PRC)下面的面積。
map_0.5:0.95:表示在不同IoU閾值(從0.5到0.95,步長0.05)。
Train loss是訓練統計上的損失,反映模型在訓練集上的擬合能力。Val loss是在檢驗集上的損失,反映的是在未見過統計上的擬合才能,也可以說是泛化能力。模型的真實有效性可以用val loss來度量。
訓練結果的F1曲線和PR曲線分別如圖10和圖11所示。

圖10 F1曲線圖

圖11 PR曲線圖
其中F1曲線靠近右上方,P-R曲線非常靠近右上角,由于在F1曲線中F1的值為兩倍的Precision值和Recall值相乘再除以Precision值和Recall值的和得到的值,所以F1的值越大越好;在PR曲線中Precision值和Recall值越大越好,所以PR曲線越往右上角凸越好,在此均表示為模型性能非常好。
從實驗結果看出了YOLOv5s算法對于這些小物品的檢測精度和速度都是非常高的,但是在實驗中,如果對數據集進行更有效的處理,或者將注意力模塊CBAM與YOLOv5s網絡的Neck部分融合,提高網絡的特征提取能力。
本文提出了采用YOLOv5s網絡結果進行小物品檢測算法,在很大程度上降低了硬件的門檻,也使掃地機器人的檢測速度提升,最終返回的結果良好,將YOLOv5s運用在掃地機器人上有很大的可行性。