張建華,趙 維,趙 巖,王 唱,李克祥
(河北工業(yè)大學機械工程學院,天津 300401)
隨著工業(yè)智能化快速發(fā)展,利用視覺技術迅速準確地完成對工業(yè)零部件的自動識別,已經(jīng)成為智能裝配領域研究的熱點[1-3]。
傳統(tǒng)目標檢測算法需手動提取目標特征,然后通過分類器進行訓練分類。馮長建等[4]提出核心主成分分析(KPCA)與支持向量機(SVM)混合的機械零部件形狀識別方法,通過傅立葉描繪子獲取零部件輪廓信息,利用KPCA進行特征矢量降維,最后用SVM進行分類。實驗表明,該方法對位置分散且形狀完整的機械零部件有很高的識別率。王紅濤等[5]提出基于邊緣匹配的工件識別算法,在利用Canny算法提取圖像特征之后,將改進的Hausdorff距離作為特征匹配的相似性度量方法,最后采用自適應代溝替代策略的遺傳算法獲得距離最優(yōu)解。實驗結果表明,該算法不僅可以加速特征匹配過程,而且提高其抗噪性,可有效解決平移、旋轉、部分遮擋等情況下圖像匹配識別問題。傳統(tǒng)基于特征的工件檢測方法存在效率低、手工設計的特征魯棒性差等問題[6],難以滿足現(xiàn)代工業(yè)檢測需求。
近年來,隨著深度學習技術快速發(fā)展,上述問題得到一定程度的解決。LIU等[7]將二維工件檢測網(wǎng)絡PolishNet-2d和三維工件識別網(wǎng)絡PolishNet-3d串聯(lián)使用,完成制造業(yè)中拋光工件的識別任務。TANG等[8]利用神經(jīng)網(wǎng)絡檢測目標工件角點信息,根據(jù)檢測概率和角點間幾何關系總結規(guī)律建立決策樹來識別工件類型。KHALID等[9]提出一種全卷積網(wǎng)絡結構,根據(jù)圖像點云信息劃分出工件區(qū)域和非工件區(qū)域,進而檢測出工件數(shù)量及其位姿信息。YOLOv4[10]結合了大量前人研究技術,加以組合并進行適當創(chuàng)新,實現(xiàn)了速度和精度的完美平衡,是目前性能最優(yōu)越的目標檢測算法之一。但是針對工件的識別問題,因其網(wǎng)絡參數(shù)規(guī)模較大,對于實際工況網(wǎng)絡計算速度較慢。
針對上述問題,本文提出一種輕量化目標檢測算法改進YOLOv4算法,可以快速、準確地完成工件識別任務。
與R-CNN[11]和R-FCN[12]等基于候選區(qū)域的目標檢測算法不同,YOLOv4作為單階段目標檢測算法,將檢測視作回歸問題,不再生成區(qū)域候選框,極大提高了檢測速度,可滿足生產(chǎn)過程工件實時檢測需求。YOLOv4網(wǎng)絡結構由輸入端、Backbone特征提取網(wǎng)絡、Neck中間層和Head輸出層4部分組成。
其中,Backbone特征提取網(wǎng)絡是CSPDarknet53,由Darknet53和CSPNet[13]結合而成。借鑒CSPNet在降低計算量的同時保持準確性的經(jīng)驗,YOLOv4在各殘差塊上添加跨階段局部網(wǎng)絡(CSP),將基礎層特征映射分為主干和支路兩個部分,主干繼續(xù)堆積原殘差塊,支路相當于一個殘差邊,進一步通過跨階段層級將兩部分融合。
Neck中間層包括空間金字塔池化網(wǎng)絡(SPP)和路徑聚合網(wǎng)絡(PAN)結構兩個部分。SPP分別利用4個不同尺度的最大池化對上層輸出的特征圖進行處理,顯著增加了感受野,分離最重要的上下文特征并且?guī)缀醪粫档蚘OLOv4的運行速度。高層特征含有語義信息,而低層特征包含更具體的細節(jié)信息。借鑒PANet進行參數(shù)聚合經(jīng)驗,YOLOv4中PAN層先是利用一條自頂而下信息傳輸路徑捕捉強語義特征,再利用一條自底向上信息傳輸路徑傳遞細節(jié)信息,通過兩條路徑組合,可很好完成目標檢測。
Head輸出層用來完成目標檢測結果輸出。此階段將輸入圖像分成網(wǎng)格單元,目標由目標中心點落入的網(wǎng)格單元負責檢測,每個單元輸出結果為B×(5+C)。其中,B代表一個單元能夠預測的邊界框數(shù)量;C表示預測目標類別數(shù)量;5代表四個邊界框參數(shù)和一個邊界框中目標置信度。根據(jù)單個網(wǎng)格的輸出結果,最終網(wǎng)絡輸出為S×S×B×(5+C),其中S代表圖像中每行或每列的網(wǎng)格數(shù)量。
YOLOv4特征提取網(wǎng)絡CSPDarknet53在分類準確性上表現(xiàn)優(yōu)異,但是其缺點是參數(shù)量和計算量過大。因此,本文引入輕量化網(wǎng)絡Moblienetv3[14]代替CSPDarknet53作為特征提取網(wǎng)絡。Moblienetv3網(wǎng)絡結構如表1所示。
表1 Moblienetv3網(wǎng)絡結構
表中Input為每層輸入特征圖大??;Operate為每層處理特征圖所用方法;bneck為瓶頸結構,由一個卷積核大小為1×1的卷積層和深度可分離卷積層組成;Pool為平均池化操作;NBN代表沒有使用批歸一化操作;exp size為模塊中增加后的通道數(shù);#out為輸出通道數(shù);SE表示是否在該bneck模塊中使用SE模塊;NL為激活函數(shù)類型;RE代表ReLU;HS為hard-swish;s為步長。
Moblienetv3網(wǎng)絡結構分為3部分。第1層為起始部分,通過1個卷積核大小為3×3的卷積層提取特征;第2到16層為中間部分,由多個bneck結構組成;第17到20層為最后部分,用于輸出類別。除去最后部分,剩下的16層作為Moblienetv3的主體結構。在保證各層網(wǎng)絡輸出特征圖尺度不變且訓練環(huán)境相同的情況下,根據(jù)主體結構不同網(wǎng)絡層對平均精度均值(mAP)的影響大小,對mAP影響較小的網(wǎng)絡層進行剪枝。最后將Moblienetv3的寬度因子設為0.875,進一步減少網(wǎng)絡參數(shù)量。Moblienetv3主體結構不同網(wǎng)絡層對mAP的影響如表2所示。
表2 Moblienetv3主體結構不同網(wǎng)絡層對mAP的影響 (%)
由表2可看出,Moblienetv3的第16層對mAP影響最小,其次是第11層,因此本文對這2層網(wǎng)絡進行剪枝。
簡化后的Moblienetv3網(wǎng)絡主體結構如表3所示。
表3 簡化后的Moblienetv3主體結構
將CSPDarknet53、Moblienetv3與本文簡化后的Moblienetv3網(wǎng)絡參數(shù)量進行對比,如表4所示。
表4 特征提取網(wǎng)絡參數(shù)量對比
由表可知,簡化后的Moblienetv3網(wǎng)絡可達到減少模型更新開銷、降低內存占用和計算量的目的。
為進一步降低計算量,用深度可分離卷積層替換深層網(wǎng)絡的標準卷積層。圖1a為標準卷積過程,其輸入特征圖大小為DF×DF×M,輸出特征圖大小為DF×DF×N時,總計算量如式(1)所示:
Fs=DF×DF×Dk×Dk×M×N
(1)
與標準卷積相比,深度可分離卷積將通道和區(qū)域分開考慮,將卷積過程分為深度卷積與點卷積。深度卷積過程如圖1b所示,其計算量如式(2)所示:
Fd=DF×DF×Dk×Dk×M
(2)
由于深度卷積是將卷積核按通道分解,并且僅在通道之間進行卷積,所以輸入和輸出的特征圖通道數(shù)量相同且無法改變。因此需續(xù)接一個點卷積,用以改變通道數(shù)量。圖1c表示點卷積過程,此過程計算量如式(3)所示:
F1=DF×DF×M×N
(3)
將深度可分離卷積與標準卷積的計算量進行比較,如式(4)所示:
(4)
(a) 標準卷積計算過程
(b) 深度卷積計算過程
(c) 點卷積計算過程
可以看出,雖然深度可分離卷積將卷積過程分為兩步,但憑借輕量的卷積方式,可極大降低卷積過程計算量。
YOLOv4通過PAN結構輸出13×13、26×26、52×52這3種不同尺度的特征圖。深層特征圖尺寸小、感受野大,有利于檢測大尺寸物體。淺層與之相反,更有利于檢測小尺寸物體。在實際檢測過程中,對于小尺寸物體依然存在漏檢情況。因此,為增加淺層細節(jié)信息,在YOLOv4結構基礎上,增加104×104特征層,并與其他三個特征層進行特征融合,從而提高網(wǎng)絡檢測精度。
原始YOLOv4算法的Anchor Box是由K-means算法在COCO和VOC數(shù)據(jù)集上聚類得出。由于本文采用自制數(shù)據(jù)集,與COCO和VOC數(shù)據(jù)集差異較大,原始聚類結果不能代表本文數(shù)據(jù),因此需重新對數(shù)據(jù)集進行聚類,以選出具有代表性的Anchor Box。由于K-means算法存在對初始點選取較敏感、隨機選取的初始點對聚類結果影響較大、易陷入局部最優(yōu)等問題,本文采用K-means++[15]算法對數(shù)據(jù)集進行重聚類。K-means++算法步驟如下:
步驟1:從數(shù)據(jù)集X中隨機選取一個樣本作為初始聚類中心。
步驟2:計算每個樣本xi與當前已有聚類中心Ci的距離D(xi)。
D(xi)=1-IOU(xi,Ci)
(5)
步驟3:計算每個樣本被選為下一個聚類中心的概率P。
(6)
步驟4:按照輪盤法選出下一個聚類中心。
步驟5:重復步驟2~4,直至選出K個聚類中心。
兩種聚類分析算法的精度計算方法如下:計算最后得到K個Anchor Box與bounding box的重疊度(IOU),對于每個bounding box選取其對應最大的IOU值代表其精度,聚類分析算法的精度值為所有IOU值的平均值。兩種聚類分析算法的精度對比如表5所示,表明K-means++算法聚類精度更高,獲得的Anchor Box更能代表本文數(shù)據(jù)集?;贙-means++算法獲得的Anchor Box值如表6所示。
表5 兩種聚類分析算法精度
表6 Anchor Box在特征圖上分布
至此,針對工件類型識別任務,完成了本文對YOLOv4網(wǎng)絡的改進,搭建了輕量化的改進YOLOv4模型,其結構如圖2所示。
圖2 所提出的改進YOLOv4網(wǎng)絡結構
為驗證所提出的改進YOLOv4目標檢測算法的有效性,通過圖像采集和圖像標注創(chuàng)建具有3類工件圖像樣本(六角螺栓、六角螺母、軸)的數(shù)據(jù)集。
首先,搭建圖3a所示圖像采集平臺,利用工業(yè)相機(海康威視MV-CA060-10GC,最大分辨率為3270×2048)采集圖像4100張,采集的部分圖像如圖3b所示,用Labelimg軟件對圖像進行手工標注。然后,進行數(shù)據(jù)增廣,對圖像進行翻轉、鏡像、亮度和對比度變換,將圖像擴充至24 000張。并將數(shù)據(jù)集分為3組,其中訓練集18 000張,驗證集2000張,測試集4000張。
(a) 圖像采集平臺 (b) 數(shù)據(jù)集部分圖像
3.2.1 網(wǎng)絡訓練
網(wǎng)絡模型采用分階段訓練策略:第一階段為凍結訓練,因神經(jīng)網(wǎng)絡主干特征提取部分所提取的特征具有通用性,故凍結特征提取網(wǎng)絡,以提高訓練效率,同時可以防止權值被破壞。第二階段為解凍后訓練。兩個階段的超參數(shù)如表7所示。
表7 模型訓練參數(shù)
圖4 訓練過程損失變化曲線
表中,Momentum表示動量參數(shù),可在梯度下降算法中加速模型收斂;Weight-decay表示權重衰減系數(shù),可有效限制參數(shù)變化幅度,起到一定正則作用;Base learning rate表示基礎學習率,決定權值的更新速度;Batch size表示每批次訓練樣本量大??;Epoch表示全部訓練樣本訓練次數(shù)。總訓練次數(shù)為100個Epoch,損失值變化曲線如圖4所示。
3.2.2 評價指標
選擇每秒傳輸幀數(shù)(fps)度量模型檢測速度,模型參數(shù)量(Params size)作為模型規(guī)模大小參數(shù),平均精度均值(mAP)衡量檢測精度。
AP值是P-R曲線的包圍面積,mAP為所有類別AP值的均值。P代表精確率,R代表召回率。P、R的計算方法如式(7)、式(8)所示:
P=TP/(TP+FP)
(7)
R=TP/(TP+FN)
(8)
式中,TP代表實際為正類且預測為正類的樣本數(shù)量;FP代表實際為負類但預測為正類的樣本數(shù)量;FN代表實際為正類但預測為負類的樣本數(shù)量。
改進YOLOv4算法工件識別結果如圖5所示。
圖5 工件識別結果
將改進YOLOv4算法與原始YOLOv4算法進行對比,在測試集上進行測試,對比結果如表8所示。
表8 改進YOLOv4與原始YOLOv4對比結果
結果表明,在模型參數(shù)規(guī)模方面,YOLOv4算法的模型參數(shù)量為244.29 MB,改進YOLOv4算法模型參數(shù)量為31.52 MB,降低了87.10%;在檢測速度方面,YOLOv4的檢測速度為30.51 fps,改進YOLOv4達到42.67 fps,提升了39.86%,可達到實時檢測需求。雖然與YOLOv4相比,改進YOLOv4檢測精度略有降低,但依然達到98.00%,可滿足實用需求。
針對工業(yè)機器人生產(chǎn)過程中自動工件識別需求,提出一種輕量化目標檢測網(wǎng)絡改進YOLOv4算法,實現(xiàn)工件自動識別。與YOLOv4算法相比,所提出的算法引入簡化的Moblienetv3作為主干特征提取網(wǎng)絡,采用深度可分離卷積層代替深層網(wǎng)絡中標準卷積層,降低網(wǎng)絡參數(shù)量,并使用K-means++算法對數(shù)據(jù)集進行重聚類獲取更有代表性的Anchor Box,同時在特征融合結構中增加104×104特征檢測尺度并與另外三個尺度融合,提高工件識別精度。結果表明,改進YOLOv4算法網(wǎng)絡參數(shù)規(guī)模減小87.1%,檢測速度提高39.86%,初步滿足機器人生產(chǎn)過程中工件自動檢測需求。在未來研究中,將進一步針對零件相互堆疊遮擋導致漏檢問題,借鑒MAO[16]等解決行人遮擋問題的方法,引入額外特征,如分割信息和邊緣信息等,減少工件部分信息缺失對識別影響,提高檢測精度。