鄭亮亮,郭 宇,蒲 俊,周海浪,齊健文
(南京航空航天大學(xué)機(jī)電學(xué)院,南京 210016)
當(dāng)前復(fù)雜裝配場景中零件數(shù)量種類多,尺寸多樣,既包含大零件也存在螺釘、螺栓等細(xì)小零件,尺寸往往相差幾十甚至幾百倍;零件擺放過程中存在遮擋現(xiàn)象,包括零件與零件之間的遮擋以及其他物體對(duì)零件的遮擋等問題。基于機(jī)器視覺的零件識(shí)別技術(shù)中相機(jī)在同一位置往往只能檢測到大尺寸零件,而忽視細(xì)小零件和被遮擋的零件。AR裝配能夠?qū)ιa(chǎn)裝配過程進(jìn)行可視化引導(dǎo)[1],而對(duì)零件的精準(zhǔn)識(shí)別是實(shí)現(xiàn)裝配智能引導(dǎo)的基礎(chǔ)。因此提高復(fù)雜裝配場景下零件識(shí)別的精度對(duì)于提高AR裝配引導(dǎo)系統(tǒng)的場景感知能力具有重要意義。
在對(duì)提高復(fù)雜裝配場景零件的檢測性能問題上,許多學(xué)者對(duì)此進(jìn)行了研究,主要包括基于機(jī)器視覺的圖像特征檢測方法及基于深度學(xué)習(xí)的目標(biāo)檢測算法。ZHENG等[2]設(shè)計(jì)了一種基于ORB特征匹配的自動(dòng)定位抓取方法,用于解決機(jī)械臂對(duì)工業(yè)零件的定位和抓取問題;陳小佳[3]為解決零件表面的反光問題,采用機(jī)器視覺檢測方法,一定程度上排除了噪聲干擾;SUN等[4]針對(duì)小樣本零件的識(shí)別問題,提出了一種基于相對(duì)熵的零件識(shí)別與定位方法;田中可等[5]提出一種利用隨機(jī)森林分類器對(duì)提取的深度圖像差分特征進(jìn)行分類的方法,用于對(duì)圓錐圓柱減速器裝配體及零件的識(shí)別;王一等[6]針對(duì)零件在復(fù)雜光照、遮擋、位姿變換、小零件漏檢等情況下的識(shí)別精度不佳問題,提出了一種改進(jìn)Faster RCNN算法;宋栓軍等[7]通過對(duì)YOLOv3模型改進(jìn)以及錨框聚類,提高了對(duì)小零件的檢測精度;LI等[8]針對(duì)工業(yè)機(jī)械零件缺乏數(shù)據(jù)樣本問題,建立了一個(gè)基于InceptionNet-V3預(yù)訓(xùn)練模型的卷積神經(jīng)網(wǎng)絡(luò)模型;楊琳等[9]針對(duì)零件定位精度差的問題,提出了一種改進(jìn)YOLOv4算法的零件識(shí)別方法,通過改進(jìn)優(yōu)化算法和預(yù)測邊界框,提高定位準(zhǔn)確性;SHEU等[10]設(shè)計(jì)了一套基于IDS-DLA深度學(xué)習(xí)算法的鈑金零件識(shí)別系統(tǒng),用于解決鈑金件的自動(dòng)化識(shí)別問題。王向周等[11]針對(duì)緊固機(jī)器人對(duì)螺栓的檢測問題,利用深度相機(jī)獲取點(diǎn)云并與YOLOv5s-T結(jié)合實(shí)現(xiàn)對(duì)螺栓的三維定位和排序。
上述針對(duì)零件檢測的方法中,基于特征的檢測方法要求零件具有復(fù)雜的紋理結(jié)構(gòu),不同零件間有較大的對(duì)比度[12];基于深度學(xué)習(xí)方法對(duì)于同一角度距離下的多尺度及遮擋問題的檢測性能較差。綜合考慮模型大小、檢測實(shí)時(shí)性以及準(zhǔn)確性,本文提出了一種基于改進(jìn)YOLOv5s的零件檢測算法,用于對(duì)復(fù)雜裝配場景中的多尺度零件進(jìn)行檢測。
YOLO算法主要思想是利用同一個(gè)網(wǎng)絡(luò)同時(shí)輸出位置信息和類別信息[13-16],到2020年YOLO算法發(fā)展到了第五代。YOLOv5算法與原有相比在輸入端增加了自適應(yīng)圖片縮放,Mosaic數(shù)據(jù)增強(qiáng),自適應(yīng)錨框計(jì)算;采用CSPDarknet53為主干網(wǎng)絡(luò);特征金字塔網(wǎng)絡(luò)(feature pyramid network,FPN)與路徑聚合網(wǎng)絡(luò)(path aggregation network,PAN)相結(jié)合為特征提取網(wǎng)絡(luò),將淺層信息與深層信息融合提高檢測性能。YOLOv5系列根據(jù)通道數(shù)及模型大小分為YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x,模型大小依次增加[17]。
原始的YOLOv5s算法輸出端包含3個(gè)預(yù)測層,用于預(yù)測大、中、小3種尺寸目標(biāo),而過多的下采樣導(dǎo)致目標(biāo)的位置信息缺失,不利于對(duì)小目標(biāo)的檢測,對(duì)多尺寸零件檢測效果較差且抗遮擋能力弱。
本文對(duì)YOLOv5s算法進(jìn)行改進(jìn),在自制的零件數(shù)據(jù)集上進(jìn)行訓(xùn)練,利用訓(xùn)練好的模型對(duì)真實(shí)零件進(jìn)行檢測,實(shí)驗(yàn)流程如圖1所示。
圖1 實(shí)驗(yàn)流程圖
其中YOLOv5s網(wǎng)絡(luò)主要從以下3個(gè)方面進(jìn)行改進(jìn):①將注意力機(jī)制模塊融合到主干網(wǎng)絡(luò)中,提高在雜亂背景下的檢測性能;②為提高對(duì)于細(xì)小零件的檢測能力,在特征融合網(wǎng)絡(luò)增加淺層特征圖,防止小目標(biāo)特征消失;③采用CIoU作為邊界框損失函數(shù),DIoU作為非極大值抑制(non-maximum suppression,NMS)計(jì)算指標(biāo),減少因零件遮擋而導(dǎo)致漏檢問題。改進(jìn)后網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 改進(jìn)后的YOLOv5s網(wǎng)絡(luò)結(jié)構(gòu)
1.2.1 融合注意力機(jī)制
針對(duì)復(fù)雜裝配場景中包含裝配零件、工具等物體及雜亂背景,導(dǎo)致非目標(biāo)零件的誤識(shí)別問題,本文將CBAM[18]、Transformer[19]模塊集成到主干網(wǎng)絡(luò)中,用于提高網(wǎng)絡(luò)性能,如圖3所示。輸入圖像在經(jīng)過CBAM模塊后得到4倍下采樣特征圖,再經(jīng)過兩次下采樣后傳到Transformer編碼模塊,得到32倍下采樣特征圖。
圖3 融合注意力機(jī)制的主干網(wǎng)絡(luò)
(1)CBAM模塊。CBAM模塊是一種簡單高效的注意力機(jī)制,用于提高模型的表征能力,其結(jié)構(gòu)如圖4所示,包含2個(gè)獨(dú)立的子模塊:通道注意力模塊和空間注意力模塊。本文將CBAM模塊集成到主干網(wǎng)絡(luò)中,在經(jīng)過通道注意力及空間注意力后將輸出結(jié)果傳遞到下一層及特征提取網(wǎng)絡(luò)中,以提高零件檢測性能。
圖4 CBAM模塊結(jié)構(gòu) 圖5 Transformer編碼部分結(jié)構(gòu)圖
(2)Transformer模塊。Transformer模型是一個(gè)用純注意力機(jī)制搭建的模型,廣泛應(yīng)用于圖像處理中。Transformer模塊包含編碼器和解碼器兩部分,編碼部分結(jié)構(gòu)如圖5所示,利用編碼器進(jìn)行特征提取,Transformer編碼器增加了捕獲不同信息的能力,可以利用自注意機(jī)制來挖掘潛在特征,在高密度遮擋對(duì)象上具有更好的性能[20],可提升零件在被遮擋時(shí)的檢測性能,提高模型抗遮擋能力。
1.2.2 多尺度特征融合
針對(duì)原始網(wǎng)絡(luò)對(duì)螺栓螺母等小零件的漏檢問題,對(duì)特征融合網(wǎng)絡(luò)進(jìn)行改進(jìn)。原始的YOLOv5s算法中輸入圖像在主干網(wǎng)絡(luò)中將3次下采樣特征圖輸入到特征融合網(wǎng)絡(luò)中,如圖6a所示。而過多的下采樣會(huì)導(dǎo)致目標(biāo)的位置信息缺失,不利于對(duì)小目標(biāo)的檢測,因此將下采樣4倍后的特征圖輸入到FPN中與深層語義信息結(jié)合后輸入到PAN中,自底向上傳遞目標(biāo)位置信息。如圖6b所示。新增的特征圖分辨率高,擁有更加豐富的位置信息,將主干網(wǎng)絡(luò)中更多的小零件信息輸入到特征提取網(wǎng)絡(luò)中,從而提高對(duì)小零件的檢測效果。
(a) 原始特征提取模型
(b) 改進(jìn)后的特征融合網(wǎng)絡(luò)圖6 多尺度特征融合網(wǎng)絡(luò)對(duì)比
1.2.3 損失函數(shù)與NMS優(yōu)化
(1)CIoU。YOLOv5s算法中損失函數(shù)包括邊界框損失、分類損失和置信度預(yù)測損失[21],其中邊界框損失采用GIOU作為損失函數(shù)[22],計(jì)算公式如下:
LGIoU=1-GIoU
(1)
(2)
(3)
式中:A、B為預(yù)測框和真實(shí)框,C為能夠包圍兩框的最小矩形框。
針對(duì)GIoU損失當(dāng)預(yù)測框在真實(shí)框內(nèi)部時(shí),無法確定預(yù)測框的位置狀態(tài),此時(shí)GIOU計(jì)算值與IOU相同的問題,采用CIoU損失[23]作為邊界框損失函數(shù),CIoU可以反映檢測框的長寬比以及衡量錨框與真實(shí)框之間的比例一致性,可以在預(yù)測框與真實(shí)框沒有重疊時(shí)向重疊區(qū)域增加的方向進(jìn)行優(yōu)化,計(jì)算公式為:
(4)
(5)
(6)
式中:ρ為預(yù)測框與真實(shí)框兩中心點(diǎn)之間的距離,c為能包含兩矩形框的最小矩形的對(duì)角線的長度,wgt、hgt為真實(shí)框的寬和高,w、h為預(yù)測框的寬和高。
(2)DIoU_NMS。針對(duì)YOLOv5s算法中采用IoU作為NMS計(jì)算指標(biāo),當(dāng)零件相互遮擋時(shí),容易將正確預(yù)測框抑制的問題,對(duì)NMS算法進(jìn)行改進(jìn),改進(jìn)后算法流程如表1所示。
表1 DIoU_NMS算法
采用DIoU作為NMS的計(jì)算指標(biāo),計(jì)算公式如式(7)所示。
(7)
在計(jì)算時(shí)不僅考慮兩框的重疊區(qū)域,同時(shí)兩者中心點(diǎn)間的距離也作為影響因素,一定程度上減少了因零件之間相互遮擋造成的漏檢問題。
本實(shí)驗(yàn)以某型航空發(fā)動(dòng)機(jī)裝配場景為研究對(duì)象,包含12種裝配零件,如圖7所示將Kinect相機(jī)布置于距離操作臺(tái)平面600 mm的高度上,對(duì)裝配現(xiàn)場進(jìn)行采集,如圖8所示。
圖7 實(shí)驗(yàn)零件
圖8 裝配場景
本實(shí)驗(yàn)配置環(huán)境如表2所示。
表2 實(shí)驗(yàn)配置環(huán)境
2.2.1 零件數(shù)據(jù)集
為減少手工標(biāo)注時(shí)間,采用基于三維模型的虛擬訓(xùn)練集與手工標(biāo)注真實(shí)測試集相結(jié)合的方法[24]。
(1)虛擬訓(xùn)練集構(gòu)建。虛擬訓(xùn)練集制作過程如圖9所示,主要流程為:將原始3D模型導(dǎo)入到Unity3D軟件中對(duì)零件位姿進(jìn)行隨機(jī)調(diào)整并拍照后對(duì)零件照片裁剪并提取,隨機(jī)粘貼在裝配背景照片上,獲得含有零件的合成后照片及零件位置類別信息的XML文件。
圖9 虛擬數(shù)據(jù)集制作流程圖
(2)真實(shí)測試集采集。利用Kinect相機(jī)采集真實(shí)零件圖像作為測試集,如圖8所示,調(diào)節(jié)零件與非目標(biāo)零件位置和角度,從而獲取不同狀態(tài)下的零件圖像,在LabelImg工具上進(jìn)行手工標(biāo)注。
2.2.2 實(shí)驗(yàn)參數(shù)
實(shí)驗(yàn)包含虛擬訓(xùn)練集2800張,真實(shí)測試集700張。含12種不同尺度的零件,大部零件為中等尺寸零件,以及螺栓、螺母兩種細(xì)小零件,具體尺寸規(guī)格如表3所示。
表3 零件名稱及規(guī)格
本文訓(xùn)練模型參數(shù)設(shè)置如下:采用SGD優(yōu)化算法,初始學(xué)習(xí)率為0.01;訓(xùn)練批次為300次,每個(gè)訓(xùn)練批次中一次傳入16張圖片進(jìn)行訓(xùn)練;輸入圖片尺寸為640×640,儲(chǔ)存最后一次迭代模型權(quán)重及最佳性能模型權(quán)重。
本實(shí)驗(yàn)采用參數(shù)量M、浮點(diǎn)運(yùn)算數(shù)(floating point operations,FLOPs)、mAP作為模型性能的評(píng)價(jià)指標(biāo),其中mAP表示所有類別AP值的平均值,mAP計(jì)算公式如下:
(8)
(9)
(10)
(11)
式中:TP表示正確預(yù)測的數(shù)量,FN表示將正樣本預(yù)測為負(fù)樣本的數(shù)量,FP表示將負(fù)樣本預(yù)測為正樣本的數(shù)量,R表示查全率,表示將多少正樣本正確預(yù)測;P為查準(zhǔn)率,表示預(yù)測為正的樣本中有多少被正確預(yù)測。TP、FP的值根據(jù)設(shè)定的IoU閾值確定,通常為0.5,計(jì)算mAP值作為評(píng)估指標(biāo)。
為驗(yàn)證各模塊在改進(jìn)YOLOv5s算法中的作用,進(jìn)行消融實(shí)驗(yàn)[25]觀察各模塊對(duì)于網(wǎng)絡(luò)性能的影響。本文設(shè)置了4組對(duì)比實(shí)驗(yàn),在依次加入3組改進(jìn)模塊后在零件數(shù)據(jù)集上進(jìn)行測試,如表4所示,“√”表示使用改進(jìn)的模塊。由實(shí)驗(yàn)結(jié)果可以看出,對(duì)比于原有的YOLOv5s網(wǎng)絡(luò),在依次增加多尺度特征融合、注意力機(jī)制模塊、優(yōu)化損失函數(shù)與NMS后,模型精度提高。在對(duì)多尺度特征融合后,mAP提高了1.2%,提高了對(duì)于小零件的檢測精度;在主干網(wǎng)絡(luò)中融合注意力機(jī)制后,由于Transformer模塊替換掉原始模型中的Bottleneck模塊,參數(shù)量減少,強(qiáng)化特征提取,mAP提高了0.7%;在優(yōu)化損失函數(shù)與NMS后,在沒有大量提高計(jì)算參數(shù)的情況下,精度提高了1.0%,一定程度上提高了對(duì)于零件被遮擋時(shí)的檢測性能。綜上所述,改進(jìn)后的檢測算法對(duì)比原有算法有了明顯的提升,且參數(shù)量減少。
表4 基于YOLOv5s的消融實(shí)驗(yàn)
將各模型訓(xùn)練中的精度和損失值進(jìn)行對(duì)比,如圖10a、圖10b所示分別為各模型的mAP曲線和損失曲線,橫坐標(biāo)代表訓(xùn)練批次,縱坐標(biāo)分別代表mAP和損失值,當(dāng)訓(xùn)練次數(shù)增加時(shí),損失值下降,精度提升,原有算法在40個(gè)epoch前損失值快速下降,精度達(dá)到93%左右,后續(xù)隨著訓(xùn)練次數(shù)的增加,損失值下降平緩,網(wǎng)絡(luò)不斷擬合,最終精度為93.3%;加入各模塊后,模型的精度依次提高,初始及最終損失值減小,收斂性提高;改進(jìn)后的算法在20個(gè)epoch時(shí)精度即達(dá)到93%,最終損失值下降到0.018左右,精度達(dá)到96.2%。與未改進(jìn)的算法相比,改進(jìn)之后的算法損失值下降更快,最終損失值更小,且mAP值更高,說明網(wǎng)絡(luò)擬合程度及模型識(shí)別性能更好。
(a) mAP曲線 (b) 損失曲線圖10 模型mAP及損失曲線
將YOLOv5s算法與改進(jìn)的YOLOv5s算法對(duì)不同的零件的檢測精度進(jìn)行對(duì)比,如表5所示。由表可得,與YOLOv5s算法相比,改進(jìn)后的算法對(duì)于大、中尺寸零件mAP值變化較小,在對(duì)細(xì)小螺栓、螺母零件的檢測上效果提升顯著,分別提高了12.6%、19.6%。
表5 兩種算法對(duì)不同零件的mAP/%(IoU=0.5)對(duì)比
將改進(jìn)前后算法得到的訓(xùn)練模型同時(shí)在驗(yàn)證集上進(jìn)行測試,如圖11所示,其中圖11a為YOLOv5s算法,圖11b為改進(jìn)后的算法。
(a) YOLOv5s算法 (b) 改進(jìn)后算法圖11 零件識(shí)別結(jié)果對(duì)比
根據(jù)識(shí)別結(jié)果可得,改進(jìn)后的算法在對(duì)零件檢測置信度上有部分提高,且對(duì)于小零件的漏檢現(xiàn)象減少;當(dāng)裝配場景復(fù)雜含有其他物體時(shí),錯(cuò)檢漏檢率下降,如原算法將機(jī)械手誤識(shí)別為零件而漏檢了渦輪定子;當(dāng)零件被遮擋時(shí),改進(jìn)后算法也能夠準(zhǔn)確檢測出被遮擋零件。綜上表明改進(jìn)后的算法提高了對(duì)于螺栓、螺母等小零件的識(shí)別準(zhǔn)確性;零件被遮擋時(shí)的漏檢問題及裝配場景雜亂時(shí)的錯(cuò)檢問題能夠得到一定的改善,證明了本文算法的有效性,且每張圖片檢測時(shí)間都在0.02 s左右,每秒傳輸幀數(shù)可達(dá)到50,滿足實(shí)時(shí)性要求。
針對(duì)增強(qiáng)裝配引導(dǎo)系統(tǒng)中場景感知過程中對(duì)于復(fù)雜裝配場景中小零件以及零件被其它物體遮擋造成的錯(cuò)檢、漏檢問題,提出一種改進(jìn)YOLOv5s的零件檢測算法,通過融合注意力機(jī)制,增加淺層特征信息并對(duì)損失函數(shù)與NMS進(jìn)行優(yōu)化,實(shí)驗(yàn)表明改進(jìn)后的算法一定程度上提高了模型在復(fù)雜裝配場景下對(duì)多尺度零件及零件被遮擋時(shí)的檢測性能,但當(dāng)零件被大面積遮擋時(shí)檢測效果仍不佳,因此未來將在此基礎(chǔ)上進(jìn)行進(jìn)一步研究。