1. 程式人生 > >基於Spatial CNN的車道線檢測和交通場景理解

基於Spatial CNN的車道線檢測和交通場景理解

SCNN車道線檢測--(SCNN)Spatial As Deep: Spatial CNN for Traffic Scene Understanding(論文解讀)

Spatial As Deep: Spatial CNN for Traffic Scene Understanding

收錄:AAAI2018 (AAAI Conference on Artificial Intelligence)

原文地址:SCNN

論文提出了一個新穎網路Spatial CNN,在圖片的行和列上做資訊傳遞。可以有效的識別強先驗結構的目標。論文提出了一個大型的車道檢測資料集,用於進一步推動自動駕駛發展。

程式碼:


Abstract

  現今的CNN模型通常是由卷積塊堆疊構建,雖然CNN有強大的特徵提取能力,但現存CNN架構沒有足夠充分探索影象行和列上的空間關係能力。這些關係對於學習強先驗形狀的物件很重要,尤其是外觀(影象畫素)連貫性很弱。例如交通線,車道經常會被遮擋,或者壓根就沒在路上畫車道線。如下圖所示:

  本文提出了Spatial CNN(CNN),它將傳統的卷積層接層(layer-by-layer)的連線形式的轉為feature map中片連片卷積(slice-by-slice)的形式,使得圖中畫素行和列之間能夠傳遞資訊。這特別適用於檢測長距離連續形狀的目標或大型目標,有著極強的空間關係但是外觀線索較差的目標,例如交通線,電線杆和牆。論文在車道檢測挑戰和CityScapes上評估了SCNN的表現,同時SCNN在TuSimple Benchmark lane Detection challenge獲得了第一名,準確率為96.53%。


Introduction

  自動駕駛中最具挑戰的任務之一是交通場景理解,包括計算機視覺任務下的車道檢測和語義分割。車道檢測幫助指導車輛,語義分割提供更多關於周圍環境目標的細節位置。但在實際情況下,因為有許多惡劣條件,這些任務可能非常具有挑戰性。對於交通場景理解的另一個挑戰是,在許多情況下需要在有強結構先驗知識下處理外形線索不多的目標,例如交通線,桿狀物等,這些具有長距離連續的形狀,常常有很大部分被遮擋。

  得益於強大的學習表示能力,CNN將視覺理解推向了一個新的高度。但是這依然不能很好地處理外形線索不多的有強結構先驗的目標,而人類可以推斷它們的位置並填充遮擋的部分。

  為了解決這個問題,論文提出了SCNN,將深度卷積神經網路推廣到豐富空間層次。

  傳統的CNN,任意層接收上層的資料作輸入,再作卷積並加啟用傳給下一層,這個過程是順序執行的。與之類似的是,SCNN將feature map的行或列也看成layer,也使用卷積加非線性啟用,從而實現空間上的深度神經網路。這使得空間資訊能夠在同層的神經元上傳播,增強空間資訊進而對於識別結構化物件特別有效。

相關工作:

  對於車道檢測任務,大多數現有的演算法都是依賴於低階手工特徵,這讓模型難以在惡劣條件下工作。2015年有工作嘗試使用深度學習方案用於車道檢測,但苦於沒有大的廣泛的資料集(說這個的原因是論文建立了一個大的資料集~)。對於語義分割,基於CNN的方案的已經成為主流並取得了巨大的成功。

  對於在深度神經網路中使用空間資訊:有工作使用RNN按每列和行傳遞資訊,但每個畫素只能接收同一行或列的資訊。也有工作使用LSTM變體探索語義分割的上下文資訊,但計算消耗較大。也有工作嘗試結合CNN和圖模型(例如MRF或CRF),通過大卷積核傳遞資訊。

與上述方案相比,SCNN有如下幾個優勢:

  • 訊息傳遞比傳統的MRF/CRF更有計算效率
  • 訊息傳遞使用的是殘差,這更易訓練
  • SCNN很靈活,適用於多種深度神經網路

Spatial Convolutional Neural Network

Lane Detection Dataset

  本文提出了一個關於交通車道檢測的大規模資料集。以前的車道檢測資料集(KITTI,CamVid)要不就是太簡單,要不就是資料太小。最近的(Caltech,TuSimple)資料集是在交通受限狀態下建立的,這樣的資料車流量少且路標較為清晰。這些資料集沒有包括一些車道線模糊,條件惡劣的情況,而這些情況人類可以推斷出來,且這具有很高的實用價值。

  論文提出的資料集是由六輛車在北京不同時間錄製的,超過55個小時共收集了133,235 張圖片,這超過TuSimple 資料集20倍了。論文分成88880張作為訓練集, 9675作為驗證集,34680做測試集。影象的大小為1640×590。下圖是示例和簡介:

 

  資料集內包括城市、農村和高速公路等場景,北京作為世界上最大和最擁擠的城市之一,對應的車道檢測資料提供了很多具有挑戰性的交通場景。論文將測試集分為正常和8個具有挑戰性的類別,這對應上圖 (a)的9個示例情況。圖(b)顯示的是挑戰性的場景站資料集的比例(共72.3%)。

  對於每一張圖片,使用三條線註釋車道,如前面所述,許多情況下車道是被遮擋的或看不見的。而這在實際情況下是很重要的,車道檢測演算法需要能夠在這種情況下工作。對此,標註工作根據上下文也做了標註,如圖(2)(4)所示。對於圖(1)的情況我們不對障礙的另一邊做標註,將精力集中於最受關注的部分。

Spatial CNN

  傳統的關於空間關係的建模方法是基於概率圖模型的,例如馬爾科夫隨機場(MRF)或條件隨機場(CRF)。最近有工作將概率圖與CNN相結合,如圖 3(a)所示:

CRF可化為平均場,演算法可以用神經網路來實現,具體來說,過程分為:

  • 標準化:CNN的輸出作為一元勢函式,並通過Softmax操作標準化
  • 資訊傳遞:可通過大核心的逐通道卷積實現(對於DenseCRF,核心大小將覆蓋整張圖片,核心權重取決於圖片)
  • 相容性轉換:使用1×1的卷積實現
  • 新增一元勢:整個過程迭代N次得到最終輸出

  可以看到傳統方法在傳遞資訊時,每個畫素點接受來自全圖其他畫素的資訊,這在計算上是非常昂貴的,難以應用於實時系統。且對於MRF的大卷積核權重很難學。這些方法是應用在CNN的輸出上的,論文認為CNN的隱藏層,包含了豐富的空間關係,可更好的用於處理空間關係。

  論文提出了Spatial CNN,這裡的Spatial不是指Spatial Convolution,而是CNN通過特徵的設計架構傳遞空間資訊。SCNN更有效的學習空間關係,能平滑的找出連續的有強先驗的結構目標。SCNN的整體架構如下:

 

(圖中SCNN的下標有D,U,R,L,這在結構上是類似的,方向上分別表示為向下,向上,向右,向左)

先以SCNN_D分析:

  考慮到SCNN應用在三維張量C×H×W上,C,H,W分別代表通道數,長和寬。為了實現空間資訊傳遞,將張量切分成H片(slice),先將第一片送到尺寸為C×w的卷積層(w為卷積核的寬度)。傳統的CNN是將這層的輸出傳遞給下一層,而這裡是將這片輸出相加到下一片作為新的一片。接著下一片繼續應用卷積(這裡卷積核共享),直到處理完所有片。

  具體來講,假設我們有一個三維的張量K,其中Ki,j,k記為最後一片中通道i的元素和當前片中通道j的元素之間的權重,這兩個元素之間偏移為k列。同樣的將Xi,j,k記錄為張量X的元素,其中i,j,k分別指代通道,行,列. 
  則SCNN的前向計算為: 

  其中f是非線性啟用函式ReLU。X加′′表示更新後的值,注意所有的片共享一組卷積核,SCNN是一種RNN。

Analysis

SCNN相比於傳統方法,有三個優勢:

計算效率

  SCNN與傳統的Dense MRF/CRF相比,在資訊傳遞方向不同,示意圖如下所示:

 

  • 圖(a):MRF/CRF中每個畫素點會直接接收其他所有畫素點的資訊(大卷積核實現),這其中有許多冗餘計算。
  • 圖(b):在SCNN中,資訊是順序傳遞的。

  假設張量有H行W列,對於密集的MRF/CRF來講,在每兩個HW畫素之間都存在資訊傳遞,對於niter次迭代,傳遞了niterW2H2次資訊。在SCNN中,每個畫素只接受來自w個畫素的資訊,共傳遞了nderWH次,其中der指代傳遞資訊的方向的數量,w為卷積核寬度。

niter範圍在10到100之間,在本文中ndir設定為4,對應著四個方向。w設定通常不超過10(圖中設定為3)。對於一張有上千行和列的圖片來說,SCNN可大幅度減少計算量,而每個畫素點依舊能夠接收來所有其他畫素傳遞的資訊(4個方向的資訊傳遞)。

將傳遞資訊作殘差

  密集的MRF/CRF內是通過所有加權畫素相加,這樣的計算花費很大。而RNN是通過梯度來優化的, 考慮到這麼多層和列,依據殘差網路的經驗,論文也採用殘差的方式來學習(計算公式描述的殘差學習)。這種殘差可認為是對原始神經元的修正。實驗證明這樣的訊息傳遞比基於LSTM的要好。

靈活性

  歸功於SCNN的計算效率,它可以很方便的整合到CNN的任何部分。通常 top hidden layer 包含了豐富的語義資訊,這是應用SCNN的理想位置。在完整的SCNN模型中我們在頂層的 feature map上用了四個方向的SCNN引入空間資訊傳遞。


Experiment

  論文在自發布的lane detection dataset 和 CityScapes資料集做了評估。 
  採用標準的SGD訓練器,學習率採用”poly”策略,初始學習率為0.01,power為0.9。batchsize設定為12,動量為0.9,權重衰減為0.0001。迭代次數為60K。模型架構在LargeFOV(DeepLabv2)基礎上修改,初始的13層採用的是在ImageNet上預訓練的VGG16層。所有的實驗使用的工作是Torch7.

Lane Detection

  普通的目標識別只要劃分邊界,而車道檢測需要精準的預測曲線,一個自然的想法是模型輸出曲線的概率圖,以畫素級目標來訓練網路,這類似於語義分割任務。我們希望網路能夠直接區分不同車道標記,這樣魯棒性更好。共有4中型別的車道線。輸出的概率圖經過一個小網路預測車道標記是否存在。

  在測試期間,同樣需要從概率圖轉為曲線,模型大致示意如下圖(b)所示:

  對於存在值大於0.5的車道標記,在對應的概率圖每20行搜尋以獲得最高的響應位置,然後通過三次樣條函式連線這些點(cubic splines)。這就是最終的預測。

上圖(a)顯示了baseline和LargeFOV之間的差異:

  • fc7輸出通道為128
  • fc6擴張卷積的擴張率為4
  • 每個ReLU層前加了BN層
  • 添加了一個小型網路用於預測是否存在車道線

 訓練時,輸入和輸出的圖片解析度設定為800×288(約為原圖的二分之一)。目標線的寬度設定為16.考慮背景和車道標記之間的不平衡標籤,背景損失乘以0.4。

評估

  為了判斷車道標記是否正確的檢測到,論文將車道標記視為寬度為30畫素的線,計算ground truth和預測值之間的IoU.如果預測的IoU大於某個閾值,則認為是true positives (TP). 如下圖6所示,這裡設定了0.3和0.5作為閾值,分別對應鬆散和嚴格的評估。

 

然後使用

F−measure = 

最為最終評價指標,其中Precision=TPTP+FP,Recall=TPTP+FN。設定β=1表示調和平均值。

Ablation Study

Effectiveness of multidirectional SCNN

首先探究了SCNN裡資訊傳遞方向的有效性。對比實驗如下表:

  SCNN的核寬度w=5,可以看到隨著方向的增加,效能也逐漸增加。 為了證明效能是來源於多方向,而不是引數的增加,在baseline的基礎上添加了一個額外的5×5的卷積層,可以看到效能只有微弱的提升。

Effects of kernel width w

  論文在SCNN_DURL的基礎上測試了不同核寬度對效能的影響,核寬度表示畫素可以接收其他畫素的資訊數量,結果如下:

  可以看到較大的w表現出的效能較好(計算量也一直上升)

Spatial CNN on different positions

  SCNN可以新增到模型的任何地方,在圖3中,將SCNN_DURL應用於output上或top hidden layer:

  可以看到放置在top hidden layer後效果要出色,這是因為top hidden layer包含更豐富的資訊。

Effectiveness of sequential propagation

  在SCNN中,資訊時連續方式傳遞的,SCNN的一片不會傳遞資訊給下一片,知道它接收到別的片傳來的資訊。與此做對比的時,使用平行策略(parallel),即每個片在更新前將資訊傳遞給一下片,一起更新,結果如下:

  可以看到順序傳遞的優勢較大,這表明在SCNN中,畫素不僅受到鄰近畫素的影響,也受到更遠距離的畫素影響。

Comparison with state-of-the-art methods

論文將SCNN與幾個先進模型對比結果如下:

  • 基於LSTM的Renet:使用兩個ReNet層替換Figure 3中SCNN層
  • DenseCRF:採用了10個平均場迭代
  • MRFNet:使用Figure 3(a),迭代10次,核心大小為20
  • ResNet:基於與DeepLabv2相同,除了不使用ASPP模組

可以看到SCNN的效果很出色~

視覺化結果如下:

  可以看到SCNN要比大型的ResNet101要好,雖然ResNet101引數多,但是在這種具有挑戰性的情況下會產生雜亂或不連續的輸出,SCNN相比能夠保持平滑性。這表明SCNN相比於傳統CNN能夠更好的捕捉強先驗結構的目標。

Computational efficiency over other methods

同時論文給出了與其他模型時間效率上的對比。注意計算時間沒有包括網路主幹。都是在CPU上跑的。

可以看到SCNN比CRF要快很多,這是因為傳遞資訊策略的改變。

Semantic Segmentation on CityScapes

論文同時也在CityScapes上做了測試,使用DeepLabv2的LargeFOV和ResNet101作為baseline,在LargeFOV上新增BN層,對於兩個模型,top hidden layer的通道數改為128.

配置SCNN的是SCNN_DURL在w=9w=9,結果如下:

可以看到配置了SCNN的模型,在牆、杆等類別有著顯著的提升,這是因為SCNN能夠捕捉這些長距離連續物體。

視覺化結果如下:

有一個有意思的地方,汽車的底部在訓練期間是不做標記的,在LargeFOV上是缺失的,因為SCNN的資訊傳遞,被分類成道路。

論文也將SCNN方法與其他方法做了對比,也使用了VGG16為網路主幹,結果如下:

可以看到SCNN效果還是可以的


Conclusion

  論文提出了Spatial CNN,在空間層上實現資訊的有效傳遞。SCNN易於融入到其他深度神經網路中做end-2-end訓練。論文在車道檢測和語義分割上測試了SCNN,結果表現SCNN可以有效的保持長距離連續結構,在語義分割其擴散效應對識別大型物體有利。

  此外,論文提出了一個車道檢測的資料集,希望能夠推動自動駕駛進一步發展。

 

轉自:https://www.cnblogs.com/guoyaohua/p/8940871.html?utm_source=tuicool&utm_medium=referral