基于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
論文提出了一個新穎網(wǎng)絡Spatial CNN,在圖片的行和列上做信息傳遞。可以有效的識別強先驗結構的目標。論文提出了一個大型的車道檢測數(shù)據(jù)集,用于進一步推動自動駕駛發(fā)展。
代碼:
- 官方-torch
Abstract
現(xiàn)今的CNN模型通常是由卷積塊堆疊構建,雖然CNN有強大的特征提取能力,但現(xiàn)存CNN架構沒有足夠充分探索圖像行和列上的空間關系能力。這些關系對于學習強先驗形狀的對象很重要,尤其是外觀(圖像像素)連貫性很弱。例如交通線,車道經(jīng)常會被遮擋,或者壓根就沒在路上畫車道線。如下圖所示:
本文提出了Spatial CNN(CNN),它將傳統(tǒng)的卷積層接層(layer-by-layer)的連接形式的轉(zhuǎn)為feature map中片連片卷積(slice-by-slice)的形式,使得圖中像素行和列之間能夠傳遞信息。這特別適用于檢測長距離連續(xù)形狀的目標或大型目標,有著極強的空間關系但是外觀線索較差的目標,例如交通線,電線桿和墻。論文在車道檢測挑戰(zhàn)和CityScapes上評估了SCNN的表現(xiàn),同時SCNN在TuSimple Benchmark lane Detection challenge獲得了第一名,準確率為96.53%。
Introduction
自動駕駛中最具挑戰(zhàn)的任務之一是交通場景理解,包括計算機視覺任務下的車道檢測和語義分割。車道檢測幫助指導車輛,語義分割提供更多關于周圍環(huán)境目標的細節(jié)位置。但在實際情況下,因為有許多惡劣條件,這些任務可能非常具有挑戰(zhàn)性。對于交通場景理解的另一個挑戰(zhàn)是,在許多情況下需要在有強結構先驗知識下處理外形線索不多的目標,例如交通線,桿狀物等,這些具有長距離連續(xù)的形狀,常常有很大部分被遮擋。
得益于強大的學習表示能力,CNN將視覺理解推向了一個新的高度。但是這依然不能很好地處理外形線索不多的有強結構先驗的目標,而人類可以推斷它們的位置并填充遮擋的部分。
為了解決這個問題,論文提出了SCNN,將深度卷積神經(jīng)網(wǎng)絡推廣到豐富空間層次。
傳統(tǒng)的CNN,任意層接收上層的數(shù)據(jù)作輸入,再作卷積并加激活傳給下一層,這個過程是順序執(zhí)行的。與之類似的是,SCNN將feature map的行或列也看成layer,也使用卷積加非線性激活,從而實現(xiàn)空間上的深度神經(jīng)網(wǎng)絡。這使得空間信息能夠在同層的神經(jīng)元上傳播,增強空間信息進而對于識別結構化對象特別有效。
相關工作:
對于車道檢測任務,大多數(shù)現(xiàn)有的算法都是依賴于低級手工特征,這讓模型難以在惡劣條件下工作。2015年有工作嘗試使用深度學習方案用于車道檢測,但苦于沒有大的廣泛的數(shù)據(jù)集(說這個的原因是論文建立了一個大的數(shù)據(jù)集~)。對于語義分割,基于CNN的方案的已經(jīng)成為主流并取得了巨大的成功。
對于在深度神經(jīng)網(wǎng)絡中使用空間信息:有工作使用RNN按每列和行傳遞信息,但每個像素只能接收同一行或列的信息。也有工作使用LSTM變體探索語義分割的上下文信息,但計算消耗較大。也有工作嘗試結合CNN和圖模型(例如MRF或CRF),通過大卷積核傳遞信息。
與上述方案相比,SCNN有如下幾個優(yōu)勢:
- 消息傳遞比傳統(tǒng)的MRF/CRF更有計算效率
- 消息傳遞使用的是殘差,這更易訓練
- SCNN很靈活,適用于多種深度神經(jīng)網(wǎng)絡
Spatial Convolutional Neural Network
Lane Detection Dataset
本文提出了一個關于交通車道檢測的大規(guī)模數(shù)據(jù)集。以前的車道檢測數(shù)據(jù)集(KITTI,CamVid)要不就是太簡單,要不就是數(shù)據(jù)太小。最近的(Caltech,TuSimple)數(shù)據(jù)集是在交通受限狀態(tài)下建立的,這樣的數(shù)據(jù)車流量少且路標較為清晰。這些數(shù)據(jù)集沒有包括一些車道線模糊,條件惡劣的情況,而這些情況人類可以推斷出來,且這具有很高的實用價值。
論文提出的數(shù)據(jù)集是由六輛車在北京不同時間錄制的,超過55個小時共收集了133,235 張圖片,這超過TuSimple 數(shù)據(jù)集20倍了。論文分成88880張作為訓練集, 9675作為驗證集,34680做測試集。圖像的大小為1640×590。下圖是示例和簡介:
?
數(shù)據(jù)集內(nèi)包括城市、農(nóng)村和高速公路等場景,北京作為世界上最大和最擁擠的城市之一,對應的車道檢測數(shù)據(jù)提供了很多具有挑戰(zhàn)性的交通場景。論文將測試集分為正常和8個具有挑戰(zhàn)性的類別,這對應上圖 (a)的9個示例情況。圖(b)顯示的是挑戰(zhàn)性的場景站數(shù)據(jù)集的比例(共72.3%)。
對于每一張圖片,使用三條線注釋車道,如前面所述,許多情況下車道是被遮擋的或看不見的。而這在實際情況下是很重要的,車道檢測算法需要能夠在這種情況下工作。對此,標注工作根據(jù)上下文也做了標注,如圖(2)(4)所示。對于圖(1)的情況我們不對障礙的另一邊做標注,將精力集中于最受關注的部分。
Spatial CNN
傳統(tǒng)的關于空間關系的建模方法是基于概率圖模型的,例如馬爾科夫隨機場(MRF)或條件隨機場(CRF)。最近有工作將概率圖與CNN相結合,如圖 3(a)所示:
CRF可化為平均場,算法可以用神經(jīng)網(wǎng)絡來實現(xiàn),具體來說,過程分為:
- 標準化:CNN的輸出作為一元勢函數(shù),并通過Softmax操作標準化
- 信息傳遞:可通過大內(nèi)核的逐通道卷積實現(xiàn)(對于DenseCRF,內(nèi)核大小將覆蓋整張圖片,內(nèi)核權重取決于圖片)
- 兼容性轉(zhuǎn)換:使用1×1的卷積實現(xiàn)
- 添加一元勢:整個過程迭代N次得到最終輸出
可以看到傳統(tǒng)方法在傳遞信息時,每個像素點接受來自全圖其他像素的信息,這在計算上是非常昂貴的,難以應用于實時系統(tǒng)。且對于MRF的大卷積核權重很難學。這些方法是應用在CNN的輸出上的,論文認為CNN的隱藏層,包含了豐富的空間關系,可更好的用于處理空間關系。
論文提出了Spatial CNN,這里的Spatial不是指Spatial Convolution,而是CNN通過特征的設計架構傳遞空間信息。SCNN更有效的學習空間關系,能平滑的找出連續(xù)的有強先驗的結構目標。SCNN的整體架構如下:
?
(圖中SCNN的下標有D,U,R,L,這在結構上是類似的,方向上分別表示為向下,向上,向右,向左)
先以SCNN_D分析:
考慮到SCNN應用在三維張量C×H×W上,C,H,W分別代表通道數(shù),長和寬。為了實現(xiàn)空間信息傳遞,將張量切分成H片(slice),先將第一片送到尺寸為C×w的卷積層(w為卷積核的寬度)。傳統(tǒng)的CNN是將這層的輸出傳遞給下一層,而這里是將這片輸出相加到下一片作為新的一片。接著下一片繼續(xù)應用卷積(這里卷積核共享),直到處理完所有片。
具體來講,假設我們有一個三維的張量K,其中Ki,j,k記為最后一片中通道i的元素和當前片中通道j的元素之間的權重,這兩個元素之間偏移為k列。同樣的將Xi,j,k記錄為張量X的元素,其中i,j,k分別指代通道,行,列.?
則SCNN的前向計算為:?
其中f是非線性激活函數(shù)ReLU。X加′′表示更新后的值,注意所有的片共享一組卷積核,SCNN是一種RNN。
Analysis
SCNN相比于傳統(tǒng)方法,有三個優(yōu)勢:
計算效率
SCNN與傳統(tǒng)的Dense MRF/CRF相比,在信息傳遞方向不同,示意圖如下所示:
?
- 圖(a):MRF/CRF中每個像素點會直接接收其他所有像素點的信息(大卷積核實現(xiàn)),這其中有許多冗余計算。
- 圖(b):在SCNN中,信息是順序傳遞的。
假設張量有H行W列,對于密集的MRF/CRF來講,在每兩個HW像素之間都存在信息傳遞,對于niter次迭代,傳遞了niterW2H2次信息。在SCNN中,每個像素只接受來自w個像素的信息,共傳遞了nderWH次,其中der指代傳遞信息的方向的數(shù)量,w為卷積核寬度。
niter范圍在10到100之間,在本文中ndir設置為4,對應著四個方向。w設置通常不超過10(圖中設置為3)。對于一張有上千行和列的圖片來說,SCNN可大幅度減少計算量,而每個像素點依舊能夠接收來所有其他像素傳遞的信息(4個方向的信息傳遞)。
將傳遞信息作殘差
密集的MRF/CRF內(nèi)是通過所有加權像素相加,這樣的計算花費很大。而RNN是通過梯度來優(yōu)化的, 考慮到這么多層和列,依據(jù)殘差網(wǎng)絡的經(jīng)驗,論文也采用殘差的方式來學習(計算公式描述的殘差學習)。這種殘差可認為是對原始神經(jīng)元的修正。實驗證明這樣的消息傳遞比基于LSTM的要好。
靈活性
歸功于SCNN的計算效率,它可以很方便的集成到CNN的任何部分。通常 top hidden layer 包含了豐富的語義信息,這是應用SCNN的理想位置。在完整的SCNN模型中我們在頂層的 feature map上用了四個方向的SCNN引入空間信息傳遞。
Experiment
論文在自發(fā)布的lane detection dataset 和 CityScapes數(shù)據(jù)集做了評估。?
采用標準的SGD訓練器,學習率采用”poly”策略,初始學習率為0.01,power為0.9。batchsize設置為12,動量為0.9,權重衰減為0.0001。迭代次數(shù)為60K。模型架構在LargeFOV(DeepLabv2)基礎上修改,初始的13層采用的是在ImageNet上預訓練的VGG16層。所有的實驗使用的工作是Torch7.
Lane Detection
普通的目標識別只要劃分邊界,而車道檢測需要精準的預測曲線,一個自然的想法是模型輸出曲線的概率圖,以像素級目標來訓練網(wǎng)絡,這類似于語義分割任務。我們希望網(wǎng)絡能夠直接區(qū)分不同車道標記,這樣魯棒性更好。共有4中類型的車道線。輸出的概率圖經(jīng)過一個小網(wǎng)絡預測車道標記是否存在。
在測試期間,同樣需要從概率圖轉(zhuǎn)為曲線,模型大致示意如下圖(b)所示:
對于存在值大于0.5的車道標記,在對應的概率圖每20行搜索以獲得最高的響應位置,然后通過三次樣條函數(shù)連接這些點(cubic splines)。這就是最終的預測。
上圖(a)顯示了baseline和LargeFOV之間的差異:
- fc7輸出通道為128
- fc6擴張卷積的擴張率為4
- 每個ReLU層前加了BN層
- 添加了一個小型網(wǎng)絡用于預測是否存在車道線
訓練時,輸入和輸出的圖片分辨率設置為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表示調(diào)和平均值。
Ablation Study
Effectiveness of multidirectional SCNN
首先探究了SCNN里信息傳遞方向的有效性。對比實驗如下表:
SCNN的核寬度w=5,可以看到隨著方向的增加,性能也逐漸增加。 為了證明性能是來源于多方向,而不是參數(shù)的增加,在baseline的基礎上添加了一個額外的5×5的卷積層,可以看到性能只有微弱的提升。
Effects of kernel width w
論文在SCNN_DURL的基礎上測試了不同核寬度對性能的影響,核寬度表示像素可以接收其他像素的信息數(shù)量,結果如下:
可以看到較大的w表現(xiàn)出的性能較好(計算量也一直上升)
Spatial CNN on different positions
SCNN可以添加到模型的任何地方,在圖3中,將SCNN_DURL應用于output上或top hidden layer:
可以看到放置在top hidden layer后效果要出色,這是因為top hidden layer包含更豐富的信息。
Effectiveness of sequential propagation
在SCNN中,信息時連續(xù)方式傳遞的,SCNN的一片不會傳遞信息給下一片,知道它接收到別的片傳來的信息。與此做對比的時,使用平行策略(parallel),即每個片在更新前將信息傳遞給一下片,一起更新,結果如下:
可以看到順序傳遞的優(yōu)勢較大,這表明在SCNN中,像素不僅受到鄰近像素的影響,也受到更遠距離的像素影響。
Comparison with state-of-the-art methods
論文將SCNN與幾個先進模型對比結果如下:
- 基于LSTM的Renet:使用兩個ReNet層替換Figure 3中SCNN層
- DenseCRF:采用了10個平均場迭代
- MRFNet:使用Figure 3(a),迭代10次,內(nèi)核大小為20
- ResNet:基于與DeepLabv2相同,除了不使用ASPP模塊
可以看到SCNN的效果很出色~
可視化結果如下:
可以看到SCNN要比大型的ResNet101要好,雖然ResNet101參數(shù)多,但是在這種具有挑戰(zhàn)性的情況下會產(chǎn)生雜亂或不連續(xù)的輸出,SCNN相比能夠保持平滑性。這表明SCNN相比于傳統(tǒng)CNN能夠更好的捕捉強先驗結構的目標。
Computational efficiency over other methods
同時論文給出了與其他模型時間效率上的對比。注意計算時間沒有包括網(wǎng)絡主干。都是在CPU上跑的。
可以看到SCNN比CRF要快很多,這是因為傳遞信息策略的改變。
Semantic Segmentation on CityScapes
論文同時也在CityScapes上做了測試,使用DeepLabv2的LargeFOV和ResNet101作為baseline,在LargeFOV上添加BN層,對于兩個模型,top hidden layer的通道數(shù)改為128.
配置SCNN的是SCNN_DURL在w=9w=9,結果如下:
可以看到配置了SCNN的模型,在墻、桿等類別有著顯著的提升,這是因為SCNN能夠捕捉這些長距離連續(xù)物體。
可視化結果如下:
有一個有意思的地方,汽車的底部在訓練期間是不做標記的,在LargeFOV上是缺失的,因為SCNN的信息傳遞,被分類成道路。
論文也將SCNN方法與其他方法做了對比,也使用了VGG16為網(wǎng)絡主干,結果如下:
可以看到SCNN效果還是可以的
Conclusion
論文提出了Spatial CNN,在空間層上實現(xiàn)信息的有效傳遞。SCNN易于融入到其他深度神經(jīng)網(wǎng)絡中做end-2-end訓練。論文在車道檢測和語義分割上測試了SCNN,結果表現(xiàn)SCNN可以有效的保持長距離連續(xù)結構,在語義分割其擴散效應對識別大型物體有利。
此外,論文提出了一個車道檢測的數(shù)據(jù)集,希望能夠推動自動駕駛進一步發(fā)展。
?
轉(zhuǎn)自:https://www.cnblogs.com/guoyaohua/p/8940871.html?utm_source=tuicool&utm_medium=referral
總結
以上是生活随笔為你收集整理的基于Spatial CNN的车道线检测和交通场景理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【机器学习】K-Means算法的原理流程
- 下一篇: 车道线检测参考学习资料