展會(huì)信息港展會(huì)大全

卷積神經(jīng)網(wǎng)絡(luò)(CNN)在無人駕駛中的應(yīng)用
來源:互聯(lián)網(wǎng)   發(fā)布日期:2016-12-19 10:27:14   瀏覽:23215次  

導(dǎo)讀:無人駕駛的感知部分作為計(jì)算機(jī)視覺的領(lǐng)域范圍,也不可避免地成為CNN發(fā)揮作用的舞臺(tái)。本文是無人駕駛技術(shù)系列的第八篇,深入介紹CNN(卷積神經(jīng)網(wǎng)絡(luò))在無人駕駛3D感知與物體檢測(cè)中的應(yīng)用。 CNN簡(jiǎn)介 卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)是一種...

無人駕駛的感知部分作為計(jì)算機(jī)視覺的領(lǐng)域范圍,也不可避免地成為CNN發(fā)揮作用的舞臺(tái)。本文是無人駕駛技術(shù)系列的第八篇,深入介紹CNN(卷積神經(jīng)網(wǎng)絡(luò))在無人駕駛3D感知與物體檢測(cè)中的應(yīng)用。

CNN簡(jiǎn)介

卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)是一種適合使用在連續(xù)值輸入信號(hào)上的深度神經(jīng)網(wǎng)絡(luò),比如聲音、圖像和視頻。它的歷史可以回溯到1968年,Hubel和Wiesel在動(dòng)物視覺皮層細(xì)胞中發(fā)現(xiàn)的對(duì)輸入圖案的方向選擇性和平移不變性,這個(gè)工作為他們贏得了諾貝爾獎(jiǎng)。時(shí)間推進(jìn)到上世紀(jì)80年代,隨著神經(jīng)網(wǎng)絡(luò)研究的深入,研究人員發(fā)現(xiàn)對(duì)圖片輸入做卷積操作和生物視覺中的神經(jīng)元接受局部receptive field內(nèi)的輸入有相似性,那么在神經(jīng)網(wǎng)絡(luò)中加上卷積操作也就成了自然的事情。當(dāng)前的CNN相比通常的深度神經(jīng)網(wǎng)絡(luò)(DNN),特點(diǎn)主要包括:

一個(gè)高層的神經(jīng)元只接受某些低層神經(jīng)元的輸入,這些低層神經(jīng)元處于二維空間中的一個(gè)鄰域,通常是一個(gè)矩形。這個(gè)特點(diǎn)受到生物神經(jīng)網(wǎng)絡(luò)中receptive field的概念啟發(fā)。

同一層中不同神經(jīng)元的輸入權(quán)重共享,這個(gè)特點(diǎn)可以認(rèn)為是利用了視覺輸入中的平移不變性,不光大幅度減少了CNN模型的參數(shù)數(shù)量,還加快了訓(xùn)練速度。

由于CNN在神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)上針對(duì)視覺輸入本身特點(diǎn)做的特定設(shè)計(jì),所以它是計(jì)算機(jī)視覺領(lǐng)域使用深度神經(jīng)網(wǎng)絡(luò)的不二選擇。在2012年,CNN一舉打破了ImageNet這個(gè)圖像識(shí)別競(jìng)賽的世界紀(jì)錄之后,計(jì)算機(jī)視覺領(lǐng)域發(fā)生了天翻地覆的變化,各種視覺任務(wù)都放棄了傳統(tǒng)方法,啟用了CNN來構(gòu)建新的模型。無人駕駛的感知部分作為計(jì)算機(jī)視覺的領(lǐng)域范圍,也不可避免地成為CNN發(fā)揮作用的舞臺(tái)。

無人駕駛雙目3D感知

在無人車感知中,對(duì)周圍環(huán)境的3D建模是重中之重。激光雷達(dá)能提供高精度的3D點(diǎn)云,但密集的3D信息就需要攝像頭的幫助了。人類用兩只眼睛獲得立體的視覺感受,同樣的道理能讓雙目攝像頭提供3D信息。假設(shè)兩個(gè)攝像頭間距為B,空間中一點(diǎn)P到兩個(gè)攝像頭所成圖像上的偏移(disparity)為d,攝像頭的焦距為f,那么我們可以計(jì)算P點(diǎn)到攝像頭的距離為:

卷積神經(jīng)網(wǎng)絡(luò)(CNN)在無人駕駛中的應(yīng)用

所以為了感知3D環(huán)境得到z,需要通過雙目攝像頭的兩張圖像I_l和I_r得到d,通常的做法都是基于局部的圖片匹配:

卷積神經(jīng)網(wǎng)絡(luò)(CNN)在無人駕駛中的應(yīng)用

由于單個(gè)像素的值可能不穩(wěn)定,所以需要利用周圍的像素和平滑性假設(shè)d(x,y)≈d(x+α,y+β)(假設(shè)α和β都較。,所以求解d變成了一個(gè)最小化問題:

卷積神經(jīng)網(wǎng)絡(luò)(CNN)在無人駕駛中的應(yīng)用

這和optical flow任務(wù)想要解決的是非常類似的問題,不過是(Il,Ir)變成了(It ,It+1),所以下面將要介紹的算法,兩者都適用。

MC-CNN

現(xiàn)在來看看Matching-Cost CNN算法,這個(gè)算法使用了一個(gè)CNN來計(jì)算上式的右側(cè)matchingcost,MC-CNN的網(wǎng)絡(luò)結(jié)構(gòu)見圖1。

卷積神經(jīng)網(wǎng)絡(luò)(CNN)在無人駕駛中的應(yīng)用

圖1 MC-CNN的網(wǎng)絡(luò)結(jié)構(gòu)

這個(gè)網(wǎng)絡(luò)的輸入是兩個(gè)圖片的一小塊,輸出是這兩塊不匹配的概率,相當(dāng)于一個(gè)cost函數(shù),當(dāng)兩者匹配時(shí)為0,不匹配時(shí)最大可能為1。通過對(duì)一個(gè)給定的圖片位置搜索可能的d取值,找到最小的CNN輸出,就得到了這一點(diǎn)局部的偏移估算。MC-CNN算法接下來做了如下后期處理:

Cross-based cost aggregation:基本思想是對(duì)鄰近的像素值相似的點(diǎn)的偏移求平均,提高估計(jì)的穩(wěn)定性和精度。

Semi-global matching:基本思想是鄰近的點(diǎn)的平移應(yīng)該相似,加入平滑約束并求偏移的最優(yōu)值。

插值和圖片邊界修正:提高精度,填補(bǔ)空白。

最終算法效果如下:

卷積神經(jīng)網(wǎng)絡(luò)(CNN)在無人駕駛中的應(yīng)用

圖2 MC-CNN的算法效果

MC-CNN雖然使用了CNN,但僅限于計(jì)算匹配程度,后期的平滑約束和優(yōu)化都是必不可少的,那有沒有可能使用CNN一步到位呢?FlowNet就是這樣做的。

FlowNet

為了實(shí)現(xiàn)端到端的模型結(jié)構(gòu),需要用CNN實(shí)現(xiàn)特征提取,匹配打分和全局優(yōu)化等功能。FlowNet采取了encoder-decoder框架,把一個(gè)CNN分成了收縮和擴(kuò)張兩個(gè)部分。

卷積神經(jīng)網(wǎng)絡(luò)(CNN)在無人駕駛中的應(yīng)用

圖3 encoder-decoder的框架

在收縮部分FlowNet提出了兩種可能的模型結(jié)構(gòu):

FlowNetSimple:把兩幅圖片疊起來輸入到一個(gè)“線性”的CNN中,輸出是每個(gè)像素的偏移量。這個(gè)模型的弱點(diǎn)是計(jì)算量大,而且無法考慮全局的優(yōu)化手段,因?yàn)槊總(gè)像素的輸出是獨(dú)立的。

FlowNetCorr:先對(duì)兩幅圖片分別進(jìn)行特征的提取,然后通過一個(gè)相關(guān)層把兩個(gè)分支合并起來并繼續(xù)下面的卷積層運(yùn)算。這個(gè)相關(guān)層的計(jì)算和卷積層類似,只是沒有了學(xué)習(xí)到的特征權(quán)重,而是由兩個(gè)分支得到的隱層輸出相乘求和。

卷積神經(jīng)網(wǎng)絡(luò)(CNN)在無人駕駛中的應(yīng)用

圖4 FlowNetSimple與FlowNetCorr

FlowNet網(wǎng)絡(luò)收縮部分不僅減少了CNN的計(jì)算量,同時(shí)起到了在圖像平面上聚合信息的作用,這也導(dǎo)致分辨率下降。于是在FlowNet網(wǎng)絡(luò)擴(kuò)張部分使用 “up convolution”來提高分辨率,注意這里不僅使用了上一層的低分辨率輸出,還使用了網(wǎng)絡(luò)收縮部分相同尺度的隱層輸出,如圖5所示。

卷積神經(jīng)網(wǎng)絡(luò)(CNN)在無人駕駛中的應(yīng)用

圖5 FlowNet網(wǎng)絡(luò)擴(kuò)張

FlowNet算法在常見的公開數(shù)據(jù)集上都獲得了不錯(cuò)的效果,值得一提的是它的速度很快。

無人駕駛物體檢測(cè)

物體檢測(cè)技術(shù)是無人駕駛感知必不可少的部分。自從2012年CNN在圖片分類問題上的突破,物體檢測(cè)自然是CNN應(yīng)用的下一個(gè)目標(biāo),CNN的物體檢測(cè)算法層出不窮,我們挑選比較有代表性的幾個(gè)算法做介紹。

Faster R-CNN

CNN在物體識(shí)別領(lǐng)域大行其道之前,通常做法類似于DPM(Deformable Parts Model)這樣的解決方案:在圖像上抽取局部特征的組合作為模板,比如基于圖像的空間梯度的HOG特征;為了能夠處理形變,遮擋等變化,我們建立一個(gè)“彈性”的結(jié)構(gòu),把這些“剛性”的部分組合起來;最后加上一個(gè)分類器判斷物體是否出現(xiàn)。這樣的算法一般復(fù)雜度較高,需要大量經(jīng)驗(yàn),而且改進(jìn)和優(yōu)化難度較大。CNN的到來改變了一切。

R-CNN系列算法是一個(gè)兩段式的算法,它把物體識(shí)別這個(gè)問題分為:

物體可能所在區(qū)域的選擇:輸入一張圖片,由于物體在其中的位置大小有太多可能性,我們需要一個(gè)高效的方法找出它們,這里的重點(diǎn)是在區(qū)域個(gè)數(shù)的一定上限下,盡可能找到所有的物體,關(guān)鍵指標(biāo)是召回率。

候選區(qū)域的識(shí)別:給定了圖片中的一塊矩形區(qū)域,識(shí)別其中的物體并修正區(qū)域大小和長寬比,輸出物體類別和更“緊”的矩形框。這里重點(diǎn)在識(shí)別的精度。

在了解算法的大致架構(gòu)后,來看看算法的具體實(shí)現(xiàn),這里主要描述R-CNN這一系列算法的最新版:Faster R-CNN,它對(duì)應(yīng)上面兩步分為RPN(Region Proposal Network)和Fast R-CNN,接下來分別介紹。

RPN

我們稱物體可能所在區(qū)域?yàn)楹蜻x,RPN(Region Proposal Network)的功能是最高效地產(chǎn)生一個(gè)候選列表。如圖6,RPN選擇以CNN為基礎(chǔ),圖片通過多個(gè)(比如4)卷積層進(jìn)行特征提取,在最后一個(gè)卷積層輸出的特征圖上使用一個(gè)3x3的滾動(dòng)窗口連接到一個(gè)256或者512維的全連接隱層,最后再分支到兩個(gè)全連接層,一個(gè)輸出物體類別,一個(gè)輸出物體的位置大校為了能夠使用不同的物體大小和長寬比,在每一個(gè)位置上考慮三個(gè)尺度(128x128, 256x256, 512x512)和三個(gè)長寬比(1:1, 1:2, 2:1)一共9種組合。這樣一個(gè)1000x600的圖片上考慮了(1000/16) × (600/16) × 9 ≈ 20,000種位置、大小和長寬比的組合,由于使用CNN計(jì)算,這一步耗時(shí)不多。最后根據(jù)空間重疊程度去掉冗余的候選區(qū)域,一張圖片大約獲得2000個(gè)左右的物體可能區(qū)域。

卷積神經(jīng)網(wǎng)絡(luò)(CNN)在無人駕駛中的應(yīng)用

圖6 Region Proposal Network

Fast R-CNN

在候選區(qū)域分類階段,我們使用的是基于全連接的神經(jīng)網(wǎng)絡(luò),如圖7的右側(cè)部分:

而左側(cè)的特征提取部分可以重用RPN中的CNN計(jì)算結(jié)果,大大節(jié)約了計(jì)算時(shí)間,能達(dá)到5-17幀每秒的速度。

卷積神經(jīng)網(wǎng)絡(luò)(CNN)在無人駕駛中的應(yīng)用

圖7 Fast R-CNN

MS-CNN

雖然Faster R-CNN算法大名鼎鼎,但在物體尺度變化很大的場(chǎng)景,比如無人駕駛,它還有提升的空間,Multi-scale CNN(MS-CNN)正是針對(duì)這個(gè)問題的嘗試。CNN的層級(jí)結(jié)構(gòu)由于pooling層的存在自然形成了和不同尺度的一個(gè)對(duì)應(yīng)關(guān)系。那為什么不把對(duì)物體的檢測(cè)放到CNN的不同層里去呢?這正是MS-CNN的想法。

在選擇物體候選區(qū)域階段,MS-CNN使用了圖8的網(wǎng)絡(luò)結(jié)構(gòu),我們看到如果把CNN網(wǎng)絡(luò)里的卷積層看成一個(gè)大樹的“主干”,那么在conv3、conv4和conv5這三個(gè)卷積層之后,這個(gè)網(wǎng)絡(luò)都長出了“分支”,每個(gè)“分支”都連接了一個(gè)檢測(cè)層,負(fù)責(zé)一定的尺度范圍,這樣多個(gè)“分支”一起,就能覆蓋比較寬的物體尺度范圍,達(dá)到我們的目的。

在候選區(qū)域識(shí)別階段,我們讓上一階段多個(gè)檢測(cè)層的輸出特征圖分別輸入到一個(gè)子網(wǎng)絡(luò)里,這里有幾個(gè)值得注意的細(xì)節(jié):

卷積神經(jīng)網(wǎng)絡(luò)(CNN)在無人駕駛中的應(yīng)用

圖8 MS-CNN

第一層是“Deconvolution”,目的是為了提高特征圖的分辨率,保證物體檢測(cè)的準(zhǔn)確率,特別是對(duì)尺度偏小的物體。

Deconvolution之后,在抽取物體特征時(shí)(綠色框),同時(shí)還抽取了物體周邊的信息(藍(lán)色的框),這些“上下文”信息對(duì)識(shí)別準(zhǔn)確率的提高有明顯幫助。

總的來說,MS-CNN和Faster R-CNN相比,優(yōu)勢(shì)是識(shí)別的準(zhǔn)確度有很大提高,尤其在物體尺度變化的情況下,比如KITTI數(shù)據(jù)集里面的行人和自行車。但是Faster R-CNN還是有速度的優(yōu)勢(shì)。

卷積神經(jīng)網(wǎng)絡(luò)(CNN)在無人駕駛中的應(yīng)用

圖9 MS-CNN

SSD

雖然Faster R-CNN的速度比之前的R-CNN已有很大提高,但還達(dá)不到實(shí)時(shí)的要求。Single Shot Detector(SSD)就是一個(gè)能夠?qū)崟r(shí)運(yùn)行,有更佳準(zhǔn)確度的算法,最近人氣很高。SSD沿用了滑動(dòng)窗口的思想,通過離散化物體的位置,大小和長寬比,使用CNN高效計(jì)算了各種可能的物體情況,從而達(dá)到了高速檢測(cè)物體的目的。

卷積神經(jīng)網(wǎng)絡(luò)(CNN)在無人駕駛中的應(yīng)用

圖10 Single Shot Detector

如圖10所示,SSD使用了VGG-16網(wǎng)絡(luò)來做底層的圖片特征提取,通過取消生成候選區(qū)域,縮放圖片縮放和特征圖采樣的步驟,一步到位判斷物體位置和分類,得到了高速的物體檢測(cè)算法。

在VGG網(wǎng)絡(luò)的基礎(chǔ)上,SSD加入了逐步變小的卷積層,這些不同尺度的卷積層分別使用3x3大小的卷積核進(jìn)行物體位置偏移和分類的判斷,使SSD能夠檢測(cè)到不同大小的物體。

結(jié)論

無人駕駛的感知部分作為計(jì)算機(jī)視覺的領(lǐng)域范圍,也不可避免地成為CNN發(fā)揮作用的舞臺(tái)。CNN在無人駕駛中的應(yīng)用主要包括3D感知與物體檢測(cè)。在3D感知中使用到的網(wǎng)絡(luò)包括MC-CNN與FlowNet, 在物體檢測(cè)中使用到的網(wǎng)絡(luò)包括Faster R-CNN、 MSCNN與SSD。本文詳細(xì)介紹了各種網(wǎng)絡(luò)的優(yōu)缺點(diǎn),希望對(duì)各位在選擇網(wǎng)絡(luò)時(shí)有幫助。

作者:吳雙,王江,劉少山

本文為《程序員》原創(chuàng)文章


贊助本站

相關(guān)內(nèi)容
AiLab云推薦
展開

熱門欄目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能實(shí)驗(yàn)室 版權(quán)所有    關(guān)于我們 | 聯(lián)系我們 | 廣告服務(wù) | 公司動(dòng)態(tài) | 免責(zé)聲明 | 隱私條款 | 工作機(jī)會(huì) | 展會(huì)港