顧德英, 張 松, 孟范偉
(東北大學秦皇島分校 控制工程學院, 河北 秦皇島 066004)
隨著自動駕駛的興起,基于2D圖像的目標檢測不能描述立體空間信息,這就對3D目標檢測有了更多的需求. 當前3D目標檢測算法主要有基于單目、激光雷達、激光雷達和單目融合等[1],雖然基于激光雷達檢測有較高的檢測精確率,但激光雷達非常昂貴,配置在每一個車上還不太現(xiàn)實.因此研究基于單目的3D目標檢測具有現(xiàn)實意義.
基于單目的3D目標檢測,國內(nèi)外的學者進行了很多研究,取得一定的成果.Chen等[2]提出生成一組類相關的物體推薦候選框的方法,然后在一個CNN(convolutional neural network)中利用這組候選框提取出高質量的3D物體包圍框.然而這種方法需要復雜的預處理,不適合在有限的計算資源下進行.Pavlakos等[3]用CNN定位關鍵點,并且利用關鍵點和3D坐標去復原位姿,但是這種方法需要配置標注的關鍵點來訓練數(shù)據(jù).Roddick等[4]引入一種將特征映射(基于透視圖像)轉換為鳥瞰圖的正交變換,然后在鳥瞰圖上自由地回歸車輛的三維尺寸和方向.Brazil等[5]提出一個端到端的區(qū)域建議網(wǎng)絡用于多類別的3D目標檢測,統(tǒng)一2D檢測和3D檢測在一個框架內(nèi),避免引起持續(xù)的噪聲.Weng等[6]從單目圖像中提取深度信息轉成偽激光雷達點云,然后利用基于點云的方法去回歸3D屬性.但是轉換的偽激光雷達點云的密度比較低,進而導致檢測出的3D包圍框精確率也不是很高.Liu等[7]將單個關鍵點估計與回歸三維變量相結合來預測每個對象的3D包圍框,提出了一種構造三維包圍框的多步分離方法,這種方法不需要復雜的預/后處理.綜上所述,基于單目的3D目標檢測雖然已經(jīng)取得一系列研究成果,但是3D包圍框檢測精確率還是不理想,而且實現(xiàn)過程復雜,同時在提取特征階段都是利用卷積網(wǎng)絡提取深層特征圖,雖然深層特征體現(xiàn)強語義特征,但特征的分辨率比較低,且特征圖上小物體的有效信息較少,特征細節(jié)不豐富.
本文在Deep3DBox[8]兩階段方法的基礎上,利用改進的FPN(feature pyramid networks)特征融合、 ResNet殘差單元、全連接層組合成新網(wǎng)絡,并在分割的KITTI驗證集上進行了實驗,結果表明此改進的方法提高了車輛3D包圍框平均精確率(AP3D)這個性能指標.
處理基于單目的3D車輛檢測問題,輸入彩色圖像X∈RH×W×3,檢測輸出左上和右下的2D框坐標A=(x1,y1,x2,y2)和3D框信息B=(h,w,l,x,y,z,θ).其中(h,w,l)代表車輛的高寬長,(x,y,z)代表車輛3D包圍框中心點坐標,θ代表車輛的偏航角.在眾多的車輛方向檢測應用中,檢測方向角為偏航角,而把翻滾角和俯仰角假定為零.
在訓練階段,訓練集圖片通過改進的FPN特征融合提取特征,然后通過三個分支分別回歸出車輛的三維尺寸、殘差角度(Δθ)和置信度.將整個方向范圍2π平均分為n個bins區(qū)間,這樣任何一個預測的局部角度(α)就至少屬于一個區(qū)間范圍.因此每個預測的局部角度(α)可以用區(qū)間(選取置信度最大的bins區(qū)間)的中心角度加殘差角度(Δθ)來表示.在回歸殘差角度(Δθ)時并沒有直接預測Δθ的絕對值,而是選擇回歸(sin(Δθ),cos(Δθ))二維向量,再由這個二維向量計算出實際Δθ的絕對值.在推理階段,利用驗證集中所屬類別車輛的外接矩形的邊框真值坐標,在已經(jīng)訓練好的模型中檢測出所屬類別車輛的三維尺寸和局部角度.結合車輛的外接矩形的邊框真值坐標、車輛的偏航角、幾何約束(車輛的外接3D包圍框投影到圖片上,其投影區(qū)域的外接矩形應與車輛在圖像上的二維邊框相互貼合)、相機內(nèi)參矩陣,計算得到所屬類別車輛3D包圍框的中心點坐標.車輛的偏航角θ=α+β,β為車輛所在位置與相機所在位置的連線構成的射角.最后利用車輛的外接矩形的邊框坐標、車輛3D包圍框的中心點坐標、車輛的偏航角(θ)、相機內(nèi)參矩陣,復原繪制出車輛3D包圍框.本文網(wǎng)絡結構圖如圖1所示,車輛三維尺寸和方向示意圖如圖2所示.
為了增強語義性,傳統(tǒng)的物體檢測模型通常只在深度卷積網(wǎng)絡的最后一個特征圖上進行后續(xù)操作,原方法中采用預訓練的VGG network[9]在最后一層特征圖上操作且對應的下采樣率比較大,造成小物體在特征圖上的有效信息較少,特征圖上的特征細節(jié)不豐富,進而影響其檢測性能.2017年的特征金字塔(FPN)[10]方法融合了不同層的特征,使特征信息優(yōu)勢互補.FPN表示的網(wǎng)絡結構圖如圖3所示.
在基于單目視覺的車輛檢測中,小尺度車輛占據(jù)了較大的比例,對于大尺度車輛,其語義信息出現(xiàn)在較深的特征圖中,小尺度車輛則出現(xiàn)在較淺的特征圖中,隨著網(wǎng)絡的加深,其細節(jié)信息可能會完全消失.因此,本文在FPN的基礎上提出多層融合的方法,其結構如圖4所示.其中,C2特征圖尺寸為56×56×64,經(jīng)過第一個3×3卷積使其通道變?yōu)?56,同時2倍下采樣得到的特征圖尺寸為28×28×256;經(jīng)過第二個3×3卷積通道數(shù)保持不變,但是依然2倍下采樣得到的特征圖為14×14×256.C3特征圖尺寸為28×28×128,經(jīng)過3×3卷積使其通道變?yōu)?56,同時2倍下采樣得到的特征圖尺寸為14×14×256;FPN中的P4特征圖尺寸為14×14×256.這樣,3個不同信息層的特征圖尺寸都為14×14×256.通過通道拼接得到的特征圖尺寸為14×14×768,為了降低網(wǎng)絡參數(shù)量,使用1×1卷積使其通道數(shù)降低為512.最后經(jīng)過3×3卷積作平滑處理和ReLU作非線性激活,最終的特征圖尺寸為14×14×512,此融合方法稱為FPN-FU.研究發(fā)現(xiàn)應用此改進的方法將不同層信息進行融合,把深層高語義信息傳遞到下一層,然后把底層和次底層的高分辨率的信息傳遞到上一層,優(yōu)勢互補,獲得了高分辨率、強語義特征,特征細節(jié)更豐富.
圖1 網(wǎng)絡結構圖
圖2 車輛三維尺寸和方向示意圖[8]
ResNet[11]有多個堆積的殘差單元組成,每個單元(見圖5a)表示如下:
(1)
其中:xl和xl+1為第l個殘差單元的輸入和輸出;F是殘差函數(shù);h(xl)=xl為一個恒等映射;f為ReLU激活函數(shù).ResNet的思想是引入一個深度殘差框架來解決梯度消失問題,即讓卷積網(wǎng)絡去學習殘差映射,而不是期望每一個堆疊的網(wǎng)絡都完整地擬合潛在的映射.
圖5a中高速通道信號和由殘差函數(shù)產(chǎn)生的殘差信號逐元素相加,在第二個卷積層之后,逐元素相加的操作在BN層和ReLU層之間進行.然而原始的殘差單元有一個缺點是ReLU操作后的輸出和逐元素相加不匹配,這主要因為ReLU激活函數(shù)的非負值輸出,導致它僅能提高高速通道信號,而限制了殘差函數(shù)的表達能力[12].為了解決這個問題,提出改進的方法如圖5b所示,去掉ReLU激活函數(shù),替換高速通道的捷徑連接(h(xl)=xl)為h(xl)=ELU(xl),由于ELU輸出值的范圍為(-∞,+∞),殘差函數(shù)輸出值的范圍為(-∞,+∞),這樣兩者逐元素相加不通過ReLU激活函數(shù),可以優(yōu)化不匹配問題,且替換成這個連接之后不增加參數(shù)量和計算時間.此改進方法稱為FPN-FU-ELU.在實驗(應用在FPN-FU的方法上)中應用這種方法,實驗結果證明改進的方法可以優(yōu)化原始殘差模擬中ReLU操作后的輸出和逐元素相加不匹配的問題,提高檢測性能.改進方法表達式為
(2)
在深度卷積網(wǎng)絡中ELU[13]不僅能緩解梯度消失問題而且能加速學習,這可以使深度卷積網(wǎng)絡得到較好的分類精度.ELU單元的表達式如式(3)所示,其表示的特性見圖6.
(3)
圖3 FPN網(wǎng)絡結構圖
圖4 改進的FPN特征融合
ReLU輸出的是非負值,它的激活值的均值大于零.ELU輸出有負值,它能推動激活均值更接近于零.當激活值的均值非零時,就會對下一層造成一個偏置,導致下一層的激活單元有偏置偏移.相比ReLU,ELU可以得到負值,這讓單元激活值的均值可以更接近零,從而能減少偏置偏移,較少的偏置偏移能加速學習.ELU有軟飽和特性,提高了對噪聲的魯棒性.
圖5 原始和改進的殘差單元
圖6 ReLU和ELU(a=1)的特性比較
在圖1的網(wǎng)絡結構中,原方法中的三個獨立分支都是兩層的全連接層,本方法中全部換成三層的全連接層.把檢測結果最好的方法(FPN-FU-ELU)應用在兩層的全連接層進行實驗,發(fā)現(xiàn)檢測性能不如三層全連接層,且對比三層與兩層全連接層的整個網(wǎng)絡,發(fā)現(xiàn)三層的全連接層整個網(wǎng)絡的參數(shù)量和訓練時間與兩層的全連接層整個網(wǎng)絡的參數(shù)量和訓練時間幾乎相當.
本文的實驗是在KITTI數(shù)據(jù)集上進行的,KITTI提供了7 481張圖片用于訓練,7 518張圖片用于測試.由于測試集數(shù)據(jù)沒有公開標注,通用的做法是把7 481張訓練集圖片分割為3 712張訓練集和3 769張驗證集[14],此驗證集為Val1;另一種做法是分割成3 682張訓練集和3 799張驗證集[15],此驗證集為Val2.Val1驗證集中圖片標號為000001.png,000002.png,000004.png等,Val2驗證集中圖片標號為000000.png,000002.png,000003.png等,相應的訓練集內(nèi)容也不一致,這樣可以在不同場景來驗證模型.KITTI對所有的目標物體按檢測的難易程度進行分類,所有的物體分為三個等級:容易(easy),適中(moderate),困難(hard).這些等級根據(jù)每個物體被圖像邊界截斷比例和被遮擋情況決定,具體標準如表1所示.
表1 KITTI物體的分類標準
對于精確率(P)和召回率(R),其計算表達式如下:
(4)
(5)
其中:TP為正確檢測出車輛3D包圍框的三維尺寸和中心點坐標位置與真實框的三維尺寸和中心點坐標位置IoU(IoU計算的是 “預測的邊框”和“真實的邊框”的交集和并集的比值)≥0.7的樣本數(shù)量;FP則為IoU<0.7的樣本數(shù)量;FN為未檢測到真實框的樣本數(shù)量.
對于平均精確率AP,其計算表達式如下:
(6)
其中,ρinterp(r)表示在P-R曲線上,當r′≥r時(召回率r的區(qū)間點為R11={0,0.1,0.2,…,1}),找出召回率r′對應下的精確率P的最大值,AP則為這11個最大值的均值,則在本實驗中利用AP計算的結果即為AP3D.
應用本文提出的改進網(wǎng)絡檢測到車輛3D包圍框仿真圖(見圖7)以及數(shù)據(jù)結果(見表2,表3)說明如下:AP3D表示車輛3D包圍框平均精確率;FC(3)表示利用改進的3層全連接層;FC(2)表示利用原始的2層全連接層.
圖7 車輛3D包圍框仿真圖
(a)—改進的FPN、全連接層在驗證集Val2下的仿真圖; (b)—改進的FPN、殘差單元、全連接層在驗證集Val2下的仿真圖; (c)—改進的FPN、殘差單元和原全連接層在驗證集Val2下的仿真圖; (d)—改進的FPN、殘差單元、全連接層在驗證集Val1下的仿真圖.
表2 基于改進方法的性能指標
表3 基于原方法的性能指標[5]
從表2可以看出,由改進的FPN特征融合、ResNet殘差單元、全連接層組成的新網(wǎng)絡(其最終確認使用改進方法為FPN-FU-ELU+FC(3))獲得一個較好的檢測結果,優(yōu)于原方法下的性能指標.在驗證集Val1下,調(diào)整學習率為0.000 1,0.000 01,0.000 001,選用0.000 01;在驗證集Val2下調(diào)整學習率最終選用0.000 1.對于指標(AP3D)原方法與本文方法都是在Val2驗證集上實驗的.由于Val1和Val2驗證集內(nèi)容大部分不相同,因此可以驗證模型在實際不同場景下的適應能力.
本文提出的基于改進的FPN特征融合、ResNet殘差單元、全連接層組成的新網(wǎng)絡在KITTI驗證集上取得較好的檢測結果.改進的FPN特征融合通過融合不同層的信息獲得強語義、高分辨率特征,使特征細節(jié)更豐富,改進的ResNet殘差單元通過在殘差單元內(nèi)的高速通道上引入ELU激活函數(shù),且逐元素相加后去掉ReLU激活,優(yōu)化了原始殘差單元模擬中ReLU操作后的輸出和逐元素相加不匹配問題,改進的全連接層幾乎沒有增加參數(shù)量和訓練時間,且同等條件下檢測性能優(yōu)于原始2層全連接層.