周宇,呂勇,田俊彥
(1.瑞晟微電子(蘇州)有限公司,江蘇蘇州, 215021;2.蘇州大學 機電工程學院,江蘇蘇州, 215021)
隨著計算機技術和人工智能技術的不斷發(fā)展,機器人技術也在不斷更新發(fā)展。我國政府也高度重視機器人技術的前景和重要性,在很多國家重點項目中都大力發(fā)展機器人技術,而服務機器人作為典型的人工智能產品,也得到了快速發(fā)展。因此,研發(fā)出更加智能化的服務機器人已成為學術以及工業(yè)界的主要研究課題之一,也逐漸讓服務機器人[1]出現在家居商超、安檢巡防、餐廳娛樂以及醫(yī)療教育等場景中。
人類獲取信息的一種重要手段是通過視覺,計算機視覺的快速發(fā)展賦予了服務機器人進行目標檢測[2],從而完成更多負責任務的可能性。由于深度學習的興起,基于傳統(tǒng)手工特征的目標檢測方法已逐漸過渡到自動獲取特征的方法。基于深度學習的目標檢測根據其原理主要分為兩階段和一階段檢測方法,而一階段檢測方法由于其較高的實時性,在服務器機器人相關領域得到了更多的落地與應用。YOLO 系列算法[3~5]的提出與不斷迭代進一步提升了服務器機器人的檢測性能,本文基于YOLO 系列中的YOLOv5[6]展開研究,分別從網絡的輸入端、骨干網絡的可變形卷積以及頸部網絡的C2f 模塊對網絡進行改進,在提升模型精度的同時保證了較高的實時性。
服務機器人的研究意義主要體現在以下幾個方面:(1)提升效率和節(jié)約成本,服務機器人可以取代部分人力工作,減少人力成本,提高工作效率。服務機器人可以在超市、商場等場所提供導購、收銀以及清潔等服務;(2)提升顧客體驗,服務機器人可以為顧客提供更好的服務體驗,比如在醫(yī)院里為病人提供人性化的導航和送藥等服務;(3)促進機器人的發(fā)展,服務機器人是機器人技術應用的重要領域之一,為機器人技術的應用提供新的思路和方向。而物體識別和檢測是服務機器人的關鍵技術之一,其可以使服務機器人進一步智能化。
首先,利用服務機器人搭載的攝像頭制作數據集,在對圖像進行分類、標注后,得到帶有類別標簽的數據集用于訓練和測試。數據集共計8100 張圖片,共計14 種類別的物體,分別為電線、拖鞋、襪子、書、垃圾桶、地毯、馬桶、窗簾、凳子、床、沙發(fā)、糞便、桌子和櫥柜。本方案中訓練集占數據集的80%,測試集占數據集的20%。數據集的建立可以將目標檢測模型進行很好的遷移,從而使服務機器人在具體的場景下能夠高效率地識別物體。
YOLOv5 作為典型的基于深度學習的目標檢測方法,在檢測速度以及精度方面有了較好的平衡,但是YOLOv5 中的C3 卷積層是一個固定的、規(guī)則的感受野,對所有的空間位置都等效,忽略了圖片中不同區(qū)域的顯著性差異,因此本文重點對C3 模塊進行改進。此外,基于深度學習的目標檢測模型主要分為輸入端、骨干網絡、頸部網絡以及輸出端四部分,而每一部分對最終的檢測性能都有影響,因此本文的改進也綜合考慮了網絡的各部分作用。
本文針對服務機器人提出的YOLOv5++網絡的總體架構如圖1 所示,首先,在輸入采用Moaic 與常規(guī)數據增強結合的方法;其次,在骨干網絡中,采用可變形卷積替換原有的C3 模塊,增強網絡對形變物體的特征提取能力;最后,在頸部網絡中采用C2f 模塊替換原有的C3 模塊,可以保證精度的同時將速度進一步提升。綜上所述,通過輸入端、骨干網絡以及頸部網絡的三部分改進,三者有機結合,不斷加強網絡對特征的提取能力。具體如圖1 所示,其中DCNv3 表示可變形卷積模塊,共計使用四次。而C2f 也采用了四次,主要在頸部網絡中使用,網絡的輸入圖像分辨率為640×640×3,網絡的輸出共計三個尺度,分別為80×80,40×40 以及20×20,主要用來檢測小物體、中等物體以及大物體。
圖1 YOLOv5++總體架構
本實驗主要采用如下設備,處理器為 intel Core i9-9900K CPU3.6GHz, 顯卡為 GeForce RTX3090Ti, 顯存容量為 24GB,類型為 GDDR 6,內存為 32G,系統(tǒng)為Ubuntu20.04。其中環(huán)境配置CUDA 版本為11.6,Python版本為3.10,pytorch 版本為1.13.1,YOLOv5 版本為6.2。
實驗步驟如下:(1)將數據集放入指定文件夾下面;(2)啟動虛擬環(huán)境根據實驗要求配置算法需要的虛擬環(huán)境;(3)修改訓練的標簽為14 類類別,加載預訓練權重、設置訓練輪數、塊大小以及圖片輸入大小,進行模型的訓練與調試;(4)依次加入數據增強方法,在骨干網絡與頸部網絡中替換C3 模塊進行消融實驗。(5)利用腳本對測試數據集進行測試,獲取算法的mAP 值以及檢測精度。
消融實驗是一種科學的研究方法,旨在通過逐步刪除或修改研究中的某些組件,來探究這些組件對研究結果的影響。在機器學習領域,消融實驗通常用于評估模型中某些組件的貢獻,例如網絡結構中的不同層、損失函數中的不同項或者數據預處理方法等。通過逐步地刪除或者修改這些組件,可以更好地理解它們在模型性能中的作用,從而有助于優(yōu)化模型設計和訓練過程。消融實驗常常與對照組實驗結合使用,以比較不同組件對模型性能的影響,從而得出結論并指導模型的改進。為了逐步驗證實驗的有效性,本實驗分為三個步驟進行,首先采用數據增強方法將精度從79.4%提升為79.9%,雖然提升的精度不大,但數據增強算法還是具有突出的優(yōu)點,它可以在不增加推理時間的前提下提高準確率。特別是對于那些特征不明顯、色彩單一的物體,它表現出優(yōu)秀的增強效果。
其次,采用DCNv3 模塊進行消融實驗,一般來說,DCNv3 作為DCN 系列的擴展,具有以下三個優(yōu)點:(1)該算子彌補了針對正則卷積在長距離依賴性和自適應空間聚合方面的不足;(2)與基于注意力的算子(如常見MHSA 和密切相關的可變形注意力)相比,該算子繼承了卷積的歸納偏差,使我們的模型更高效,訓練數據更少,訓練時間更短;(3)該算子基于稀疏采樣,比以前的方法(如MHSA 和重新參數化大內核)更具計算效率和內存效率。
實驗結果如表1所示。具體如下,分別替換1個(第八層),2 個(第八層+第六層),3 個(第八層+第六層+第四層),4 個(第八層+第六層+第四層+第二層)C3 模塊,并且對替換后的模型進行了精度,大小和速度的測試。實驗結果表明,當替換第八層C3 時,即對一個C3 模塊進行替換,模型的精度提升了1.4%,模型的大小只增加了0.3M,速度也幾乎沒有太大的影響,FPS 只是從149 變?yōu)?47。
表1 DCNv3替換C3的消融實驗
最后,采用C2f 模塊進行消融實驗,C2f 模塊主要參考了C3 模塊以及ELAN 的思想進行的設計,讓網絡在保證輕量化的同時獲得更加豐富的梯度流信息。實驗同樣進行了四次,結果如表2 所示。4 次實驗分別替換了1 個,2 個,3 個,4 個C3 模塊,實驗結果表明將C3 模塊替換為C2f 模塊對YOLOv5 模型的性能產生了積極的影響,分別提升了0.3%,0.8%,1.0%,1.2%,而模型大小幾乎沒有增加,檢測速度也保持較高的實時性。
表2 C2f模塊替換C3模塊的消融實驗
綜上所述,每多替換一個C3 模塊,模型的性能都有所提升,而模型的大小也幾乎無變化,可以看出C2f 模塊確實是做到了在保證輕量化的基礎上,做到了全方面地優(yōu)于C3模塊,因此對YOLOv5 的改進時,我們選擇了將頭部的C3模塊全部替換為C2f 模塊。
在上述基礎上再次進行實驗驗證,逐步在單一模塊上再引入其他模塊,得到結果如表3 所示。由表可知,數據增強后,模型相比于YOLOv5 的精度有了0.05%的提升,使用DCNv3 模塊后,實現了精度上2.4%的提升,最后使用C2f 模塊替換頭部的全部C3 模塊,精度上進一步有了0.9%的提升。實驗結果證明了本文方法的有效性。在改進的過程中,伴隨著模型大小的增加,檢測速度的下降,最終的模型相較于基準模型,參數量由2.1M 增大到2.9M,FPS 也由原來的196 降為169,但是模型的精度由79.4%提升到83.9%,一共提升了4.5%,這是一個較大的提升。
表3 模塊組合以后的模型性能
通過仿真結果可視化可以進一步了解模型的相關性能,而混淆矩陣是深度學習中常用的可視化工具。矩陣的每一列代表一個類的實例預測,每一行代表一個實際的類的實例,通過混淆矩陣可以方便地看出模型是否將兩個不同的類相混淆,具體如圖2 所示。同樣地,我們對訓練數據集的標簽進行可視化,觀察每個類別的分布情況,如圖3 所示。圖3中,第一行第一列代表了訓練集的數據量,表示每個類別分別占多少個,第一行第二列是框的尺寸和數量,第二行第一列是中心點的位置,由此可見數據集物體的分布相對比較分散,第二行第二列是標簽的高度和寬度,大部分集中在(0-0.4,0-0.4)區(qū)間。
圖2 模型訓練中的混淆矩陣
圖3 標簽相關圖
此外,PR 曲線反映了每個類別的精度,曲線越靠近右上角,表明該類別的精度越高,而精度越高,相應的召回率越低,如圖4 所示。由圖可知,糞便的檢測精度最高,達到了96.8%,而電線的精度只有67.6%,其余物體的精度大部分處于80%以上,由此可見可以滿足服務機器人的識別需求。
圖4 服務機器人目標檢測的PR 曲線
為了更好地觀察模型的檢測結果,有必要將檢測結果可視化,具體如圖5 所示,不同的顏色框代表了不同的檢測類別,比如紅色代表檢測的是垃圾桶。具體地,比如第一行第一列中的電線被正確識別。此外,當圖片中出現多個物體時,比如第三行第一列,本文提出的算法可以同時識別出多個凳子和窗簾。在實際場景中,本文提出的YOLOv5++可以較好地檢測出典型的避障目標,從而證明本文提出方法的有效性。
圖5 服務機器人檢測結果
本文針對服務機器人目標檢測中存在的問題,基于YOLOv5 算法提出了一種改進的YOLOv5++算法。該算法在保證模型輕量化的前提下,模型的精度得到了有效的提升。實驗結果表明,服務機器人能夠高效識別實際場景中的目標,同時也滿足服務機器人對避障的實時需求,但極個別類別的檢測精度有待進一步提高。
本文的后續(xù)研究方向可以分為如下兩個方面:第一,雖然現有的小目標檢測性能有一定提升,但檢測精度依然不夠高,小目標檢測以及遮擋較嚴重的目標檢測仍然是服務機器人目標檢測領域的難點問題;第二,伴隨著實際工程中的應用,模型能否和硬件更好地適配將變得十分關鍵。對于服務機器人而言,如何使模型具有良好檢測性能的同時,降低算法復雜度,從而得到更適合實際應用的輕量化網絡是將來值得研究的目標。