蘇鵬,羅素云
(201600 上海市 上海工程技術(shù)大學(xué))
圖像動(dòng)態(tài)特征點(diǎn),是指在動(dòng)態(tài)環(huán)境下,相機(jī)獲取的圖像中含有動(dòng)態(tài)物體,而在獲取圖像中的特征點(diǎn)時(shí),部分特征點(diǎn)會(huì)落在此動(dòng)態(tài)物體上,這部分特征點(diǎn)被稱為圖像動(dòng)態(tài)特征點(diǎn)[1]。動(dòng)態(tài)特征點(diǎn)的存在會(huì)影響特征點(diǎn)匹配、位姿估計(jì)等的準(zhǔn)確性[2]。在無(wú)人駕駛領(lǐng)域,進(jìn)行位姿估計(jì)時(shí)假定周圍環(huán)境都是靜態(tài)物體,但避免不了行人、汽車等動(dòng)態(tài)物體干擾。當(dāng)動(dòng)態(tài)物體在圖像中占比較小時(shí),一般可通過(guò)RANSAC(隨機(jī)抽樣一致)算法將其剔除,但當(dāng)動(dòng)態(tài)物體在圖像中占比較大時(shí),RANSAC 算法則不能有效剔除這些動(dòng)態(tài)特征點(diǎn)[3],因此研究動(dòng)態(tài)環(huán)境下動(dòng)態(tài)特征點(diǎn)的剔除,對(duì)無(wú)人汽車的定位很有意義。
為了解決動(dòng)態(tài)特征點(diǎn)影響特征點(diǎn)匹配問(wèn)題,WANG[4]等通過(guò)光流法完成動(dòng)態(tài)物體的過(guò)濾。但是光流法的運(yùn)算量較大,且對(duì)光照變化敏感,魯棒性較差。隨著人工智能技術(shù)的發(fā)展,深度學(xué)習(xí)被越來(lái)越多的研究者應(yīng)用到動(dòng)態(tài)特征點(diǎn)剔除上。YU[5]等利用SegNet 網(wǎng)絡(luò)進(jìn)行動(dòng)態(tài)物體分割,利用語(yǔ)義信息來(lái)完成動(dòng)態(tài)特征點(diǎn)的剔除;BESCOS[6]等利用Mask-RCNN 網(wǎng)絡(luò)和多視角幾何方法來(lái)識(shí)別動(dòng)態(tài)信息;ZHONG[7]等通過(guò)深度圖像的深度值來(lái)判定動(dòng)態(tài)物體來(lái)實(shí)現(xiàn)動(dòng)態(tài)特征點(diǎn)的剔除;席志紅[8]等對(duì)SegNet 網(wǎng)絡(luò)進(jìn)行改進(jìn),提出PSPNet 網(wǎng)絡(luò),使識(shí)別出的動(dòng)態(tài)語(yǔ)義信息更加準(zhǔn)確;CHEN[9]等利用YOLO 模型并結(jié)合貝葉斯濾波識(shí)別動(dòng)態(tài)特征。但是大部分方法會(huì)導(dǎo)致圖像特征點(diǎn)剔除過(guò)多,而保留的靜態(tài)特征點(diǎn)較少,導(dǎo)致特征點(diǎn)匹配效果不佳。
本文提出了一種在動(dòng)態(tài)場(chǎng)景下結(jié)合深度學(xué)習(xí)的圖像動(dòng)態(tài)特征點(diǎn)提出方法,創(chuàng)新點(diǎn)和主要工作包括:(1)將SSD(Single Shot MultiBox Detector)網(wǎng)絡(luò)模型融合到特征點(diǎn)檢測(cè)階段,獲取圖像的動(dòng)態(tài)特征點(diǎn)存在區(qū)域;(2)通過(guò)高斯混合模型的聚類算法,對(duì)特征點(diǎn)進(jìn)行分類、剔除;(3)對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行評(píng)價(jià),估算方法的有效性。
本方法的系統(tǒng)框架如圖1 所示,主要包括動(dòng)態(tài)區(qū)域檢測(cè)和動(dòng)態(tài)特征點(diǎn)提取2 部分。首先對(duì)輸入的RGB 圖像進(jìn)行ORB(Oriented FAST and Rotated BRIEF)特征點(diǎn)提取,再利用SSD 目標(biāo)檢測(cè)模型對(duì)RGB 圖像進(jìn)行動(dòng)態(tài)區(qū)域檢測(cè);同時(shí),通過(guò)深度圖像賦予特征點(diǎn)深度值,再以特征點(diǎn)的深度值為對(duì)象,對(duì)動(dòng)態(tài)區(qū)域內(nèi)的特征點(diǎn)進(jìn)行GMM(高斯混合模型)聚類處理。由于動(dòng)態(tài)區(qū)域的中心點(diǎn)應(yīng)為運(yùn)動(dòng)目標(biāo)上的一點(diǎn),以此點(diǎn)的深度值,判斷聚類后的特征點(diǎn)類別是否為動(dòng)態(tài)特征點(diǎn)類別。最后實(shí)現(xiàn)動(dòng)態(tài)特征點(diǎn)的識(shí)別與剔除。
圖1 整體框架流程圖Fig.1 Overall framework flow chart
隨著感知技術(shù)的發(fā)展,許多應(yīng)用在目標(biāo)檢測(cè)方面的卷積神經(jīng)網(wǎng)絡(luò)模型被提出,最有代表性的有R-CNN、Fast R-CNN、Faster R-CNN、SSD 和YOLO 等。前3 種方法為two-stage 的方法,主要思想就是先找出可能包含待檢測(cè)目標(biāo)的候選框,然后再通過(guò)分類和邊框回歸確定候選框中包含待檢測(cè)物體的概率。但因其包含的步驟較多,所以檢測(cè)速度不能達(dá)到很快。SSD 和YOLO 是one-stage 的方法,它把檢測(cè)直接簡(jiǎn)化為一個(gè)回歸問(wèn)題。通過(guò)設(shè)計(jì)大量的anchor 用于目標(biāo)定位,因此省略了找出包含待檢測(cè)目標(biāo)的候選框這一步驟,所以其檢測(cè)速度大大提升,實(shí)時(shí)性較強(qiáng)。
為了同時(shí)兼顧目標(biāo)檢測(cè)的準(zhǔn)確性和實(shí)時(shí)性,本文選擇SSD 算法作為目標(biāo)檢測(cè)模型。SSD 是Liu Wei 等在2016 的ECCV 上提出的一種目標(biāo)檢測(cè)算法[10],相比two-stage 方法有更快的檢測(cè)速度,相比YOLO 又有更高的檢測(cè)精度。SSD 的網(wǎng)絡(luò)結(jié)構(gòu)如圖2 所示。在特征提取部分,以VGG16 作為其基礎(chǔ)網(wǎng)絡(luò)的同時(shí),將VGG16 的最后2 個(gè)全連接層(FC6,F(xiàn)C7)修改為2 個(gè)卷積層(conv6,conv7)。同時(shí),又在之后添加了6 個(gè)卷積 層(conv8-1,conv8-2,conv9-1,conv9-2,conv10-1,conv10-2),最后通過(guò)全局平均池化輸出一個(gè)1×1×256 的feature map。同時(shí)加入了特征金字塔的檢測(cè)方式,不像YOLO 那樣只利用最高層的feature map,而是在檢測(cè)時(shí)同時(shí)利用多尺度的feature map(conv4-3,conv-7(FC7),conv6-2,conv7-2,conv8_2,conv9_2)。
圖2 SSD 卷積神經(jīng)網(wǎng)絡(luò)Fig.2 SSD convolutional neural network
SSD 以Faster RCNN 中的anchor 作為基礎(chǔ),提出了prior box 的概念。prior box 代表一些目標(biāo)的預(yù)選框,它的生成規(guī)則如下:
(1)以輸出的每個(gè)feature map 上的cell 的中點(diǎn)作為中心來(lái)生成一列同心的prior box。
(2)prior box 的最小邊長(zhǎng)為min_size,最大邊長(zhǎng)為
(3)同時(shí)設(shè)置一個(gè)縱橫比r,即2 個(gè)長(zhǎng)方形,
(4)min_size與max_size由式(1)決定
式中:m——feature map 的數(shù)量。
得到prior box 之后,SSD 通過(guò)分類和回歸獲得目標(biāo)類別和回歸框的位置,以conv4-3 為例,如圖3 所示。
圖3 特征的分類與回歸流程圖Fig.3 Classification and regression flow chart of features
conv4_3 中的feature map 經(jīng)過(guò)batch norm 和卷積,得到[1,21*Num_priorbox,W,H]大小的feature用于softmax 分類,得到[1,4*Num_priorbox,W,H]大小的feature 用于bounding box 回歸,由此可以判斷物體是否為動(dòng)態(tài)類別,同時(shí)也得到了回歸框坐標(biāo)。
本文采用基于pytorch 的SSD 目標(biāo)檢測(cè)模型對(duì)圖像進(jìn)行檢測(cè),得到動(dòng)態(tài)目標(biāo)區(qū)域范圍如圖4 所示。
圖4 動(dòng)態(tài)區(qū)域檢測(cè)結(jié)果Fig.4 Dynamic region detection results
常見(jiàn)的特征點(diǎn)提取算法有sift、SURF、fast 等,ORB 特征是把fast 特征與brief 描述子結(jié)合,并改進(jìn)和優(yōu)化。相比其他特征提取算法,ORB 特征提取的速度較快,且具有旋轉(zhuǎn)不變性,可以滿足攝像頭在連續(xù)采集視頻幀時(shí)實(shí)時(shí)性的要求。
ORB 特征點(diǎn)采用FAST(Features from accelerated segment test)算法檢測(cè)特征點(diǎn)。FAST 的思路是用一個(gè)點(diǎn)與它周圍的點(diǎn)比較,如果它和周圍大部分的點(diǎn)都不一樣,則認(rèn)為它是一個(gè)特征點(diǎn)。獲取步驟如下:
(1)從圖片中選取一個(gè)像素點(diǎn)P,為了判斷它是否是一個(gè)特征點(diǎn),首先把它的灰度值設(shè)為IP;
(2)設(shè)定一個(gè)合適閾值t,當(dāng)2 個(gè)像素點(diǎn)灰度值之差的絕對(duì)值大于t時(shí),則認(rèn)為這2 個(gè)點(diǎn)不同;
(3)考慮該像素點(diǎn)周圍的16 個(gè)像素,如果這16 個(gè)點(diǎn)中有連續(xù)的n個(gè)點(diǎn)都和該像素點(diǎn)不同,那么就認(rèn)為它是一個(gè)角點(diǎn)。
當(dāng)然也可以提出一個(gè)高效測(cè)試快速排除一大部分非特征點(diǎn)。該測(cè)試僅僅檢查上、下、左、右4個(gè)位置的像素。如果是一個(gè)角點(diǎn),那么上述4 個(gè)像素點(diǎn)中至少有3 個(gè)應(yīng)該和該點(diǎn)相同。如果都不滿足,那么該點(diǎn)則不是一個(gè)角點(diǎn)。
得到特征點(diǎn)后,需要以某種方式描述這些特征點(diǎn)的屬性。這些屬性稱為該特征點(diǎn)的描述子。ORB采用BRIEF算法來(lái)計(jì)算一個(gè)特征點(diǎn)的描述子。BRIEF 算法的思路是在關(guān)鍵點(diǎn)P的周圍以一定模式選取N個(gè)點(diǎn)對(duì),然后把這N個(gè)點(diǎn)對(duì)的比較結(jié)果組合起來(lái)作為描述子。獲取步驟如下:
(1)以關(guān)鍵點(diǎn)P為圓心,以d為半徑做圓O。
(2)在圓O內(nèi)某一模式選取N個(gè)點(diǎn)對(duì)。為方便說(shuō)明,取N=4,實(shí)際應(yīng)用中可以取N=512。
(3)選取的4 個(gè)點(diǎn)對(duì)分別標(biāo)記為:P1(A,B),P2(A,B),P3(A,B),P4(A,B)。
(4)定義函數(shù)T
式中:IA——點(diǎn)A的灰度。
(5)分別對(duì)步驟(3)選取的點(diǎn)對(duì)進(jìn)行T操作,將得到的結(jié)果進(jìn)行組合,即得到該點(diǎn)的描述子。
GMM(高斯混合模型)聚類是k-means 模型的一種優(yōu)化。k-means 模型聚類的原理是分別計(jì)算樣本中每個(gè)點(diǎn)與每個(gè)簇中心點(diǎn)的歐氏距離,樣本點(diǎn)離哪個(gè)簇中心點(diǎn)近,則被歸類于哪一個(gè)簇。但k-means 聚類出來(lái)的簇必須為圓形,因此聚類后的結(jié)果可能和實(shí)際的分布情況有很大差別。而GMM則是把所有的簇先假定看作多個(gè)高斯分布,然后通過(guò)樣本點(diǎn)找出K個(gè)高斯分布的期望和方差,聚類出來(lái)的簇的形狀更加靈活多變,且GMM 聚類進(jìn)行簇的劃分時(shí),是根據(jù)每個(gè)樣本點(diǎn)屬于某個(gè)簇的概率劃分的,聚類結(jié)果更加精確。
對(duì)于GMM 聚類,首先給定聚類后簇的個(gè)數(shù)K。對(duì)給定的樣本數(shù)據(jù)集,其高斯混合模型的概率密度函數(shù)由K個(gè)多元高斯分布組合成的混合分布表示:
式中:p(x|μ,Σ)——以μ為均值的向量;Σ——協(xié)方差矩陣的多元高斯分布概率密度函數(shù);ωi——第i個(gè)多元高斯分布在混合模型中的權(quán)重,且
然后對(duì)于給定的聚類簇?cái)?shù)k與樣本集,GMM以參數(shù)估計(jì)的方法推導(dǎo)出混合成分的參數(shù)。GMM訓(xùn)練時(shí)采用極大似然估法:
但是通過(guò)式(4)無(wú)法直接求解,這里用到EM(Expectation-Maximization)方法求解,具體的步驟如下:
(1)根據(jù)給定的k值,初始化k個(gè)多元高斯分布以及權(quán)重;
(2)E 步:根據(jù)當(dāng)前模型參數(shù),計(jì)算第i個(gè)樣本在第k個(gè)分布中的概率;
(3)M 步:計(jì)算新一輪迭代的模型參數(shù)
式中:μk——第k個(gè)分布的期望值;Σk——第k個(gè)分布的方差。
(4)重復(fù)步驟(2)、步驟(3),直到似然估計(jì)值不再變化或達(dá)到最大迭代次數(shù)。
本文首先結(jié)合深度圖像對(duì)3.1 中提取出的ORB特征點(diǎn)賦予深度信息,然后通過(guò)2 中檢測(cè)出的動(dòng)態(tài)區(qū)域,對(duì)目標(biāo)范圍內(nèi)的特征點(diǎn)基于深度信息進(jìn)行GMM 聚類,考慮到動(dòng)態(tài)區(qū)域內(nèi)存在深度值大于動(dòng)態(tài)目標(biāo)深度值的物體與深度值小于動(dòng)態(tài)目標(biāo)深度值的物體,故將聚類簇的數(shù)量k設(shè)置為3,將動(dòng)態(tài)區(qū)域內(nèi)的物體深度值分為3 簇。由于SSD 模型檢測(cè)到的動(dòng)態(tài)范圍中心點(diǎn)一定為動(dòng)態(tài)目標(biāo),故將動(dòng)態(tài)范圍中心點(diǎn)的深度值IO提取出來(lái),計(jì)算聚類結(jié)果中3個(gè)簇的質(zhì)心與中心點(diǎn)深度值的歐氏距離:
式中:k分別取1、2、3;Ik——聚類簇質(zhì)心的值。
取S值最小時(shí)的聚類簇為動(dòng)態(tài)目標(biāo)的特征點(diǎn)聚類簇,其他2 個(gè)聚類簇則認(rèn)為是靜態(tài)特征點(diǎn),最后對(duì)此部分動(dòng)態(tài)目標(biāo)的特征點(diǎn)進(jìn)行剔除。具體的算法框架如圖5 所示。
圖5 動(dòng)態(tài)特征點(diǎn)剔除流程圖Fig.5 Dynamic feature point culling flow chart
選擇網(wǎng)上公開(kāi)的數(shù)據(jù)集——TUM 深度圖像數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),驗(yàn)證本文所提出的算法的有效性。圖6 是本文所采用的TUM 深度圖像數(shù)據(jù)集中的RGB 圖像。
圖6 原始RGB 圖像Fig.6 Original RGB image
圖7(a)是在選用的RGB 圖像上提取出的ORB 特征點(diǎn),圖7(b)是通過(guò)SSD 算法和深度信息聚類來(lái)實(shí)現(xiàn)動(dòng)態(tài)特征點(diǎn)剔除后的圖像。由圖7的實(shí)驗(yàn)結(jié)果可以看出,動(dòng)態(tài)目標(biāo)上的特征點(diǎn)絕大部分都被剔除,且保留了動(dòng)態(tài)區(qū)域內(nèi)的靜態(tài)特征點(diǎn)。通過(guò)計(jì)算動(dòng)態(tài)特征點(diǎn)數(shù)量與動(dòng)態(tài)特征點(diǎn)的剔除數(shù)量,得出動(dòng)態(tài)特征點(diǎn)的剔除率在94%以上,從而驗(yàn)證本文算法可以有效剔除不同場(chǎng)景下動(dòng)態(tài)目標(biāo)上的特征點(diǎn),以此提高特征點(diǎn)匹配、位姿估計(jì)的精度。
圖7 動(dòng)態(tài)特征點(diǎn)剔除示例Fig.7 Dynamic feature point elimination examples
本文采用了ORB 特征提取的方法,融合了一種基于深度學(xué)習(xí)的SSD 目標(biāo)檢測(cè)模型與GMM 高斯聚類算法,并以公開(kāi)數(shù)據(jù)集TUM 動(dòng)態(tài)場(chǎng)景深度圖像數(shù)據(jù)集作為測(cè)試,實(shí)現(xiàn)動(dòng)態(tài)目標(biāo)上特征點(diǎn)的剔除。該方法在實(shí)時(shí)性、剔除率上取得了良好效果,但是在實(shí)際應(yīng)用中由于相機(jī)受光照強(qiáng)度影響,導(dǎo)致動(dòng)態(tài)目標(biāo)上一些邊緣特征的深度值采集效果不好,部分邊緣動(dòng)態(tài)特征點(diǎn)剔除失敗,因此要進(jìn)一步改進(jìn)算法提高動(dòng)態(tài)特征點(diǎn)的剔除率。