楊保佳,張偉軍,吳廣雨,彭季超
(上海交通大學機械與動力工程學院機器人研究所,上海 200240)
在工業4.0大背景下,現代制造業都開始向智能制造轉型。隨著機器視覺以及相關高精度傳感器的飛速發展,裝配機器人對環境的感知能力得到了顯著提高,需要完成的任務也更具有挑戰性。
在機械裝配領域,螺栓聯接是應用最為廣泛的聯接方式。通過機器視覺相關算法,對螺釘進行高魯棒性的識別和高精度的定位是目前機器視覺研究領域最為熱門的一個方向。計算機視覺的開源庫OpenCV也提供了很多物體識別的算法:霍夫變換[1]、聚類算法[2]、SURF[3]、LINEMODE[4]等。近些年卷積神經網絡在圖像識別上的表現越來越強勁,也隨之出現了一些將傳統機器視覺和CNN相結合的識別定位算法。
目前工業上應用最為主流的視覺識別與定位算法是模板匹配算法。模板匹配算法是根據已知的模板,在目標圖像上搜索最佳匹配點的坐標,本質上是通過規定好的相似度準則來衡量兩個圖像之間的相似度問題。模板匹配算法主要分為基于邊緣的模板匹配算法[5]和基于形狀的匹配算法[6]。基于邊緣模板匹配算法,在光照環境很穩定的情況下,可以得到較理想的結果。但是在光照環境不能較好控制的場景,從目標圖像提取的邊緣會出現斷裂的情況。如果邊緣信息丟失過多,匹配結果往往達不到工業生產的要求。基于形狀匹配算法,使用像素點梯度向量的差異作為兩圖像之間的相似度衡量標準,對光照不敏感且精度更高[7]。
在模板匹配算法的流程中,模板在目標圖像上進行滑窗匹配是最為耗時的一個流程。在大視場的圖像上,傳統算法會進行大量無關的相似度計算,其識別與定位效率還沒有達到實時的要求。
針對這個問題,這里算法使用YOLOv3目標檢測網絡[8]先從大視場的圖像中檢測目標物體,縮小模板匹配搜索的區域。在此基礎上,該算法又使用圖像金字塔的分層搜索策略來進一步提高模板的匹配效率。對于螺釘這種金屬表面材質的物體,在螺釘姿態稍微發生一點變化的情況下,螺帽表面會出現一些反光的區域。在這種情況下,只通過相似度的高低來判斷最佳匹配位置是不穩定的。為了獲得更加穩定的結果,該算法提出了一種區域投票的決策機制來篩選候選點,以便得到更加穩定的性能。根據螺釘識別定位實驗表明,該算法能夠在大視場的圖像上,很穩定和快速的識別螺釘,并且具有很高的定位精度。
程序運行之前需要訓練兩個模型:用螺釘訓練集去訓練YOLOv3目標檢測網絡,訓練螺釘的匹配模板。
算法主要流程,如圖1所示。算法的第一階段,會先用YOLOv3目標檢測網絡去檢測輸入圖像里的螺釘。如果檢測成功,會剔除原圖像中不感興趣的區域;如果檢測不成功,直接使用原圖像作為下一階段的輸入。第二階段,會使用訓練好的模板在輸入的圖像上進行滑窗匹配,來收集候選點。第三階段,為了獲得更加穩定的結果,會依據候選點分布的聚集程度來剔除掉無關點,最后確定最佳的匹配位置。

圖1 算法流程示意圖Fig.1 Algorithm Flow Chart
YOLOv3 采用的是DarkNet53 作為特征提取網絡,在YOLO網絡的基礎上新增了top-down 結構,可以分別在(13×13)、(26×26)、(52×52)特征圖上進行預測,解決了之前算法在檢測顆粒粗,對小目標檢測無力的問題[9]。螺釘檢測的場景滿足YOLOv3的使用范圍。這里使用的訓練集為200張由工業相機在各個場景下拍攝的螺帽圖像,如圖2所示。

圖2 圖片訓練集Fig.2 Picture Training Set
為了降低網絡對光照環境的敏感度,訓練集在螺釘每個擺放場景下,都有3張不同光照強度的圖片。
使用這樣的訓練集訓練出來的目標檢測網絡對螺釘的識別具有極高的魯棒性。
YOLOv3目標檢測網絡的作用,可以做如下的定義:

式中:f()—YOLOv3目標檢測網絡;Iimg—輸入的圖像;Inewimg—輸出結果;Rans—網絡是否檢測到目標的結果。
這里沿用LINEMOD算法對模板特征點的定義規則[10],將像素點的梯度作為特征點的特征值。如果檢測對象是由圓、矩形、三角形等基本圖形元素組成,那么匹配模板可以直接通過這些圖形元素來訓練。
針對螺釘的識別,可以使用一張規整的圓來訓練模板,如圖3所示。

圖3 通過幾何圓和螺釘生成的模板特征點分布Fig.3 Template Feature Point Distribution Generated by Geometric Circles and Screws
如圖3(a)所示,幾何圓訓練出的模板,在單個圓上特征點分布更加緊密,使得算法在螺釘識別上的穩定性更高。
如圖3(b)所示,直接由螺釘訓練出來的模型,其特征點分布更加的松散,特征點之間的約束度更高,更容易出現匹配失敗的情況。
螺帽由很多幾何圓組成,算法可以利用螺帽這個特點,訓練一套不同尺度下的模板圓。使用一組不同尺度下的模板在圖像上搜索螺釘,會得到更加多的候選點,提高了算法的穩定性。本文對于不同尺度下模板的定義如下:

式中:It—初始模板圖像;Ti—在當前縮放比例si下模板的特征點集合;si—由初始化的比例系數s0和當前步長step*i決定的。
將這些數據的處理過程放在模板的訓練階段,就避免了在圖像檢測的時候,再進行模板縮放計算,可以提高算法的速度。
模板匹配算法是通過訓練模板與目標圖像的相似度來確定匹配位置。這里采用LINEMOD 算法定義的模板與目標圖像相似度計算規則:

式中:ori(O,r)—模板圖像O的r位置的梯度;ori(I,t)—目標圖像I的t位置的梯度;c+r—目標圖像I在位置c再加上r的偏移;R(c+r)—以c+r是為中心,邊長為l的臨域,這里的實現細節是因為LINEMOD 算法,將每一個像素點的梯度在R(c+r)臨域擴散,來提高其匹配效率。其中Τ是一系列模板P的集合。
模板在原圖像上逐像素的進行相似度計算,是算法最耗時的一個模塊。使用圖像金字塔可以指數級別的提高匹配效率,但會獲得更多的候選點。這里算法將金字塔頂層匹配出來的候選點,逐層向下傳遞,并不斷更新候選點,直到金字塔底層獲得最終的候選點,如圖4所示。

圖4 模板搜索策略示意圖Fig.4 Schematic Diagram of Template Search Strategy
其中候選點的傳遞規則定義如下:

式中:xdown與ydown—像素級別低一層的候選點坐標;xup和yup—像素級別高一層的候選點坐標。
由于螺釘是金屬表面,螺釘姿態不同會造成螺帽表面反光情況的差異,進而造成匹配的結果有很大的差異,如圖5所示。

圖5 螺釘不同閾值下的檢測結果Fig.5 Test Results Under Different Threshold of Screws
這四張圖片展示了兩種不同螺釘姿態在不同的閾值下,最終檢測出來的候選點分布。可以清楚地看到同一個參數,對于不同姿態的螺釘識別結果的分布并不是穩定的,沒有達到該算法的要求。主要原因是螺釘表面的反光不一樣,有些特征的梯度與模板的梯度的匹配度會顯著上升,導致匹配結果的分布不是很穩定。
針對這種情況,算法采用區域投票的決策機制來剔除誤匹配的候選點。區域的定義規則如下:

式中:ibox—區域序號;px與py—圖像上候選點的坐標;l—區域長度;lcols—圖像列數。
通過該規則定義的區域,如圖6所示。當候選點密集區域剛好分布在區域的邊界時,如圖7所示。

圖6 區域劃分示意圖Fig.6 Schematic Diagram of Area Division

圖7 候選點分布示意圖Fig.7 Schematic Diagram of Candidate Point Distribution
如果只保留候選點最多的區域,那么有一部分需要保留的候選點會被剔除掉,這違背了策略的初衷。該算法在此基礎上定義了如下的區域擴充規則:

式中:R(pi)—以候選點pi為中心;l—邊長的正方形臨域;R(p)—包含所有R(pi)臨域的最小區域。
在R(p)內的所有候選點都會保留下來,如圖8所示。

圖8 候選點收集過程示意圖Fig.8 Schematic Diagram of the Candidate Point Collection Process
由于螺帽最里面的圓環受螺釘反光的影響最小,在得到聚集在圓心周圍的所有候選點之后,算法會根據匹配到的圓的半徑篩選出螺帽最里面的小圓環,進而得到穩定的匹配結果。
實驗將基于邊緣的模板匹配算法、傳統的基于形狀的匹配算法和本文算法。這三種算法在時間效率和準確度上進行了比較。
實驗采用的是Basler的工業相機,視場(72×64)mm,圖像像素分布是(2592×1944),使用的是intel i7 處理器和NVIDA Ge-Force RTX 2080Ti 11G顯卡的計算機平臺對圖像進行處理。
算法實現采用的是OpenCV的數據結構。螺釘是8mm標準的內六角螺釘。光源采用的是條形光源。
首先對算法速度進行對比分析,如圖9 所示。形狀匹配與YOLOv3相結合的算法的速度要明顯高于另外兩種算法。因為新算法在形狀匹配算法的基礎上,使用YOLOv3目標檢測網絡對其進行優化,縮小了模板在原圖像上搜索的區域。

圖9 算法速度對比圖Fig.9 Algorithm Speed Comparison Chart
新算法還使用了圖像金字塔分層搜索策略來進一步提高模板的匹配效率。由于深度學習方法的魯棒性沒有傳統模板匹配算法的魯棒性高。
這里在YOLOv3模型檢測螺釘失敗的時候,會繼續使用形狀匹配算法來檢測螺釘。
圖示第10張圖片就是YOLOv3網絡檢測失敗之后,使用形狀匹配算法繼續檢測的結果。
定位精度分析,如圖10所示。

圖10 螺釘定位分析圖Fig.10 Screw Positioning Analysis Diagram
圖中每隔15°畫一條經過定位圓心的直線,將這12條直線與理論圓相交線段最長的那條線段來近似理論圓的直徑。通過計算定位圓心與這條線段中點的距離來評定定位誤差。
在視場(72×64)mm,圖像像素分布是(2592×1944)的條件下,每一個像素點所表達的距離0.028mm。最終定位誤差的統計結果,如圖11所示。

圖11 算法定位精度對比圖Fig.11 Comparison of Algorithm Positioning Accuracy
新算法在最佳匹配點的選取上不再以相似度為唯一的衡量標準。算法先降低閾值收集了更多的候選點,在此基礎上,通過區域投票策略和判斷圓半徑大小來獲取螺帽孔里的圓環,因此所表現出來的結果相比于傳統的形狀匹配算法更穩定。
從圖中可以看出新算法可以將定位精度控制在0.2mm 以內,相比于另外兩種算法表現會更穩定和精確。
為了在大視場圖像上快速識別和定位螺釘,這里提出了一種形狀匹配與YOLOv3相結合的螺釘識別與定位算法,并與基于邊緣的模板匹配算法和傳統的形狀匹配的算法進行了比較。
實驗結果表明,新算法具有以下的優勢。
(1)使用YOLOv3目標檢測網絡,極大的縮小了算法需要遍歷匹配的區域。在大視場圖像上,相較于傳統的形狀匹配算法,將螺釘的識別速度提高了10倍,可以達到每秒10幀的速度。
(2)在傳統形狀匹配算法的基礎上,使用了金字塔分層匹配策略提升了在圖像上的搜索效率。
(3)相比于傳統的形狀匹配算法,新算法在最佳匹配點的選取上不再以相似度為唯一的衡量標準,所表現出來的螺釘識別準確度更高。