佘 維,鄭 倩,田 釗,劉 煒,李英豪*
(1.鄭州大學軟件學院,鄭州 450002;2.互聯網醫療與健康服務河南省協同創新中心(鄭州大學),鄭州 450052)
工業中的氣門識別過程是通過相機拍攝氣門所在的區域,由視覺系統根據圖中物料的情況優先判定距離最近、最上層的氣門毛胚件,然后返回目標的位置信息以及中心點坐標給機器人,機器人控制系統將驅動機器手臂在適當的區域執行抓取工作。
在實際的工業流程中,如何快速精準地分揀工件是一個至關重要的問題。傳統的分揀過程中采用示教或離線編程的方法,需要專業的操作人員精準把控目標的放置和機器人的移動軌跡,對操作人員和流程有一定的要求,不具備普遍性和實時性,無法適應較復雜的工作環境[1]。將視覺系統與現有的機器人相結合具有較高的靈活性和可靠性,在提高生產效率的同時還節約了人工成本,提高了機器人的智能化程度[2]。基于機器視覺技術的工業分揀系統已經在工業自動化生產領域廣泛應用[3]。
在基于視覺系統的工業流程中,目標的識別與檢測是視覺定位的核心。圓形目標的自動檢測與定位是工件氣門識別中的關鍵技術。目前基于圓形目標的識別算法主要分為兩類:基于人工設計特征的提取算法和基于深度學習的算法。其中,在基于人工設計特征的提取算法中,霍夫圓變換(Circle Hough Transform,CHT)[4]是最早用來識別圓形目標的經典算法,通過將數據從原始圖像空間變換到定義的參數空間,并根據參數空間中的投票結果峰值來確定圓形的參數。該方法在部分圖像區域不完整的情況下有較好的魯棒性,但其檢測精度有待提高且隨機性大。針對Hough 圓變換算法中產生的問題,Xu 等[5]提出了一種隨機霍夫變換(Randomized Hough Transform,RHT)的圓檢測方法,隨機選取圓周上的3 個點并以這些點為圓心畫圓,經過若干次迭代后找到在容忍閾值內最優的圓,該算法提高了圓的檢測效率。近年來,不少學者以此為基礎進行了各種改進,熊雪琴[6]提出了一種基于像素比的圓檢測算法,只根據第一個樣本總結出的滑動窗進行遍歷找圓,極大地縮短了對目標的檢測時間。
目前,深度學習的目標檢測算法主要分為兩類:Twostage 算法和One-stage 算法。Two-stage 算法對應R-CNN(Region Convolutional Neural Network)[7]、Fast R-CNN(Fast Region Convolutional Neural Network)[8]、Faster R-CNN(Faster Region Convolutional Neural Network)[9]這一系列基于深度學習的分類方法,這類算法先從輸入圖像中選取可能包含待檢測目標的候選框,然后用分類器評估這些候選框中的目標,整個流程執行下來較慢,但是精度較高[10]。
One-stage 算法以YOLO(You Only Look Once)系列的算法為代表,自提出后在工業領域有廣泛的應用前景,其中心思想是利用整張圖像作為輸入,通過卷積神經網絡將預測框的位置、大小和物體分類直接預測出來。YOLO 將目標檢測重新定義為單個回歸問題,在提升速度的同時盡量保證了精度的可靠性。YOLOv1(YOLO version 1)[11]作為整個YOLO系列的開山之作,奠定了“分而治之”的中心思想。將輸入的圖像劃分為S×S個網格,當網格內包含待檢測對象的中心時,就負責生成B個檢測框(bounding box)以及C個類別的概率,每個檢測框包含5 個矢量信息:位置信息(x,y,w,h)和置信度(confidence)。其中,置信度包含兩重信息,即檢測框中包含對象的可信度和檢測框與實際標注框的交并比(Intersection Over Union,IOU)。YOLOv1 具有較快的檢測速度,但一個網格只能預測兩個框和一個類別,極大地限制了預測框的數量。針對YOLOv1 中的缺陷,YOLOv2(YOLO version 2)[12]在原YOLO 的基礎上加 入了批歸一化(Batch Normalization,BN)[13]加速了 網絡的收斂,同時采 用Darknet-19 作為新的主干特征提取網絡;另外,YOLOv2 還參考anchor 機制運用k-means 聚類算法[14]來生成適合數據集大小的先驗框,以提升模型的召回率,獲得更快更準確的檢測效果。YOLOv3(YOLO version 3)方法[15]在YOLOv2 的基礎上做了進一步改進,采用Darknet-53 作為主干特征提取網絡,同時借助殘差網絡(Residual Network,ResNet)[16]中的跳躍連接來防止有效信息的丟失,解決深層網絡退化等問題;YOLOv3 中通過改變卷積核的步長來實現特征圖尺寸的縮小,在每個殘差網絡前添加一個步長為2 的卷積層用于下采樣,且主干網絡中包含分別由1、2、8、8、4 個殘差塊組成的5個殘差網絡,故共經過5 次下采樣來獲取特征;除此之外,YOLOv3 還采用特征金字塔網絡(Feature Pyramid Network,FPN)[17]作為加強特征提取網絡,經過上采樣(up-sample)和拼接(concat)操作,將不同特征層之間的特征融合得到13×13、26×26、52×52 的分辨率,同時進行通道調整得到3 個不同尺度的檢測頭用于大、中、小目標的檢測,YOLOv3 模型基本滿足任何尺寸的目標檢測且符合預期效果。YOLOv4(YOLO version 4)[18]在目標檢測上沒有革命性的改變,而是在YOLOv3 的基礎上結合了很多先進的小技巧,可以大致分為4 個方向。首先,通過Mosaic 數據增強、自對抗訓練(Self Adversarial Training,SAT)和跨小批量標準化(Cross mini-Batch Normalization,CmBN)對輸入端進行改進;其次,在特征提取網絡的創新上采用跨階段部分連接(Cross-Stage-Partial-connection,CSP)的Darknet-53 為主干網絡,同時使用Mish 激活函數并采取Dropblock 正則化的方法來豐富局部特征;接著,從Neck 入手,構建加入空間金字塔池化層(Spatial Pyramid Pooling,SPP)和 路徑聚合網絡(Path Aggregation Network,PAN)的加強特征提取網絡;最后,采用DIOU(Distance Intersection Over Union)作為新的損失函數。
在實際的目標檢測過程中,圓形目標識別的速度影響最終的抓取效率,而識別的精度影響結果的可靠性[19]。基于深度學習的目標檢測算法可以從海量的數據中自動提取特征進行識別定位,具有較高的準確率和較快的檢測速率。其中,One-stage 模式比Two-stage 模式更有優勢[20],因此YOLO方法更符合工業氣門中的識別定位環節。然而,在整個工件氣門識別的流程中零件數目龐大,目標堆疊個數較多,基于深度學習的檢測算法仍存在檢測精度較低、重疊目標漏檢率高以及目標包裹度差、圓心定位不準的問題。
基于以上問題,本文提出了一種基于雙重檢測的氣門識別方法進行目標圓的預測定位過程。首先,本文使用數據增強對樣本進行輕量擴充;然后,融合YOLOv3 及YOLOv4 框架,構建適合氣門檢測的深度卷積網絡架構,識別單個氣門所在的矩形區域;最后,結合傳統算法中的霍夫圓變換對氣門進行精準識別。實驗結果表明,本文提出的方法在滿足定位精度的基礎上,既能提高模型識別的準確率,又能改進目標的包裹度,在實際應用中有一定的實用價值。
本文提出了一種基于雙重檢測的氣門識別方法得到最終的氣門檢測定位結果。首先使用數據增強技術擴充訓練的樣本,然后從網絡結構、先驗框預測、損失函數三個方面改進YOLO 模型以提高檢測結果的識別精度,接著引入霍夫變換進行二次識別來提高目標的包裹度及圓心的定位精度,最后將改進后的深度卷積網絡模型與二次識別技術相結合,大致流程和每步的預測結果展示如圖1 所示。以下介紹每一步的主要工作。

圖1 基于深度卷積網絡與霍夫變換的工件氣門識別過程Fig.1 Identification process of workpiece valves based on deep convolutional network and Hough transform
在數據預處理階段,本文重點使用了數據增強技術。深度學習中數據集的樣本數量直接影響最終訓練模型的好壞,本文對訓練集中的每張圖像進行數據增強。數據增強通過對原始圖像進行旋轉、平移、調整曝光度等操作,增添了樣本的多樣性。該方法可以在擴充數據集的同時,對原始圖像中的手工標注框進行相應的坐標變換,生成對應的xml 文件,不僅節省了標注的人工成本,還可以自定義擴充的圖像數量。
本文構建卷積神經網絡模型用于氣門識別,以YOLOv3[15]模型為基礎,分別從網絡結構、先驗框預測、損失函數三個方面進行改進,以提升預測結果的準確度和模型的泛化能力。
1.2.1 網絡結構
本文提出的氣門識別深度卷積網絡結構如圖2 所示。

圖2 本文提出的氣門識別深度卷積網絡結構Fig.2 Deep convolutional network structure for valve identification proposed in this paper
當輸入圖像尺寸為(416,416,3)時,該模型在保持原有的主干網絡(Darknet53)的基礎上,依然保留(52,52,256)、(26,26,512)、(13,13,1 024)這三個特征層。同時,本文模型將(13,13,1 024)這一輸出經過三次卷積,同時引入SPP 結構,使用不同池化核大小的最大池化分離出顯著的上下文特征,與原YOLOv3 相比增大了網絡的感受野,保留了輸出的空間尺寸大小。接著,本文模型將經過SPP 結構的輸出進行卷積和上采樣,與(26,26,512)這一特征層進行拼接操作,再和(52,52,256)的特征層進行拼接和卷積。最后,引入PAN結構,使用下采樣加卷積的方式自底向上傳達強定位特征,使層之間信息流動的方式發生了改變,與原YOLOv3 相比能獲取到更加細粒度的局部特征,減少有效信息的流失。
1.2.2 先驗框預測
考慮到通過聚類生成的先驗框不太穩定,YOLOv3 中使用k-means 聚類算法僅對先驗框的寬高進行聚類,本文方法基于不同聚類數對于識別結果的影響,選擇初始聚類數,并以此確定先驗框。本文中數據集是工業零件中的氣門毛胚件,原先的9 組先驗框增加了正負樣本不均衡的比例,對氣門的識別檢測精度較低。因此本文重新對先驗框進行聚類分析,將各檢測框與其人工標注框的交并比的平均值記為AugIOU,該值越大表示檢測框預測的結果越準確。這里分別取k=1~9 時,平均交并比AugIOU 隨k值變化,在k=1~5 時AugIOU 的值顯著增加,而k=6~9 時AugIOU 的值逐漸趨于平緩,因此k=5 為本文最優的預測框數量解。經重新聚類后的先驗框 尺寸分別為:68×89、90×112、130×151、166×149、188×200。
1.2.3 損失函數
損失函數直接決定網絡效果的好壞,YOLOv3 網絡使用均方和誤差作為損失函數。本文中只標注氣門這一類目標,因此不再計算由分類帶來的損失,簡化YOLOv3 中的原損失函數以加速網絡的收斂,只考慮檢驗框的坐標預測誤差(Location Loss)和置信度預測誤差(Confidence Loss)。即:

另外,對Location-Loss使用對比度歸一化的方法[21]把式(1)中的平方和改為絕對值形式,提高算法的抗干擾性,改進后的Location-Loss′為:

其中:S2表示圖像劃分的單元格數;B表示每個網格單元生成的預測框個數;表示第i個網格的第j個檢測框是否負責檢測這個目標物體,如果負責取值1,否則為0;λcoord表示坐標預測誤差權重,設為5;λnoobj表示不含對象的置信度誤差懲罰權重,設為0.5;xi、yi、wi、hi表示真實框的中心點橫縱坐標以及框的寬度和高度,表示預測框的中心點橫縱坐標以及框的寬度和高度;Ci表示擬合值、表示真實值,該值由網格的檢測框是否負責預測這個對象決定,若負責取值為1,否則取值為0。
基于本文提出的深度卷積模型輸出的檢測結果是貼合物體外部輪廓的矩形[22],不能精準識別出氣門所在的圓形區域;同時,將矩形框對角線的交點作為氣門的中心定位點也存在一定誤差。因此本文采用霍夫圓變換的方法對輸出的結果進行目標定位處理,將氣門的中心點(圓心)進行矯正。然而直接使用傳統的CHT 在相互遮擋的目標圓檢測上表現欠佳,無法適應較復雜的環境,檢測精度有待提高。綜上,本文提出了二次識別的方法:對于深度卷積網絡的檢測結果,獲取目標的類別和位置信息,然后根據檢測結果對圖像進行區域截圖得到細化框,再對細化框進行CHT 檢測得到最終的氣門識別結果。二次識別過程的詳細步驟如下:
1)取位置坐標:根據本文提出的深度卷積網絡得到預測框的位置信息,該位置信息是指預測框的左下角頂點A=(au,av)和右上角頂點B=(bu,bv)的坐標。
2)擴充像素:考慮到個別檢測框可能沒有完全包裹氣門的輪廓,故對A、B兩點的值分別擴充5 個像素得到A′=(au-5,av-5)、B′=(bu+5,bv+5)。
3)局部區域截圖:根據擴充后的坐標A′、B′在原圖上進行截圖得到細化框。
4)細化框預處理:①灰度化處理;②中值濾波去噪;③平滑處理。
5)邊緣提取:對所得截圖用Canny 算法進行邊緣提取,得到較完整的圓邊緣。
6)霍夫圓變換:使用CHT 進行識別得到檢測圓,獲取矯正后的圓心定位結果,并輸出每個目標的圓心坐標和半徑。
本文最終輸出的是深度卷積網絡模型生成的預測框和二次識別生成的檢測圓。由于CHT 具有不穩定性,不能保證每個目標都得到有效識別,對于二次識別過程中存在的漏檢現象,本文實驗以原來的預測框為補充,同時生成帶預測框和檢測圓的結果。最終的檢測結果中若有檢測圓則以二次識別的結果為準,否則以深度卷積網絡生成的預測框為準,同時返回所有預測框的位置信息以及中心點坐標。
2.1.1 實驗環境
為了更直觀地驗證本文提出方法的有效性,本文所有的實驗均在同一環境下進行。本文應用的硬件和軟件配置如下:Ubuntu16.04 操作系統,Intel Core i7-8700 處理器,NVIDA 1080Ti 獨立顯卡,以及Tensorflow-gpu、Cudn10.0、Cudnn7.4.1.5 庫。
2.1.2 參數設置
調整本文提出深度模型的配置文件以及訓練過程中的參數:在配置文件中將類別數目class 設為1(本數據集中只有一類),檢測頭輸出的維度層數設為18。在進行訓練時,將一次訓練所選取的樣本數量Batch 設為16,迭代次數epoch設為2 000,學習率設為0.001,動量設為0.9,權重衰減值設為0.000 5。訓練集與驗證集的劃分比例為9∶1。另外,在實驗中加入冷凍訓練用于通用的主干網絡提取特征,加快網絡的收斂。
根據數據集的實際情況對二次識別中的參數進行調整:首先將邊緣檢測Canny 算子中的雙閾值分別設為100(大閾值)、50(小閾值);經過分析大量目標預測框的位置信息,得到參數最小的圓半徑為100,最大的圓半徑為200,兩個圓心之間的最小距離為40。
2.1.3 矯正框
本文實驗中將CHT 檢測到的所有目標以圓心O=(xu,yv)、半徑r的形式回歸出來,并將原圖中的圓形目標物體做最小外接矩形處理得到矯正框,這個矯正框將作為新的預測框。最終返回目標的位置信息即為矯正框的左下角坐標(Eu,Ev)、右上角坐標(Fu,Fv),其計算過程如下:

本文實驗采用大恒MER-500-14GM 相機實地拍攝的圖像作為原始樣本,圖像的分辨率為2 592×1 944,圖像格式為.JPG。將實驗數據集中的氣門毛胚件碼放在帶間隙的框架上,氣門之間會相互接觸,相機裝在籃筐上方的安裝架上進行拍照取樣。本項目分別采集順光和逆光條件下,不同角度不同擺放位置的氣門照片,為了不增加標注負擔,這里只取50 張小樣本作為原始數據集。
本文實驗使用PASCAL VOC2007 數據集格式,對圖像使用Labelimg 工具自帶的標注框進行手工標注[23],并對目標的標注框類別進行自定義命名。數據集中的氣門屬于圓形目標,因此對氣門命名為circle,標注完一張圖中的所有目標即生成了一個對應的xml 文件,對原始的數據集均完成標注后共獲得50 個xml 文件。
在完成圖像的采集和標注后,實驗使用數據增強方法對原始的樣本進行1∶50 的擴充,共得到2 500 張的圖片以及2 500 個對應的xml 文件。本文實驗中只需要較小的數據集就可以達到預期的效果,所以這里只進行一個小規模的擴充。
為了驗證本文所提出的方法有利于解決工件氣門識別過程中出現的問題,這里使用采集到的圖像數據集,同時訓練本文提出的模型以及原YOLOv3 模型、YOLOv4 模型。測試集共選取500 張圖片,分別使用原YOLOv3、YOLOv4 檢測方法和傳統的CHT 方法,以及本文所設計的方法對測試集進行測試,將檢測結果作為本文的對比實驗。
本文選取目標檢測方法的精確率(Precision)、召回率(Recall)、交并比(IOU)以及檢測精度(Average Precision,AP)多個指標聯合評價模型。其中,精確率和召回率的定義為:

以目標氣門為例,TP表示被正確識別為氣門的樣本個數,FP表示被錯誤識別為氣門的樣本個數,FN表示未被檢測到的樣本個數。精確率表示正確識別出目標的檢測精度,召回率表示能夠正確識別目標的概率。檢測框與人工標注框的交并比(IOU)定義為:

其中:Pred指代最終的預測框(矯正框),Truth表示人工標注的真實框。IOU 的值越大,表明預測目標的包裹度越好,檢測結果的精度越高。平均檢測精度(Mean Average Precision,MAP)的計算過程是通過給定一組IOU 閾值,在每個IOU 閾值下求所有類的精度AP 并將其平均得到,將其作為這個IOU 閾值下的檢測性能。而本文檢測單一目標,MAP即AP,且本文數據集對檢測精度的要求較高,因此本文選取IOU 閾值為0.9 時的AP 作為最終的評價指標,記為AP@0.9。
為了方便對比,這里采取同一張測試圖的檢測結果進行對比,各模型結果的展示如圖3 所示。從圖3 中的方形預測框可以看出,YOLOv4 方法和本文的方法都準確地將框架邊角處的兩個氣門檢測出來,而圖3(a)中原始的YOLOv3 模型漏檢了這兩個目標。觀察預測框的置信度得分,可以看出圖3(b)和圖3(d)中正確識別目標的個數相同,但圖3(d)中識別出目標的檢測精度高于圖3(b)中的檢測精度,且圖3(d)中大部分目標的置信度得分為1,遠遠高于圖3(a)中的目標置信度分數。可見,原YOLOv3 方法對框架邊角處的氣門存在漏檢的情況,而本文的方法可以有效地識別出框架上的目標,且相比原YOLOv3、YOLOv4 模型的檢測結果在檢測精度上有了進一步提升。接著通過觀察CHT 得到的檢測圓可知,圖3(c)中傳統的CHT 檢測存在較多的漏檢目標,且在檢測重疊目標時,只能識別出上方的目標,下方被遮擋的目標并未檢測到;而本文的方法可以將相互遮擋下的目標全都識別出來,且針對圖中噪聲較大的區域也有很好的識別率。通過對比實驗的預測結果可以看出,本文提出的基于深度卷積網絡與霍夫變換的方法不僅可以有效提高氣門識別的精度,還能增強模型的泛化能力。

圖3 不同模型結果對比展示Fig.3 Display of different model results comparison
表1 給出了不同方法進行氣門識別的Precision、Recall以及AP 值。從表1 可以看出,在精確率方面,原YOLOv3 方法的精確率為94.2%,YOLOv4 檢測方法的精確率為96.9%,本文方法的精確率為97.1%,相較原YOLOv3 方法和YOLOv4 方法分別提高了2.9 個百分點和0.2 個百分點;在召回率方面,本文方法召回率為94.4%,與YOLOv4 方法相同,相較原YOLOv3 方法提高了1.8 個百分點;在IOU 閾值為0.9時的檢測精度上,原YOLOv3 方法的AP 為76.5%,YOLOv4方法的AP 為81.4%,而本文方法的AP 為88.3%,相較原YOLOv3 方法和YOLOv4 方法分別提高了11.8 個百分點和6.9 個百分點。傳統CHT 在精確率和召回率方面均低于其他三個目標檢測方法,而在閾值為0.9 的檢測精度上均高于YOLOv3 和YOLOv4 方法,本文方法與傳統CHT 相比在AP 上提高了3.5 個百分點,另外在精確率和召回率方面也分別提高了11.8 個百分點和13.7 個百分點。

表1 不同目標檢測方法性能對比 單位:%Tab.1 Performance comparison of different target detection methods unit:%
從圖3 中目標氣門的包裹度可以看出,圖3(a)中預測框的包裹性最差,圖3(b)其次,圖3(c)和圖3(d)不相上下。為了進一步驗證本文目標檢測結果的定位精度,這里將各方法得到的IOU 值進行對比,根據原500 張圖像的測試集中的目標進行計算,結果如表2 所示。
表2 展示了不同方法的IOU 值。從表2 中可以看出,本文方法相較原YOLOv3、YOLOv4 方法的IOU 值分別提高了0.17 和0.09;傳統CHT 的IOU 值為0.90,本文方法的IOU 值0.95,相較傳統CHT 又提高了0.05。可見,與單獨使用深度學習的目標檢測方法相比,本文基于深度卷積網絡與霍夫變換的方法得到的檢測框與真實框的交并比更高,目標包裹度更好,目標中心點的定位更準確。

表2 交并比計算結果Tab.2 Calculation results of IOU
各目標檢測方法的檢測速率結果如表3 所示。從表3 中可以看出,本文方法在檢測速率上相較YOLOv4 方法和傳統的CHT 分別提高了2.2 frame/s 和6.6 frame/s,但低于原YOLOv3 方法。

表3 檢測速率結果Tab.3 Detection rate results
本文提出了一種基于雙重檢測的氣門識別方法,旨在解決工業上氣門識別任務中存在的檢測精度較低、重疊目標漏檢率高以及目標包裹度差、圓心定位不準的問題。通過將YOLOv3、YOLOv4、傳統的CHT 方法與本文方法進行氣門檢測效果的對比,實驗結果表明,本文提出的方法在檢測精度上達到了97.1%,在召回率上達到了94.4%,與原YOLOv3 方法相比,在精度和召回率上分別提高了2.9 個百分點和1.8個百分點;且該方法使目標中心點的定位更準確,其矯正框和真實框的交并比達到了0.95,與傳統CHT 相比提高了0.05。本文通過優化深度網絡卷積結構并結合霍夫圓變換檢測的方法,使其在目標相互遮擋、背景復雜度較高的情況下具有較好的魯棒性,相較單一檢測方法有效提高了模型識別的準確率,增強了圓心的定位精度以及目標的包裹程度,基本滿足了工業上氣門識別過程中的需求。本文實驗中為了使目標檢測的定位更準確而犧牲了部分檢測速度,與達到實時的氣門檢測還存在一定的差距,未來可以在檢測速度上進行改進以達到實際應用中的速率要求。