宋栓軍,侯中原,王啟宇,倪奕棋,黃乾瑋
(1.西安工程大學 機電工程學院,西安 710600;2.西安工程大學 現(xiàn)代智能紡織裝備重點實驗室,西安 710600)
隨著自動化和智能化的發(fā)展,機器人與視覺系統(tǒng)相結(jié)合,在零件識別、缺陷檢測等領(lǐng)域發(fā)揮越來越重要的作用。在工業(yè)生產(chǎn)過程中存在著大量的零件識別定位的任務,傳統(tǒng)目標檢測方法基本采用人工設(shè)計特征進行提取的方法來處理圖像信息[1],如基于尺度不變特征變換的SIFT算法[2]、基于圖像梯度信息的HOG算法[3]、描述圖像紋理特征的LBP算法[4],但該類方法易受到目標物體的形狀、大小、位置、外部光照等因素的影響,對特征的多樣性缺乏魯棒性[5]。
基于卷積神經(jīng)網(wǎng)絡的深度學習目標識別算法不需要人為設(shè)計特征,而是利用卷積特征實現(xiàn)自學習功能。由于卷積神經(jīng)網(wǎng)絡具有較強的泛化能力,可以在一定程度上克服目標變化、光照等因素的影響。自深度學習的概念提出以來,很多學者提出了眾多基于卷積神經(jīng)網(wǎng)絡的深度學習目標檢測算法。在two-stage方法中,利用候選框進行分類和回歸,提出R-CNN[6]、Fast R-CNN[7]、Faster R-CNN[8]等檢測算法,極大的提升了目標檢測準確率,但同時會導致訓練時間長,檢測速度慢。在one-stage方法中,去除了候選區(qū)域操作,直接采用端到端的方式直接進行分類與回歸,如YOLO[9]、SSD[10],其優(yōu)勢是速度快,可以實現(xiàn)實時檢測的目的,但對小物體檢測效果不好,存在一定的漏檢率。
零件識別是一類目標檢測問題,余永維等[11]提出了一種融合Inception預測結(jié)構(gòu)的SSD框架,并使用標準化模塊和殘差結(jié)構(gòu)連接,增加檢測魯棒性,提高檢測準確率;華南理工大學的陳冠琪使用融合模塊實現(xiàn)深層與淺層網(wǎng)絡的跨層連接的MDSSD網(wǎng)絡,相較于原SSD提高了檢測精度[12];司小婷[13]等人使用一種多輪廓的方法,結(jié)合輪廓的幾何特征與形狀特征對圖像做定位識別。郭斐等在原Faster R-CNN網(wǎng)絡結(jié)構(gòu)基礎(chǔ)上減少卷積層數(shù),加入Inception結(jié)構(gòu)層,提出一種改進Faster R-CNN網(wǎng)絡的零件識別算法,提高了零件識別的精度[14]。
本文的研究主要針對工業(yè)生產(chǎn)中小型零件存在漏檢及識別率不高等問題。工業(yè)生產(chǎn)中零件的識別要求檢測速度快,準確率高,綜合當前主流的目標識別方法,選擇YOLOV3算法。由于one-stage方法中存在小物體檢測效果不好,漏檢率高的情況,故在YOLOV3算法基礎(chǔ)上設(shè)計了新的特征融合機構(gòu)來克服YOLOV3檢測小目標準確率低的缺點,并通過K-means++算法對錨點框重新聚類,提高檢測速度的同時增加識別檢測的精度。
YOLOV3是一種基于回歸的目標檢測算法。YOLOV3算法是以Darknet53為基礎(chǔ)網(wǎng)絡,其模型結(jié)構(gòu)如圖1所示,首先將輸入圖片的尺寸轉(zhuǎn)化為416×416,再將其輸入到Y(jié)OLOV3網(wǎng)絡的主干特征提取網(wǎng)絡中,主干特征提取網(wǎng)絡是以Darknet53為基礎(chǔ)網(wǎng)絡,同時取消池化層和最后的全連接層,采用步長為2的卷積進行下采樣,減少計算量的同時,保留了圖片的更多信息。經(jīng)過一系列下采樣、卷積等操作,可以獲得圖片不同層次的位置和語義信息。在卷積神經(jīng)網(wǎng)絡中,低層含有較多的位置信息,但含有較少的語義信息,高層含有較少的位置信息,較多的語義信息,所以YOLOV3網(wǎng)絡采用FPN(特征金字塔網(wǎng)絡)結(jié)構(gòu)對不同層次的特征圖相融合,以實現(xiàn)對不同尺度目標的預測。網(wǎng)絡輸出層采用三層特征圖進行預測,并通過非極大值抑制獲得最終的檢測結(jié)果。
圖1 YOLOV3網(wǎng)絡結(jié)構(gòu)
YOLOV3是基于直接回歸的全卷積神經(jīng)網(wǎng)絡,不再產(chǎn)生區(qū)域候選框,在提高檢測準確率的同時兼顧檢測速度,在實際場景中應用較為廣泛。
YOLOV3采用FPN進行上采樣和融合做法,融合了3個Anchor尺度(13×13、26×26、52×52),在多個尺度的融合特征圖上分別獨立做檢測去改進目標檢測的效果,但對于一些小目標而言,尤其是對于工廠生產(chǎn)中的螺母、墊片等微小型零件,存在準確度不高甚至漏檢的情況。
YOLOV3的主干特征提取網(wǎng)絡共進行了五次下采樣,FPN部分利用8倍下采樣、16倍下采樣、32倍下采樣的特征圖通過卷積、上采樣與對應的淺層特征圖相融合,用融合后的特征層來檢測目標。其用于檢測的有效特征層分別為52×52、26×26、13×13,分別用于小目標、中目標、大目標的檢測,若某一目標在原圖像中的尺寸小于對應的8倍下采樣特征圖中的尺寸,則是無法檢測到的,另外兩種特征圖檢測小目標則會更加困難[15],YOLOV3的檢測層如圖2a)所示。本文提出的改進的檢測層如圖2b)所示,將52×52的特征層經(jīng)過卷積和2倍上采樣,將特征尺度由52×52提升到104×104,再將其與4倍下采樣的104×104的特征圖融合作為新的特征層,這樣可以使高層特征具有更強的位置信息,低層的特征具有更強的語義信息,進一步加強定位的精度和小目標檢測的準確度。
圖2 原始FPN結(jié)構(gòu)與本文提出的FPN結(jié)構(gòu)
圖3所示為改進的YOLOV3網(wǎng)絡結(jié)構(gòu),在原先檢測尺度的基礎(chǔ)上增加了第4個特征尺度。輸入圖片經(jīng)特征提取網(wǎng)絡得到不同層級的圖片信息,如圖3所示。在FPN部分32倍下采樣得到的13×13的特征圖,經(jīng)過一系列卷積后得到輸出Y1;將32倍下采樣特征圖進行卷積和2倍上采樣,與16倍下采樣后的特征圖進行匹配并融合,再經(jīng)卷積后得到輸出Y2;將16倍下采樣特征圖進行卷積和2倍上采樣,同8倍下采樣后的特征圖進行匹配并融合,得到輸出Y3;將8倍下采樣特征圖進行卷積和2倍上采樣,同4倍下采樣后的特征圖進行匹配并融合,得到輸出Y4。本文中YOLOV3輸出了4種不同尺度的特征圖來進行預測,如圖中所示Y1、Y2、Y3、Y4,特征圖進一步精細,可以檢測出更精細的目標。
圖3 改進的YOLOV3網(wǎng)絡結(jié)構(gòu)
在YOLOV3中,為高效地預測不同尺度與寬高比的物體邊界框,采用Anchor(錨點框)機制,合適的Anchor值可以實現(xiàn)更快速、準確的定位,同時減少損失值與計算量,提高目標檢測的速度與精度。YOLOV3原始的Anchor值是采用K-means算法在VOC數(shù)據(jù)集20類和coco數(shù)據(jù)集80類進行聚類而得,每個特征圖對應的特征點采用3個不同比例(1∶2、1∶1、2∶1)的Anchor框,考慮到原YOLOV3有3個不同尺度的特征圖,故聚類9個不同尺度Anchor框來預測不同大小的目標。
沿用YOLOV3中的Anchor思想,本文提出的改進YOLOV3通過4個不同尺度的特征圖來實現(xiàn)預測,按照每個特征點需要聚類3個不同比例的Anchor框的原則,需聚類12個不同尺度的Anchor。原始的K-means聚類算法隨機選取K個數(shù)據(jù)點作為原始的聚類質(zhì)心,這種聚類方法對初值敏感,不利于尋找全局最優(yōu)解,因此本文采用K-means++算法對原算法進行優(yōu)化。K-means++算法讓初始的聚類中心之間的距離盡可能遠,而不是隨機產(chǎn)生,具體步驟如下:
步驟1 首先令K=12,隨機選取一個點作為第一個聚類中心;
步驟2 然后計算每一個點與當前已有聚類中心的最短距離(即與最近一個聚類中心的距離),這個值越大,表示其被選取作為聚類中心的概率值越大,采用輪盤賭法依據(jù)概率大小進行抽選,選出下一個聚類中心;
步驟3 重復步驟2,直到選出k個聚類中心;
步驟4 選出聚類中心后,繼續(xù)使用K-means算法進行聚類。
其中聚類方法中距離公式定義如下
d(box,cen)=1-IOU(box,cen)
(1)
式中:Box為矩形框的大小;cen為矩形框的中心;IOU表示兩個矩形框的交并比。
通過聚類最終選取的12個Anchor為(25,34)、(28,38)、(31,35)、(31,42)、(34,41)、(36,113),(36,47)、(57,80)、(66,87)、(78,62)、(79,97)、(84,42)。
零件識別定位的損失函數(shù)由坐標誤差、置信度誤差及分類誤差組成。坐標誤差由中心坐標誤差和寬高坐標誤差組成。
中心坐標誤差為
(2)
寬高坐標誤差為
(3)
含有目標的bbox置信度誤差為
(4)
不含目標的bbox的目標置信度誤差為
(5)
分類誤差為
(6)
深度學習網(wǎng)絡需要大量數(shù)據(jù)集作為支撐。目前,在零件識別工業(yè)應用方面缺少完整的數(shù)據(jù)集,本文自行制作了一套數(shù)據(jù)集,包含螺栓、螺母、墊片、十字形管接頭(shiJT)、T型管接頭(tJT)、以及c型管接頭(cJT)六類零件的數(shù)據(jù)集,通過變換光照、零件位姿、模擬實際情況中零件混合、堆疊等情況,一共采用3560張圖片作為本次實驗的訓練集與測試集,以此增強數(shù)據(jù)集的可靠性。圖4所示為采集的部分數(shù)據(jù)集。
圖4 采集數(shù)據(jù)集部分樣本
獲得采集到的零件數(shù)據(jù)集后,采用LabelImg工具對圖片進行標注工作,將圖像中出現(xiàn)的6類目標標注出來,保存為xml文件,按照4∶1的比例劃分訓練集與測試集。
圖5 零件標注狀況
實驗環(huán)境的配置如表1所示,本文所有實驗均在該環(huán)境下進行。
表1 環(huán)境配置表
3.2.1 模型訓練
調(diào)整好模型參數(shù)后,進入模型訓練階段,為了增強網(wǎng)絡的穩(wěn)定性,相關(guān)模型參數(shù)如表2所示。本文采用Adam優(yōu)化器對網(wǎng)絡進行優(yōu)化,并采用自適應調(diào)整策略對學習率進行動態(tài)調(diào)整,共進行100個Epoch訓練,step-size取30、gamma取0.1,即每隔30個epoch學習率下降10倍。
表2 相關(guān)訓練參數(shù)
3.2.2 評價指標
本文采用的對模型的評價指標為mAP值,mAP值為為所有類的AP值的平均值,AP值為精確度(Precision)為縱坐標和召回率(Recall)為橫坐標所圍成曲線的面積[16]。準確度用來衡量目標檢測的準確度,召回率用來衡量目標漏檢率,計算公式如下:
(7)
(8)
式中:TP表示被正確的分為了某類樣本的數(shù)量;FP表示被錯誤的分為了某類樣本的數(shù)量;FN表示樣本被錯誤識別的數(shù)量。本文的檢測結(jié)果采用mAP作為評價指標評估模型的效果。
本文提出的改進YOLOV3與原始YOLOV3部分檢測結(jié)果對比如圖6所示。
圖6 檢測效果對比圖
考慮在實際場景中常出現(xiàn)零件混合、堆疊的情況,其檢測效果如上圖所示。原YOLOV3算法在檢測相對較小的零件時存在漏檢及準確率低的情況,而改進YOLOV3算法能夠很好的解決這個問題,如圖6所示。對于圖片中多類零件,后者具有更高的置信度,分類更準確。兩種算法的檢測結(jié)果如表3所示。相較于原YOLOV3,改進后的YOLOV3在檢測準確率上有了較大的提升,在小目標的檢測準確度上提升更為明顯。
如圖7所示,原YOLOV3檢測的平均精度為90.77%,改進YOLOV3算法檢測的平均精度為95.64%,相較于YOLOV3提高了4.87%。從以上檢測的結(jié)果來看,改進YOLOV3的性能要強于原YOLOV3,說明通過改進特征融合結(jié)構(gòu)能在不同種類的零件識別尤其是小零件的識別上取得較好的效果。
圖7 改進YOLOV3與原YOLOV3方法檢測效果
本文對工業(yè)生產(chǎn)中常見零件尤其是小型零件識別中的漏檢及識別準確率低的問題,提出了改進YOLOV3的目標識別算法。通過設(shè)計新的特征融合機構(gòu)來增加新的特征層,克服YOLOV3檢測小目標準確率低的缺點,并通過K-means++算法對Anchor重新聚類,提高檢測速度的同時增加識別檢測的精度。上述實驗結(jié)果表明,相較于YOLOV3,本文方法在小型零件識別準確率上有較大提升,優(yōu)化后算法的mAP提高了4.87%,符合實際生產(chǎn)中零件檢測的需求。接下來的研究需進一步拓展數(shù)據(jù)集中零件的種類和數(shù)量,進一步提高檢測模型的泛化能力。