包 俊,劉宏哲
(北京聯(lián)合大學(xué)北京市信息服務(wù)工程重點(diǎn)實(shí)驗(yàn)室,北京 100101)
視覺環(huán)境感知能夠提供駕駛場景的基本信息,在自動(dòng)駕駛技術(shù)的發(fā)展中發(fā)揮著重要作用。傳統(tǒng)的環(huán)境信息獲取是通過窄角針孔攝像頭的方式,而自動(dòng)駕駛汽車需要更大的視野來感知復(fù)雜的環(huán)境,魚眼圖像具有視場大和視角廣的特點(diǎn),因此,魚眼照相機(jī)在自動(dòng)駕駛領(lǐng)域得到廣泛應(yīng)用。
魚眼照相機(jī)拍攝的圖像具有很強(qiáng)的失真[1],畸變給圖像處理帶來困難,魚眼圖像在使用前通常是去失真的,但圖像去失真會(huì)損害圖像質(zhì)量(尤其是在圖像邊界處)并導(dǎo)致信息丟失。此外,標(biāo)準(zhǔn)相機(jī)的視野有限,要求許多相機(jī)覆蓋整個(gè)車身周邊地區(qū),解決該問題的方法是在環(huán)境信息感知時(shí)使用魚眼鏡頭,廣角視圖可以提供180o的半球視圖。利用該特點(diǎn),理論上只需2個(gè)攝像頭就可以覆蓋360o。然而,魚眼相機(jī)在圖像中引入了強(qiáng)烈失真,使得場景中的元素在圖像上出現(xiàn)畸變,因此,常規(guī)的目標(biāo)檢測網(wǎng)絡(luò)(如Faster_RCNN[2])難以應(yīng)用于魚眼圖像的目標(biāo)檢測任務(wù)。
近年來,卷積神經(jīng)網(wǎng)絡(luò)在圖像分類、語義分割[3]和目標(biāo)檢測等視覺識(shí)別任務(wù)中得到廣泛應(yīng)用,此外,手工構(gòu)建的結(jié)構(gòu)(如金字塔池模塊[4])也有助于提高卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)特征提取能力。然而,卷積神經(jīng)網(wǎng)絡(luò)具有固定的結(jié)構(gòu),如固定的過濾核、接收野大小和池核,缺乏處理幾何形變的內(nèi)部機(jī)制,因此,其對圖像中存在形變的目標(biāo)的建模能力有限。
在利用深度學(xué)習(xí)技術(shù)對魚眼圖像進(jìn)行處理時(shí),主要存在2 個(gè)問題,一是目前找不到合適的網(wǎng)絡(luò)模型來對魚眼圖像中的物體形變進(jìn)行很好地建模,二是目前深度學(xué)習(xí)網(wǎng)絡(luò)模型需要大量的訓(xùn)練數(shù)據(jù)集,但現(xiàn)有公開數(shù)據(jù)集都是普通圖像數(shù)據(jù)集,如COCO2017[5]、PA-SCAL VOC 2012[6]和Cityscapes[7]等,用于魚眼圖像目標(biāo)檢測的數(shù)據(jù)集非常少。
針對普通卷積神經(jīng)網(wǎng)絡(luò)難以對魚眼圖像中的目標(biāo)形變進(jìn)行有效建模的問題,本文提出一種融合可變形卷積網(wǎng)絡(luò)的多閾值目標(biāo)檢測器,以對魚眼圖像中的目標(biāo)進(jìn)行檢測。針對訓(xùn)練數(shù)據(jù)集缺乏的問題,本文在數(shù)據(jù)采集車上安裝魚眼相機(jī),采集城市道路環(huán)境中的魚眼圖像并做標(biāo)注處理。其中,數(shù)據(jù)集采用VOC 格式,數(shù)據(jù)量是9 942 張,分為訓(xùn)練集(5 966 張)、驗(yàn)證集(994 張)和測試集(2 982 張)。在此基礎(chǔ)上,利用該目標(biāo)檢測器在公開的魚眼圖像數(shù)據(jù)集SFU_VOC_360[8]和本文所采集的魚眼圖像數(shù)據(jù)集上分別進(jìn)行實(shí)驗(yàn),以驗(yàn)證檢測器的目標(biāo)檢測準(zhǔn)確性。
利用計(jì)算機(jī)視覺技術(shù)判斷圖像或視頻序列中是否存在目標(biāo)并給予精確定位即為目標(biāo)檢測,目標(biāo)檢測技術(shù)可廣泛應(yīng)用于智能交通中的車輛輔助駕駛系統(tǒng)、人體行為分析、機(jī)器人開發(fā)以及視頻監(jiān)控等領(lǐng)域。卷積神經(jīng)網(wǎng)絡(luò)作為深度學(xué)習(xí)的重要組成部分,已經(jīng)被成功應(yīng)用于目標(biāo)檢測領(lǐng)域,卷積神經(jīng)網(wǎng)絡(luò)憑借其在學(xué)習(xí)目標(biāo)紋理和梯度特征時(shí)的優(yōu)勢而受到越來越多的關(guān)注。
在由傳統(tǒng)相機(jī)拍攝的圖像上能取得較好檢測效果的網(wǎng)絡(luò),如Faster-RCNN、R-FCN、YOLO 和SSD等,在處理目標(biāo)形變較大的魚眼圖像時(shí)效果并不理想。因此,設(shè)計(jì)針對存在較大目標(biāo)畸變的圖像的目標(biāo)檢測算法[9]尤為必要。
文獻(xiàn)[10]提出一種基于變換不變圖網(wǎng)絡(luò)的圖形構(gòu)造方法,該方法中卷積濾波器對不同位置上相同圖案的響應(yīng)類似,與鏡頭畸變無關(guān),但其缺點(diǎn)是僅限于特定類型的映射投影成像畸變。文獻(xiàn)[11]提出主動(dòng)卷積(ACU)單元,其定義的卷積沒有固定的形狀,可以通過訓(xùn)練中的反向傳播(BP)來學(xué)習(xí)其形狀,但ACU 的缺點(diǎn)是采樣位置的學(xué)習(xí)過程不穩(wěn)定,模型耗時(shí)較長。文獻(xiàn)[12]提出一種球形卷積網(wǎng)絡(luò),該網(wǎng)絡(luò)用全局投影將360°全景輸入圖像展開為單個(gè)平面圖像,然后將卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用于變形的平面圖像上。文獻(xiàn)[13]提出一種場景理解網(wǎng)絡(luò),構(gòu)造Bottom-Net模型,網(wǎng)絡(luò)將圖像的每個(gè)垂直列作為輸入,輸入列的寬度為24,重疊23 個(gè)像素,然后每列通過卷積網(wǎng)絡(luò)輸出k(高度)種標(biāo)簽中的一個(gè),但是該網(wǎng)絡(luò)的缺點(diǎn)是模型冗余率太高。文獻(xiàn)[14]構(gòu)造失真-覺察卷積濾波器,與標(biāo)準(zhǔn)卷積方法相比,其能有效處理目標(biāo)形變,但在處理等距投影和魚眼鏡頭等立體角投影時(shí)效果較差。文獻(xiàn)[15]提出的魚眼目標(biāo)檢測網(wǎng)絡(luò)中引入了分通道卷積,其對下視魚眼圖像的目標(biāo)檢測性能有所提升。文獻(xiàn)[16]構(gòu)建FisheyeMODNet網(wǎng)絡(luò),分別處理2 個(gè)時(shí)間序列圖像,將像素標(biāo)記為運(yùn)動(dòng)或靜態(tài),但是該網(wǎng)絡(luò)僅能在KITTI 數(shù)據(jù)集上訓(xùn)練,在魚眼圖像上泛化性能較低。
DCN(Deformable Convolutional Networks)[17-18]有可變形卷積和可變形感興趣區(qū)域(RoI)池化2 個(gè)模塊,可增強(qiáng)卷積神經(jīng)網(wǎng)絡(luò)的轉(zhuǎn)換建模能力。DCN在模塊中增加有額外偏移量的空間采樣位置,無需從目標(biāo)任務(wù)中學(xué)習(xí)偏移量,其可以代替現(xiàn)有卷積神經(jīng)網(wǎng)絡(luò)模塊,并通過標(biāo)準(zhǔn)反向傳播進(jìn)行端到端訓(xùn)練,產(chǎn)生可變形卷積網(wǎng)絡(luò)。
可變形卷積網(wǎng)絡(luò)對傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行改進(jìn),替換其中的固定卷積層和池化層,從而更好地處理魚眼圖像中的目標(biāo)形變問題,有效提取物體特征并提升目標(biāo)檢測效果。
基于DCN 的改進(jìn)Faster_RCNN 目標(biāo)檢測網(wǎng)絡(luò)將Faster_RCNN 中的固定卷積層和池化層,替換為可變形卷積和可變形池化。具體如下:
1)傳統(tǒng)的卷積結(jié)構(gòu)可以定義為式(1):
其中,pn是卷積輸出每個(gè)點(diǎn)相對感受野上每個(gè)點(diǎn)的偏移量,其取整數(shù)。
采用可變形卷積后,需在式(1)基礎(chǔ)上給每個(gè)點(diǎn)增加一個(gè)偏移量Δpn,該偏移量是由另一個(gè)卷積得出,因此一般為小數(shù),如式(2)所示:
式(2)中的x(p0+pn+Δpn)的取值非整數(shù),并不對應(yīng)特征圖上實(shí)際存在的點(diǎn),因此,必須通過插值得到其值。如果采用雙線性插值的方法,x(p0+pn+Δpn)可以轉(zhuǎn)換為式(3):
其中,x(q)表示特征圖上所有整數(shù)位置上點(diǎn)的取值,x(p)=x(p0+pn+Δpn)表示加上偏移量后所有小數(shù)位置上點(diǎn)的取值。
2)傳統(tǒng)的RoI Pooling 可以用式(4)來表示。整個(gè)RoI 被分為k×k個(gè)bin,每個(gè)bin 的左上角坐標(biāo)是p0,p是bin 中每個(gè)點(diǎn)相對于p0的坐標(biāo)偏移量,nij是第ij個(gè)bin 中的點(diǎn)數(shù)。將可變形卷積套用到傳統(tǒng)的RoI Pooling 上,可以得到可變形的RoI Pooling,如式(5)所示。
其中,Δpij是每個(gè)bin 的偏移量,該偏移量是針對整個(gè)bin,即對于一個(gè)bin 中的每一個(gè)點(diǎn),該值都相同。
可變形卷積與標(biāo)準(zhǔn)卷積對比如圖1 所示。可變形卷積的基本思想是卷積核的采樣方式可以通過學(xué)習(xí)得到,傳統(tǒng)卷積窗口只要訓(xùn)練其像素權(quán)重參數(shù)即可,而可變形卷積網(wǎng)絡(luò)必須外加一些參數(shù)用來訓(xùn)練卷積窗口的形狀。
圖1 可變形卷積與普通卷積對比Fig.1 Comparison of deformable convolution and ordinary convolution
在可變形卷積中,可變形卷積操作和池化操作都是2 維的,均在同一通道上進(jìn)行。常規(guī)的卷積操作可以分為2 個(gè)部分:在輸入的特征圖上使用規(guī)則網(wǎng)格R進(jìn)行采樣,R定義了感受野的大小和擴(kuò)張;進(jìn)行加權(quán)運(yùn)算。以3×3 的可變形卷積為例,其示意圖如圖2 所示,可變形卷積可以提高對形變圖像的建模能力,其基于一個(gè)平行網(wǎng)絡(luò)學(xué)習(xí)偏移(offset),使得卷積核在輸入特征圖的采樣點(diǎn)發(fā)生偏移,然后集中于感興趣的區(qū)域或目標(biāo)。
圖2 3×3 可變形卷積示意圖Fig.2 Schematic diagram of 3×3 deformable convolution
可變形池化原理如圖3 所示,以3×3 可變形RoI池為例[19],其相比普通RoI Pooling 增加了一個(gè)offset??勺冃纬鼗木唧w操作為:首先,通過普通RoI Pooling 得到一個(gè)特征圖,在特征圖中加一個(gè)全連接層,生成每一個(gè)位置的offset;然后,按照式(3)~式(5)得到ΔPij。為了使offset 的數(shù)據(jù)和RoI 的尺寸相匹配,需要對offset 進(jìn)行微調(diào)。
圖3 3×3 可變形RoI 池化示意圖Fig.3 Schematic diagram of 3×3 deformable RoI pooling
基于DCN的改進(jìn)Faster_RCNN網(wǎng)絡(luò)中的bac-kbone選用Resnet50[20],將Resnet 的階段3~階段5 中的卷積層和池化層替換成可形變卷積和可形變池化,改進(jìn)的Resnet結(jié)構(gòu)如表1所示,融合可變形卷積的Faster_RCNN網(wǎng)絡(luò)結(jié)構(gòu)如圖4 所示。
表1 改進(jìn)的Resnet 網(wǎng)絡(luò)結(jié)構(gòu)Table 1 Improved Resnet network structure
圖4 融合DCN 的Faster_RCNN 網(wǎng)絡(luò)結(jié)構(gòu)Fig.4 Faster_RCNN network structure combining DCN
時(shí)間復(fù)雜度即模型的運(yùn)算次數(shù),可用浮點(diǎn)運(yùn)算次數(shù)(FLOPs)衡量。時(shí)間復(fù)雜度決定了模型的訓(xùn)練預(yù)測時(shí)間,如果復(fù)雜度過高,模型訓(xùn)練和預(yù)測會(huì)耗費(fèi)大量時(shí)間,無法快速地預(yù)測和驗(yàn)證模型性能。卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的時(shí)間復(fù)雜度為:
其中,D是神經(jīng)網(wǎng)絡(luò)層數(shù),即網(wǎng)絡(luò)深度,Ml是第l層卷積核輸出特征圖的邊長,Kl是第l層網(wǎng)絡(luò)的卷積核邊長,Cl是第l個(gè)卷積層的輸出通道數(shù)。經(jīng)分析計(jì)算,融合可變形卷積的Faster_RCNN 網(wǎng)絡(luò)結(jié)構(gòu)的時(shí)間復(fù)雜度為3.8×109。
空間復(fù)雜度(訪存量)包括總參數(shù)量和各層輸出特征圖2 個(gè)部分??臻g復(fù)雜度決定了模型的參數(shù)數(shù)量,由于維度災(zāi)難的限制,模型的參數(shù)越多,訓(xùn)練模型所需的數(shù)據(jù)量就越大,而現(xiàn)實(shí)生活中的數(shù)據(jù)集通常不會(huì)太大,從而導(dǎo)致模型的訓(xùn)練很容易過擬合。卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的空間復(fù)雜度為:
經(jīng)分析計(jì)算,融合可變形卷積的Faster_RCNN網(wǎng)絡(luò)結(jié)構(gòu)的空間復(fù)雜度為4.8×108。
重疊度(Intersection-over-Union,IoU)閾值取值越高,就越容易得到高質(zhì)量的樣本,但是一直選取高閾值會(huì)引發(fā)2 個(gè)問題:
1)樣本減少而引發(fā)過擬合。
2)在訓(xùn)練和推斷階段使用不同的閾值很容易導(dǎo)致正負(fù)樣本誤匹配問題。
為解決上述問題,Cascade_RCNN提出一種多階段的結(jié)構(gòu),其利用不斷提高的閾值,在保證樣本數(shù)不減少的情況下訓(xùn)練出高質(zhì)量的檢測器[21]。
區(qū)域候選網(wǎng)絡(luò)提出的候選區(qū)域多數(shù)質(zhì)量不高,導(dǎo)致無法直接使用高閾值的目標(biāo)檢測器。Cascade_RCNN使用級聯(lián)回歸作為一種重采樣機(jī)制,逐階段提高候選區(qū)域的IoU值,從而使得前一個(gè)階段重新采樣過的候選區(qū)域能夠適應(yīng)下一個(gè)有更高閾值的階段。Cascade_RCNN具有以下優(yōu)勢:
1)每一個(gè)階段的目標(biāo)檢測器都不會(huì)過擬合,都有足夠滿足閾值條件的樣本。
2)更深層的目標(biāo)檢測器可以優(yōu)化更大閾值的候選區(qū)域。
3)每個(gè)階段的閾值不相同,意味著可適應(yīng)多級的分布。
4)在推斷時(shí),雖然最開始區(qū)域候選網(wǎng)絡(luò)提出的候選區(qū)域質(zhì)量不高,但每經(jīng)過一個(gè)階段后質(zhì)量都會(huì)提高,從而和有更高IoU 閾值的目標(biāo)檢測器之間不會(huì)有很嚴(yán)重的正負(fù)樣本誤匹配問題。
將Cascade_RCNN 中的固定卷積層和池化層替換為可變形卷積層和可變形池化層,能夠更好地對形變目標(biāo)進(jìn)行建模以及對魚眼圖像實(shí)現(xiàn)特征提取,從而提升魚眼圖像的目標(biāo)識(shí)別準(zhǔn)確率。融合可變形卷積和可變形池化的Cascade_RCNN 網(wǎng)絡(luò)結(jié)構(gòu)如圖5 所示。骨干網(wǎng)絡(luò)采用Resnet50,其有5 個(gè)階段,本文實(shí)驗(yàn)中替換階段3~階段5 中的固定卷積,階段替換與實(shí)驗(yàn)數(shù)據(jù)集有很大關(guān)系,替換階段3~階段5 中的固定卷積是最適合本文實(shí)驗(yàn)數(shù)據(jù)集的一種替換方式[22]。經(jīng)分析計(jì)算,融合可變形卷積的Cascade_RCNN 網(wǎng)絡(luò)的時(shí)間復(fù)雜度為1.3×108,空間復(fù)雜度為3.5×108。
圖5 融合DCN 的Cascade_RCNN 網(wǎng)絡(luò)結(jié)構(gòu)Fig.5 Cascade_RCNN network structure combining DCN
本文使用單個(gè)NVIDIA GTX 1080Ti GPU 平臺(tái),利用Pytorch 深度學(xué)習(xí)框架對模型進(jìn)行訓(xùn)練和評估,根據(jù)平均精度(mean Average Precision,mAP)標(biāo)準(zhǔn)值來衡量算法對魚眼圖像的目標(biāo)檢測性能[22]。
實(shí)驗(yàn)中采用最近公開的SFU_VOC_360 魚眼圖像數(shù)據(jù)集,該數(shù)據(jù)集由著名數(shù)據(jù)集VOC2012 的后處理常規(guī)圖像生成,包含39 575 張用于目標(biāo)檢測的魚眼圖像,共有20個(gè)類別,數(shù)據(jù)集標(biāo)簽如表2所示,SFU_VOC_360魚眼圖像數(shù)據(jù)集部分圖像如圖6 所示。檢測目標(biāo)出現(xiàn)較大的形變,說明魚眼圖像目標(biāo)檢測的難度大于普通圖像。
表2 SFU_VOC_360 數(shù)據(jù)集標(biāo)簽Table 2 SFU_VOC_360 dataset label
圖6 SFU_VOC_360 魚眼圖像數(shù)據(jù)集部分圖片F(xiàn)ig.6 Some images of SFU_VOC_360 fisheye image dataset
將原始Cascade_RCNN 網(wǎng)絡(luò)作為基準(zhǔn)方法,與本文基于可變形卷積網(wǎng)絡(luò)的目標(biāo)檢測方法進(jìn)行比較?;鶞?zhǔn)方法使用RoIAlign 來提取感興趣區(qū)域的特征,采用平均精度(mAP)作為度量指標(biāo)。首先,在本文所采集的真實(shí)魚眼圖像數(shù)據(jù)集上進(jìn)行目標(biāo)檢測,比較基準(zhǔn)方法與本文方法的檢測性能,結(jié)果如圖7所示。從圖7 可以看出,本文方法相比基準(zhǔn)方法有0.025 的mAP 性能提升。2 種方法訓(xùn)練的學(xué)習(xí)率、訓(xùn)練輪次和平均單張圖片檢測時(shí)間對比結(jié)果如表3所示。
圖7 真實(shí)魚眼圖像上的測試結(jié)果Fig.7 Test results on real fisheye image
表3 2 種方法在真實(shí)魚眼圖像數(shù)據(jù)集上的檢測性能對比Table 3 Comparison of detection performance of two methods on real fisheye image dataset
真實(shí)道路場景魚眼圖像的分辨率是1 280 像素×720像素,本文方法在該圖像上的檢測結(jié)果如圖8所示。
圖8 真實(shí)道路場景魚眼圖像檢測結(jié)果Fig.8 Real road scene fisheye images detection results
在SFU_VOC_360 魚眼圖像數(shù)據(jù)集上比較基準(zhǔn)方法與本文方法的檢測性能,訓(xùn)練的學(xué)習(xí)率、訓(xùn)練輪次以及平均單張圖片檢測時(shí)間對比結(jié)果如表4 所示。SFU_VOC_360 魚眼圖像數(shù)據(jù)集的分辨率是486×486,本文方法在該魚眼圖像數(shù)據(jù)集上的檢測效果如圖9所示,目標(biāo)檢測的準(zhǔn)確率如表5所示。從中可以看出,本文方法相比基準(zhǔn)方法有0.034 的mAP性能提升。
表4 2 種方法在SFU_VOC_360 魚眼圖像數(shù)據(jù)集上的檢測性能對比Table 4 Comparison of detection performance of two methods on SFU_VOC_360 fisheye image dataset
圖9 SFU_VOC_360 魚眼圖像測試結(jié)果Fig.9 SFU_VOC_360 fisheye images test results
表5 SFU_VOC_360 魚眼圖像數(shù)據(jù)集測試結(jié)果Table 5 Test results of SFU_VOC_360 fisheye image dataset
本文提出一種融合可變形卷積網(wǎng)絡(luò)的目標(biāo)檢測方法,用于原始魚眼圖像的目標(biāo)檢測。采用特征金字塔結(jié)構(gòu)檢測多尺度物體,結(jié)合多閾值目標(biāo)檢測器的特性提升模型性能。實(shí)驗(yàn)結(jié)果表明,該方法在魚眼圖像中對目標(biāo)進(jìn)行檢測時(shí)精度較高。本文構(gòu)建的數(shù)據(jù)集規(guī)模仍然較小,下一步將嘗試構(gòu)建目標(biāo)種類更全面的大型數(shù)據(jù)集,以供魚眼圖像目標(biāo)檢測算法訓(xùn)練與測試。