呂棟陽,張 磊 ,張 丹,姚興田,蘇波泳
1.南通大學 機械工程學院,江蘇 南通 226019
2.德島大學 信息工程學院,日本 德島 770-0855
3.約克大學 拉松德學院 機械工程系,加拿大 多倫多 M3J 1P3
特征(角)點匹配是指在兩幀圖像內(nèi)找到特征點集之間的映射和對應關系,其在圖像拼接、目標跟蹤以及目標位姿估計等領域具有重要作用[1-4]。
傳統(tǒng)特征匹配大多基于全局圖像,如視覺SLAM(Simultaneous Location And Mapping)通常將移動機器人采集得到的圖片提取全局ORB(Oriented FAST and Rotated BRIEF)特征[4],對其進行特征匹配后根據(jù)位姿估計算法求取出攝像機運動過程中的姿態(tài)。但這種方式僅適用于整幅圖像具有相同的變換,也即攝像機運動的情況。
對機器人抓取來說,更常見的情況是攝像機固定而物體運動。通過對目標物區(qū)域進行特征匹配并結合PNP(Perspective-N-Point)或者對極約束等算法,可以方便地求取目標物相對攝像機的位姿,因此針對目標物的特征匹配具有重大研究及應用價值。
近年來,有眾多優(yōu)秀的特征匹配算法被相繼提出,這其中較為成功的有SIFT(Scale Invariant Feature Transform)算子[5]和SURF(Speeded Up Robust Features)算子[6],然而這兩種特征提取算法復雜且耗時,難以滿足視頻序列的實時性需求,而且提取得到的特征點也不具備顯著性。角點是圖像中亮度變化劇烈的點或圖像邊緣曲率極大值的點,作為圖像重要的局部特征,角點在保留圖像大部分信息的同時極大地加速了圖像處理的速度??紤]到角點運算的快速性,學者們采用角點作為特征點并結合SIFT 和SURF 進行特征描述從而衍生出了Harris-SIFT[7-8]和Harris-SURF[9]等算法進行圖像匹配。盡管這些算法相較單純使用SIFT和SURF算子而言,特征提取和特征匹配的速度有所加快,但仍舊無法達到實時處理,與此同時還需要配合RANSAC(Random Sample Consensus)等方法來去除一定的誤匹配。
為了解決上面的問題,本文引入深度學習網(wǎng)絡Yolov2-tiny 限定特征提取范圍。采用Shi-Tomasi 角點作為待匹配的特征點,加快了特征提取的速度。同時針對特征匹配算法慢的問題,提出使用LK 光流[10]引導進行匹配的方法,避免了高維特征描述符的計算,加快了特征匹配的速度。實驗證明本文方法可以有效地在視頻序列中對目標物角點實現(xiàn)動態(tài)的匹配。
目標物特征匹配首先需要通過目標物定位確定特征提取區(qū)域,此步驟不僅可以極大地減少后續(xù)特征提取的運算時間,也可以將特征點限定在目標物體上,避免了環(huán)境點的干擾。
目標物位置的提取可以采用離線的方式,即通過鼠標筆勢手動框選待匹配的物體,但此方法不適用在線的場合。幀差法或背差法[11]可以有效地對移動的物體進行檢測,但當物體靜止時算法失效。有些學者通過顏色對物體進行跟蹤[12],但是目標物必須擁有易于辨別的顏色特征,而且該方法對光照十分敏感。
隨著人工智能的迅速發(fā)展,一系列優(yōu)秀的物體識別算法被相繼提出,相較傳統(tǒng)方法,使用深度學習進行物體定位的準確度高,泛化性強,同時額外獲得的物體類別信息具有一定的可區(qū)別性,可以用來指定待處理對象。
Yolo[13-14]系列算法將目標定位和目標分類融合在一個網(wǎng)絡中,將物體檢測簡單地看作回歸問題,相較Faster-RCNN[15]等兩步法速度更快。由于角點動態(tài)匹配對于系統(tǒng)的實時性具有極高的要求,所以本文采用了Yolo系列中的輕量型網(wǎng)絡Yolov2-tiny使物體識別速度進一步加快。
Yolov2-tiny 的識別流程如圖1 所示,首先對圖片網(wǎng)格化,如圖1(a)所示,將輸入圖片劃分成13×13 大小的黑色網(wǎng)格,滑動窗口(黃色矩形)自上而下,自左而右遍歷所有網(wǎng)格,對各個網(wǎng)格進行候選框的預測與提取。圖1(b)為候選框預測的原理,Yolov2-tiny 借鑒了Faster-RCNN中錨框(Anchor Box)的思想,通過對邊框位置的回歸來預測候選框的位置,圖中虛線框為錨框,其為一系列先驗框,紅色實線框是預測框(Bounding Box)。
圖1 Yolov2-tiny識別流程
預測框通過預測中心點相對于其所在網(wǎng)格左上角位置的相對偏移(offset),以及其相對于錨框的大小得到。每個預測框預測5個參數(shù)tx、ty、tw、th和to,具體公式如下:
公式(1)、(2)中bx、by是預測框中心點坐標,cx、cy是當前網(wǎng)格左上角的坐標,tx、ty是預測框中心點偏移值,通過sigmod 函數(shù)將偏移量限制在當前網(wǎng)格內(nèi),這種約束使得模型訓練時更易收斂。公式(3)、(4)中bw、bh是預測框的寬高,pw、ph分別為錨框的寬高,tw、th是預測框相對錨框的寬高比例。
針對使用單一尺度的候選框容易造成漏檢的問題,Yolov2-tiny采用了5個不同尺度的錨框,由圖1(b)原理可知一個網(wǎng)格可以預測5 個尺度的候選框。其預測結果如圖1(c)所示,圖中黃色框為滑動窗口當前所在網(wǎng)格,紅色框為當前網(wǎng)格的5個預測候選框。
按公式(5)計算每個預測框的置信度σ(to),當預測框內(nèi)存在物體時Pr(object)為1,否則為0。IOU代表了預測框與物體真實框之間的重合率,其公式如下:
每個預測框同時預測C個類別的物體概率,將各類別物體概率Pr(Ci|object)與預測框置信度σ(to)相乘得到該框各類別得分scorei:
對scorei排序,取其最大值與設定的閾值比較過濾出潛在的候選框,最后對這些候選框使用非極大值抑制(Non-Maximum Suppression,NMS)篩選得到最終的識別結果,如圖1(d)所示。
角點提取相較SIFT 以及SURF 特征點的提取更為簡單與方便,Shi和Tomasi對Harris[16]方法進行改進提出了Shi-Tomasi[17]角點檢測方法。該算法計算簡單,提取得到的角點均勻合理,且其相較于Harris角點更加穩(wěn)定。
算法通過計算局部檢測窗口W向各個方向做微小移動后的灰度變化情況判定角點。窗口平移產(chǎn)生后灰度的變化如下公式:
式中,w(x,y)是高斯窗口函數(shù)。對于微小移動,I(x+Δx,y+Δy)按泰勒公式展開并忽略二階以及更高階項,代入式(8)化簡后可得:
其中:
M是2×2的自相關矩陣,其決定了E的取值大小,通過計算M的兩個特征值φ1、φ2可以判斷點(x,y)是否為角點。定義角點響應函數(shù)為公式(11),當R大于設定閾值時則判斷為Shi-Tomasi角點。
特征點匹配通常是通過計算特征點鄰域的特征描述,再進行某種相似性度量來實現(xiàn)匹配。但是由于高維度的特征描述計算復雜,所花取的時間代價昂貴,本文提出了一種通過光流引導實現(xiàn)特征點匹配的方法。首先使用LK 光流初步估算角點位置,在估算點鄰域進行角點再提取得到角點精確位置,并結合光流跟蹤得到的角點匹配信息實現(xiàn)了光流引導下的角點匹配。算法避免了特征描述符的計算,有效地加快了匹配速度。
LK光流算法是一種通過計算兩幀差分估算目標運動參數(shù)u、v的稀疏光流算法,算法首先基于灰度不變假設,有:
將等式(12)左邊按泰勒公式展開,并忽略二階及以上項得:
連列式(12)和式(13),并消去I(x,y,t)得:
式(14)兩邊同除dt,并記為矩陣形式:
式(15)為二元一次方程,僅由其無法求解算出運動參數(shù)u、v,LK光流對此進行了空間一致性假設,即假設w×w窗口內(nèi)的像素具有相同的運動,有:
記[IxIy]k為A,Itk為B,簡化得:
解超定方程組式(17),按最小二乘求解得光流值:
通過光流跟蹤可以方便地得到待匹配幀中角點位置的初值以及角點間的對應關系。但光流法是一種基于灰度上的近似,實際得到的角點位置并不精確,存在一定的偏移現(xiàn)象。針對上述問題,提出了一種角點再提純的方法,角點提純過程如圖2所示。
圖2 角點提純過程
圖2(a)是對Yolov2-tiny 定位的目標物區(qū)域按第2章所述的Shi-Tomasi算法進行角點初始化的結果。圖2(b)是直接使用3.1節(jié)LK光流跟蹤算法得到的角點匹配結果,圖中藍色點為光流跟蹤得到的角點,可以發(fā)現(xiàn)此時的角點已經(jīng)發(fā)生了微小的偏移,如果繼續(xù)對產(chǎn)生偏移的點進行跟蹤勢必會造成更大的誤差,從而造成后續(xù)目標物位姿估計的不準確。圖2(c)是角點修正示意圖,以圖2(b)光流跟蹤得到的初值點(圖中藍色點)為中心構建11×11 的掩模,掩模如白色區(qū)域所示,對掩模進行循環(huán)遍歷,按公式(11)對每個掩模內(nèi)的121個像素點求取響應函數(shù)R,并取其中最大值作為提純后的角點,提純后的角點以紅色圈出。圖2(d)即為改進后的角點匹配的結果,可以發(fā)現(xiàn)此時的角點均出現(xiàn)在木塊的棱角上,與圖2(b)相比角點位置更為精確。
至此整體算法流程如圖3所示,首先將輸入圖片送入訓練好的Yolov2-tiny 模型進行目標物候選區(qū)域的提取,設置檢測閾值為0.7過濾掉得分較低的目標框,當滿足此閾值的目標框個數(shù)超過一個時,對這部分區(qū)域進行Shi-Tomasi角點初始化,之后按上述一系列的光流跟蹤及角點提純的步驟實現(xiàn)角點的匹配。角點提純操作完成后,將提純后的角點壓入OPENCV中的vector容器中進行保存,以此作為下一幀光流跟蹤的初始值,此種匹配點實時更新的方式可以有效地避免誤差的累積。同時,對每一幀圖像,根據(jù)角點跟蹤的狀態(tài)判斷匹配是否成功,當角點匹配失?。ㄈ缬龅秸趽醯龋﹦t轉向第一步繼續(xù)進行Yolov2-tiny的目標物識別,直至提取到目標物為止,之后算法按步驟繼續(xù)往下執(zhí)行。
依照本文算法流程,在T形物塊視頻序列上進行了目標物角點動態(tài)匹配實驗,根據(jù)目標物的運動狀態(tài)分別進行了遮擋、平移和旋轉的測試。實驗結果如圖4(a)、圖4(b)和圖4(c)所示,圖中紅色方框為Yolov2-tiny 定位的結果,白色文本框記錄了物體識別的種類以及概率,紅色圓點記錄了角點位置,綠色數(shù)字描述了角點間的匹配關系。實驗驗證了本文算法流程對目標物角點動態(tài)匹配的可行性。
圖3 算法流程圖
使用LK光流法替換原算法流程(如圖3所示)中的改進光流部分,在目標物旋轉情況下進行了對比實驗,實驗結果如圖4(d)所示。為了便于區(qū)分,使用藍色點表示光流跟蹤得到的匹配點。通過觀察可知光流跟蹤得到的匹配點存在漂移現(xiàn)象,而且隨著跟蹤的持續(xù)進行,漂移現(xiàn)象愈為嚴重。與圖4(c)相比,可以得出本文提出的改進光流法具備更好的角點匹配效果。
圖4 T形物塊角點動態(tài)匹配結果
木塊因質量較輕,易于加工以及尺寸精準等優(yōu)點被廣泛應用于機器人抓取的研究之中。木塊形狀多樣,常見的如圓柱體、球體以及長方體等,由于本文研究需要目標物本身具備清晰且易于辨別的角點,故采用長方體木塊作為實驗對象。
為了進一步驗證本文算法兩個組成部分的優(yōu)越性,分別進行了兩組實驗。第一個實驗是Yolov2-tiny 目標物定位實驗,為了驗證了采用Yolov2-tiny進行目標物位置提取的可行性以及泛化性。第二個實驗是特征點匹配實驗,將本文所提出的角點匹配算法同SIFT 以及Harris-SIFT 算法進行比較來驗證本文算法的準確性與實時性。實驗中,硬件環(huán)境為CPU Intel Core i5-9400F,內(nèi)存16 GB,GPU 8 GB GTX-1070TI,軟件環(huán)境為VS2015+OPENCV,操作系統(tǒng)為Windows10專業(yè)版。
4.1.1 數(shù)據(jù)集
由于本系統(tǒng)中Yolov2-tiny 的作用僅僅是作為目標物定位網(wǎng)絡,故實驗數(shù)據(jù)集類別數(shù)為1,且所有樣本均為正樣本。為了體現(xiàn)Yolov2-tiny泛化性強的特點,對三種大小的長方體木塊在不同光照條件下拍攝了共360 張不同視角的圖片作為原始數(shù)據(jù)集,圖片尺寸為640×480,數(shù)據(jù)集部分圖片如圖5 所示。對原始數(shù)據(jù)集使用LabelImg 打標,之后隨機分配其中80%作為訓練集,20%作為測試集。
圖5 數(shù)據(jù)集部分圖片
4.1.2 錨框聚類參數(shù)選擇
Yolov2-tiny 網(wǎng)絡識別性能的好壞與錨框寬高的選擇有很大關系,Yolov2-tiny網(wǎng)絡配置文件中自帶的錨框參數(shù)是根據(jù)VOC2007 和VOC2012 數(shù)據(jù)集確定的,并不具普遍性,所以利用K-Means 算法對自制數(shù)據(jù)集的訓練框的ground truth 進行聚類。聚類結果如圖6 所示,圖6(a)為聚類簇的個數(shù)與IOU的關系曲線,隨著聚類簇數(shù)的增多,IOU增大,但同時網(wǎng)絡負擔也會變大,識別速度變慢。通過觀察曲線可以得出當聚類簇數(shù)為5 時綜合性能最好,此時IOU 達到80.74%。圖6(b)為訓練集在5 個聚類核下的聚類分布,圖中紅色點為聚類中心點,各類別集合以不同顏色區(qū)分,錨框的寬高分別對應 5 個聚類中心點的坐標:(1.09,1.48),(1.80,2.49),(2.37,3.55),(3.29,4.77),(4.94,6.94)。
圖6 聚類結果
4.1.3 訓練與測試結果分析
訓練參數(shù)選擇的好壞決定了網(wǎng)絡收斂的快慢以及性能的優(yōu)劣,通過多次實驗進行試參,最終網(wǎng)絡配置參數(shù)如表1所示。
表1 網(wǎng)絡配置參數(shù)
訓練結果如圖7 所示。圖7(a)為訓練過程中的平均誤差情況,可以發(fā)現(xiàn)隨著訓練的進行,平均誤差也趨近于0;圖7(b)展示了訓練過程中平均交并比情況,在訓練完成時,最終交并比超過了70%;圖7(c)為訓練過程中的平均召回率曲線,雖然召回率一直在波動,但當訓練批次達到1 000 步以后,其值基本穩(wěn)定在100%附近。
圖7 訓練結果可視化
在訓練結束后,使用OPENCV 擴展模塊中的深度學習DNN 模塊將在Darknet 環(huán)境下訓練得到的模型遷移到VS2015中,并在該環(huán)境下對測試集進行了測試,測試實驗中設定檢測閾值為0.7,測試集中部分識別結果如圖8所示。
測試集上的測試數(shù)據(jù)如下:
(1)平均召回率為94.45%,物體的檢出率很高,測試集內(nèi)基本所有的目標物均被提取出來。部分物體由于置信度低于閾值而未被檢測出,此問題可以通過在保證檢測準確率的前提下,適當?shù)亟档蜋z測的閾值進行解決。此外還對網(wǎng)絡在不同環(huán)境下進行了遷移實驗,實驗發(fā)現(xiàn)當物體所處環(huán)境變化過大時,召回率明顯降低,這是由于訓練樣本不充分所致。由于本實驗所有的訓練樣本均為手工制作,制作過程較為繁瑣,所以數(shù)據(jù)量有限而且難以涵蓋目標物存在的各種情況。這部分問題只能通過增大訓練樣本或者采用數(shù)據(jù)增強等方式進行解決。
圖8 部分定位結果
(2)平均交并比為70.37%。由于本文在最初神經(jīng)網(wǎng)絡選型時,將算法運算速度作為首要考慮因素,采用了簡化版的Yolov2神經(jīng)網(wǎng)絡,舍棄了一定的網(wǎng)絡深度,從而導致檢測效果的下降。但此交并比依舊能夠滿足大部分實驗情況,同時為了進一步保證候選框能夠充分包圍目標物,在網(wǎng)絡識別過程中,將候選框的寬高各擴張20個像素。
(3)平均識別速度為38.78 ms,檢測速率超過25 幀/s,此檢測速率完全可以滿足一般視頻處理中的速度要求。
本實驗將攝像機固定而物體運動情況下拍攝的一段視頻作為原始數(shù)據(jù),任取其中四組相鄰圖像對進行實驗對比。在每組實驗中,首先對第一幀圖像使用Yolov2-tiny進行特征點初始化,對第二幀圖像分別使用SIFT、Harris-SIFT以及本文提出的改進光流法進行特征匹配。其中第一組實驗的特征匹配結果如圖9 所示。圖9(a)為SIFT匹配的結果,可以發(fā)現(xiàn)SIFT提取到的特征點不具備顯著性,有很多特征點落在目標物之外。圖9(b)是采用Harris-SIFT 匹配的結果,相較 SIFT 特征點,Harris角點均落在目標物體上,但其匹配過程中出現(xiàn)了角點匹配出錯的問題,這是由于在不同角點處,SIFT特征描述出現(xiàn)了相似,從而造成了誤匹配。圖9(c)是采用本文算法得到的角點匹配結果,可以發(fā)現(xiàn)此時角點全部匹配成功。
為了進一步更直觀地比較三種算法的性能,采用特征點個數(shù),匹配的準確率以及匹配所用時間三種評價指標對實驗進行量化。其中,特征點數(shù)指圖像對中第一幀圖像的特征點個數(shù),匹配準確率為匹配成功的點對數(shù)除以第一幀特征點個數(shù),匹配所用時間為特征點提取時間與特征點匹配時間相加。表2 記錄了四組實驗過程中的相關數(shù)據(jù)。
表2 特征點匹配結果
圖9 特征點匹配效果對比圖
由表2可以發(fā)現(xiàn)SIFT算法所提取的特征點數(shù)最多,但實際上這些點有很多是不在物體上的無效特征點,而且算法匹配的準確率也最低,平均準確率僅為30.81%。本文方法和Harris-SIFT 特征點數(shù)一樣多,但本文算法的匹配準確率最高,四組實驗準確率均為100%。算法耗時性方面,本文方法速度最快,平均耗時僅為30.89 ms,比Harris-SIFT的53.00 ms快了約1.72倍,比速度最慢的SIFT快超過6倍,這樣的速度完全可以滿足特征點動態(tài)匹配的實時性需求。
針對機器人抓取問題中的目標物角點動態(tài)匹配的問題,本文結合當今研究前沿中的深度學習算法,提出使用Yolov2-tiny 進行目標物框選,并進一步使用Shi-Tomasi角點結合LK光流引導匹配的方法完成了對目標物特征點的動態(tài)匹配。通過實驗證明了本文方法的可行性,并為機器人抓取中目標物位姿在線估計提供了一種新的思路。未來將進一步增加目標物的種類,同時加入位姿估計算法的研究,完善整個目標物位姿在線估計系統(tǒng)。