包 俊,劉宏哲
(北京聯合大學北京市信息服務工程重點實驗室,北京 100101)
視覺環境感知能夠提供駕駛場景的基本信息,在自動駕駛技術的發展中發揮著重要作用。傳統的環境信息獲取是通過窄角針孔攝像頭的方式,而自動駕駛汽車需要更大的視野來感知復雜的環境,魚眼圖像具有視場大和視角廣的特點,因此,魚眼照相機在自動駕駛領域得到廣泛應用。
魚眼照相機拍攝的圖像具有很強的失真[1],畸變給圖像處理帶來困難,魚眼圖像在使用前通常是去失真的,但圖像去失真會損害圖像質量(尤其是在圖像邊界處)并導致信息丟失。此外,標準相機的視野有限,要求許多相機覆蓋整個車身周邊地區,解決該問題的方法是在環境信息感知時使用魚眼鏡頭,廣角視圖可以提供180o的半球視圖。利用該特點,理論上只需2個攝像頭就可以覆蓋360o。然而,魚眼相機在圖像中引入了強烈失真,使得場景中的元素在圖像上出現畸變,因此,常規的目標檢測網絡(如Faster_RCNN[2])難以應用于魚眼圖像的目標檢測任務。
近年來,卷積神經網絡在圖像分類、語義分割[3]和目標檢測等視覺識別任務中得到廣泛應用,此外,手工構建的結構(如金字塔池模塊[4])也有助于提高卷積神經網絡的目標特征提取能力。然而,卷積神經網絡具有固定的結構,如固定的過濾核、接收野大小和池核,缺乏處理幾何形變的內部機制,因此,其對圖像中存在形變的目標的建模能力有限。
在利用深度學習技術對魚眼圖像進行處理時,主要存在2 個問題,一是目前找不到合適的網絡模型來對魚眼圖像中的物體形變進行很好地建模,二是目前深度學習網絡模型需要大量的訓練數據集,但現有公開數據集都是普通圖像數據集,如COCO2017[5]、PA-SCAL VOC 2012[6]和Cityscapes[7]等,用于魚眼圖像目標檢測的數據集非常少。
針對普通卷積神經網絡難以對魚眼圖像中的目標形變進行有效建模的問題,本文提出一種融合可變形卷積網絡的多閾值目標檢測器,以對魚眼圖像中的目標進行檢測。針對訓練數據集缺乏的問題,本文在數據采集車上安裝魚眼相機,采集城市道路環境中的魚眼圖像并做標注處理。其中,數據集采用VOC 格式,數據量是9 942 張,分為訓練集(5 966 張)、驗證集(994 張)和測試集(2 982 張)。在此基礎上,利用該目標檢測器在公開的魚眼圖像數據集SFU_VOC_360[8]和本文所采集的魚眼圖像數據集上分別進行實驗,以驗證檢測器的目標檢測準確性。
利用計算機視覺技術判斷圖像或視頻序列中是否存在目標并給予精確定位即為目標檢測,目標檢測技術可廣泛應用于智能交通中的車輛輔助駕駛系統、人體行為分析、機器人開發以及視頻監控等領域。卷積神經網絡作為深度學習的重要組成部分,已經被成功應用于目標檢測領域,卷積神經網絡憑借其在學習目標紋理和梯度特征時的優勢而受到越來越多的關注。
在由傳統相機拍攝的圖像上能取得較好檢測效果的網絡,如Faster-RCNN、R-FCN、YOLO 和SSD等,在處理目標形變較大的魚眼圖像時效果并不理想。因此,設計針對存在較大目標畸變的圖像的目標檢測算法[9]尤為必要。
文獻[10]提出一種基于變換不變圖網絡的圖形構造方法,該方法中卷積濾波器對不同位置上相同圖案的響應類似,與鏡頭畸變無關,但其缺點是僅限于特定類型的映射投影成像畸變。文獻[11]提出主動卷積(ACU)單元,其定義的卷積沒有固定的形狀,可以通過訓練中的反向傳播(BP)來學習其形狀,但ACU 的缺點是采樣位置的學習過程不穩定,模型耗時較長。文獻[12]提出一種球形卷積網絡,該網絡用全局投影將360°全景輸入圖像展開為單個平面圖像,然后將卷積神經網絡應用于變形的平面圖像上。文獻[13]提出一種場景理解網絡,構造Bottom-Net模型,網絡將圖像的每個垂直列作為輸入,輸入列的寬度為24,重疊23 個像素,然后每列通過卷積網絡輸出k(高度)種標簽中的一個,但是該網絡的缺點是模型冗余率太高。文獻[14]構造失真-覺察卷積濾波器,與標準卷積方法相比,其能有效處理目標形變,但在處理等距投影和魚眼鏡頭等立體角投影時效果較差。文獻[15]提出的魚眼目標檢測網絡中引入了分通道卷積,其對下視魚眼圖像的目標檢測性能有所提升。文獻[16]構建FisheyeMODNet網絡,分別處理2 個時間序列圖像,將像素標記為運動或靜態,但是該網絡僅能在KITTI 數據集上訓練,在魚眼圖像上泛化性能較低。
DCN(Deformable Convolutional Networks)[17-18]有可變形卷積和可變形感興趣區域(RoI)池化2 個模塊,可增強卷積神經網絡的轉換建模能力。DCN在模塊中增加有額外偏移量的空間采樣位置,無需從目標任務中學習偏移量,其可以代替現有卷積神經網絡模塊,并通過標準反向傳播進行端到端訓練,產生可變形卷積網絡。
可變形卷積網絡對傳統卷積神經網絡進行改進,替換其中的固定卷積層和池化層,從而更好地處理魚眼圖像中的目標形變問題,有效提取物體特征并提升目標檢測效果。
基于DCN 的改進Faster_RCNN 目標檢測網絡將Faster_RCNN 中的固定卷積層和池化層,替換為可變形卷積和可變形池化。具體如下:
1)傳統的卷積結構可以定義為式(1):

其中,pn是卷積輸出每個點相對感受野上每個點的偏移量,其取整數。
采用可變形卷積后,需在式(1)基礎上給每個點增加一個偏移量Δpn,該偏移量是由另一個卷積得出,因此一般為小數,如式(2)所示:

式(2)中的x(p0+pn+Δpn)的取值非整數,并不對應特征圖上實際存在的點,因此,必須通過插值得到其值。如果采用雙線性插值的方法,x(p0+pn+Δpn)可以轉換為式(3):

其中,x(q)表示特征圖上所有整數位置上點的取值,x(p)=x(p0+pn+Δpn)表示加上偏移量后所有小數位置上點的取值。
2)傳統的RoI Pooling 可以用式(4)來表示。整個RoI 被分為k×k個bin,每個bin 的左上角坐標是p0,p是bin 中每個點相對于p0的坐標偏移量,nij是第ij個bin 中的點數。將可變形卷積套用到傳統的RoI Pooling 上,可以得到可變形的RoI Pooling,如式(5)所示。

其中,Δpij是每個bin 的偏移量,該偏移量是針對整個bin,即對于一個bin 中的每一個點,該值都相同。
可變形卷積與標準卷積對比如圖1 所示。可變形卷積的基本思想是卷積核的采樣方式可以通過學習得到,傳統卷積窗口只要訓練其像素權重參數即可,而可變形卷積網絡必須外加一些參數用來訓練卷積窗口的形狀。

圖1 可變形卷積與普通卷積對比Fig.1 Comparison of deformable convolution and ordinary convolution
在可變形卷積中,可變形卷積操作和池化操作都是2 維的,均在同一通道上進行。常規的卷積操作可以分為2 個部分:在輸入的特征圖上使用規則網格R進行采樣,R定義了感受野的大小和擴張;進行加權運算。以3×3 的可變形卷積為例,其示意圖如圖2 所示,可變形卷積可以提高對形變圖像的建模能力,其基于一個平行網絡學習偏移(offset),使得卷積核在輸入特征圖的采樣點發生偏移,然后集中于感興趣的區域或目標。

圖2 3×3 可變形卷積示意圖Fig.2 Schematic diagram of 3×3 deformable convolution
可變形池化原理如圖3 所示,以3×3 可變形RoI池為例[19],其相比普通RoI Pooling 增加了一個offset。可變形池化的具體操作為:首先,通過普通RoI Pooling 得到一個特征圖,在特征圖中加一個全連接層,生成每一個位置的offset;然后,按照式(3)~式(5)得到ΔPij。為了使offset 的數據和RoI 的尺寸相匹配,需要對offset 進行微調。

圖3 3×3 可變形RoI 池化示意圖Fig.3 Schematic diagram of 3×3 deformable RoI pooling
基于DCN的改進Faster_RCNN網絡中的bac-kbone選用Resnet50[20],將Resnet 的階段3~階段5 中的卷積層和池化層替換成可形變卷積和可形變池化,改進的Resnet結構如表1所示,融合可變形卷積的Faster_RCNN網絡結構如圖4 所示。

表1 改進的Resnet 網絡結構Table 1 Improved Resnet network structure

圖4 融合DCN 的Faster_RCNN 網絡結構Fig.4 Faster_RCNN network structure combining DCN
時間復雜度即模型的運算次數,可用浮點運算次數(FLOPs)衡量。時間復雜度決定了模型的訓練預測時間,如果復雜度過高,模型訓練和預測會耗費大量時間,無法快速地預測和驗證模型性能。卷積神經網絡結構的時間復雜度為:

其中,D是神經網絡層數,即網絡深度,Ml是第l層卷積核輸出特征圖的邊長,Kl是第l層網絡的卷積核邊長,Cl是第l個卷積層的輸出通道數。經分析計算,融合可變形卷積的Faster_RCNN 網絡結構的時間復雜度為3.8×109。
空間復雜度(訪存量)包括總參數量和各層輸出特征圖2 個部分。空間復雜度決定了模型的參數數量,由于維度災難的限制,模型的參數越多,訓練模型所需的數據量就越大,而現實生活中的數據集通常不會太大,從而導致模型的訓練很容易過擬合。卷積神經網絡結構的空間復雜度為:

經分析計算,融合可變形卷積的Faster_RCNN網絡結構的空間復雜度為4.8×108。
重疊度(Intersection-over-Union,IoU)閾值取值越高,就越容易得到高質量的樣本,但是一直選取高閾值會引發2 個問題:
1)樣本減少而引發過擬合。
2)在訓練和推斷階段使用不同的閾值很容易導致正負樣本誤匹配問題。
為解決上述問題,Cascade_RCNN提出一種多階段的結構,其利用不斷提高的閾值,在保證樣本數不減少的情況下訓練出高質量的檢測器[21]。
區域候選網絡提出的候選區域多數質量不高,導致無法直接使用高閾值的目標檢測器。Cascade_RCNN使用級聯回歸作為一種重采樣機制,逐階段提高候選區域的IoU值,從而使得前一個階段重新采樣過的候選區域能夠適應下一個有更高閾值的階段。Cascade_RCNN具有以下優勢:
1)每一個階段的目標檢測器都不會過擬合,都有足夠滿足閾值條件的樣本。
2)更深層的目標檢測器可以優化更大閾值的候選區域。
3)每個階段的閾值不相同,意味著可適應多級的分布。
4)在推斷時,雖然最開始區域候選網絡提出的候選區域質量不高,但每經過一個階段后質量都會提高,從而和有更高IoU 閾值的目標檢測器之間不會有很嚴重的正負樣本誤匹配問題。
將Cascade_RCNN 中的固定卷積層和池化層替換為可變形卷積層和可變形池化層,能夠更好地對形變目標進行建模以及對魚眼圖像實現特征提取,從而提升魚眼圖像的目標識別準確率。融合可變形卷積和可變形池化的Cascade_RCNN 網絡結構如圖5 所示。骨干網絡采用Resnet50,其有5 個階段,本文實驗中替換階段3~階段5 中的固定卷積,階段替換與實驗數據集有很大關系,替換階段3~階段5 中的固定卷積是最適合本文實驗數據集的一種替換方式[22]。經分析計算,融合可變形卷積的Cascade_RCNN 網絡的時間復雜度為1.3×108,空間復雜度為3.5×108。

圖5 融合DCN 的Cascade_RCNN 網絡結構Fig.5 Cascade_RCNN network structure combining DCN
本文使用單個NVIDIA GTX 1080Ti GPU 平臺,利用Pytorch 深度學習框架對模型進行訓練和評估,根據平均精度(mean Average Precision,mAP)標準值來衡量算法對魚眼圖像的目標檢測性能[22]。
實驗中采用最近公開的SFU_VOC_360 魚眼圖像數據集,該數據集由著名數據集VOC2012 的后處理常規圖像生成,包含39 575 張用于目標檢測的魚眼圖像,共有20個類別,數據集標簽如表2所示,SFU_VOC_360魚眼圖像數據集部分圖像如圖6 所示。檢測目標出現較大的形變,說明魚眼圖像目標檢測的難度大于普通圖像。

表2 SFU_VOC_360 數據集標簽Table 2 SFU_VOC_360 dataset label

圖6 SFU_VOC_360 魚眼圖像數據集部分圖片Fig.6 Some images of SFU_VOC_360 fisheye image dataset
將原始Cascade_RCNN 網絡作為基準方法,與本文基于可變形卷積網絡的目標檢測方法進行比較。基準方法使用RoIAlign 來提取感興趣區域的特征,采用平均精度(mAP)作為度量指標。首先,在本文所采集的真實魚眼圖像數據集上進行目標檢測,比較基準方法與本文方法的檢測性能,結果如圖7所示。從圖7 可以看出,本文方法相比基準方法有0.025 的mAP 性能提升。2 種方法訓練的學習率、訓練輪次和平均單張圖片檢測時間對比結果如表3所示。

圖7 真實魚眼圖像上的測試結果Fig.7 Test results on real fisheye image

表3 2 種方法在真實魚眼圖像數據集上的檢測性能對比Table 3 Comparison of detection performance of two methods on real fisheye image dataset
真實道路場景魚眼圖像的分辨率是1 280 像素×720像素,本文方法在該圖像上的檢測結果如圖8所示。

圖8 真實道路場景魚眼圖像檢測結果Fig.8 Real road scene fisheye images detection results
在SFU_VOC_360 魚眼圖像數據集上比較基準方法與本文方法的檢測性能,訓練的學習率、訓練輪次以及平均單張圖片檢測時間對比結果如表4 所示。SFU_VOC_360 魚眼圖像數據集的分辨率是486×486,本文方法在該魚眼圖像數據集上的檢測效果如圖9所示,目標檢測的準確率如表5所示。從中可以看出,本文方法相比基準方法有0.034 的mAP性能提升。

表4 2 種方法在SFU_VOC_360 魚眼圖像數據集上的檢測性能對比Table 4 Comparison of detection performance of two methods on SFU_VOC_360 fisheye image dataset

圖9 SFU_VOC_360 魚眼圖像測試結果Fig.9 SFU_VOC_360 fisheye images test results

表5 SFU_VOC_360 魚眼圖像數據集測試結果Table 5 Test results of SFU_VOC_360 fisheye image dataset
本文提出一種融合可變形卷積網絡的目標檢測方法,用于原始魚眼圖像的目標檢測。采用特征金字塔結構檢測多尺度物體,結合多閾值目標檢測器的特性提升模型性能。實驗結果表明,該方法在魚眼圖像中對目標進行檢測時精度較高。本文構建的數據集規模仍然較小,下一步將嘗試構建目標種類更全面的大型數據集,以供魚眼圖像目標檢測算法訓練與測試。