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