卷積神經(jīng)網(wǎng)絡(luò)(CNN)在無(wú)人駕駛中應(yīng)用的3D感知與物體檢測(cè)
無(wú)人駕駛的感知部分作為計(jì)算機(jī)視覺的領(lǐng)域范圍,也不可避免地成為CNN發(fā)揮作用的舞臺(tái)。本文是無(wú)人駕駛技術(shù)系列的第八篇,深入介紹CNN(卷積神經(jīng)網(wǎng)絡(luò))在無(wú)人駕駛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來(lái)構(gòu)建新的模型。無(wú)人駕駛的感知部分作為計(jì)算機(jī)視覺的領(lǐng)域范圍,也不可避免地成為CNN發(fā)揮作用的舞臺(tái)。
無(wú)人駕駛雙目3D感知在無(wú)人車感知中,對(duì)周圍環(huán)境的3D建模是重中之重。激光雷達(dá)能提供高精度的3D點(diǎn)云,但密集的3D信息就需要攝像頭的幫助了。人類用兩只眼睛獲得立體的視覺感受,同樣的道理能讓雙目攝像頭提供3D信息。假設(shè)兩個(gè)攝像頭間距為B,空間中一點(diǎn)P到兩個(gè)攝像頭所成圖像上的偏移(disparity)為d,攝像頭的焦距為f,那么我們可以計(jì)算P點(diǎn)到攝像頭的距離為:
所以為了感知3D環(huán)境得到z,需要通過雙目攝像頭的兩張圖像I_l和I_r得到d,通常的做法都是基于局部的圖片匹配:
由于單個(gè)像素的值可能不穩(wěn)定,所以需要利用周圍的像素和平滑性假設(shè)d(x,y)≈d(x+α,y+β)(假設(shè)α和β都較?。?,所以求解d變成了一個(gè)最小化問題:
這和opTIcal flow任務(wù)想要解決的是非常類似的問題,不過是(Il,Ir)變成了(It ,It+1),所以下面將要介紹的算法,兩者都適用。
MC-CNN現(xiàn)在來(lái)看看Matching-Cost CNN算法,這個(gè)算法使用了一個(gè)CNN來(lái)計(jì)算上式的右側(cè)matchingcost,MC-CNN的網(wǎng)絡(luò)結(jié)構(gòu)見圖1。
圖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算法接下來(lái)做了如下后期處理:
Cross-based cost aggregation:基本思想是對(duì)鄰近的像素值相似的點(diǎn)的偏移求平均,提高估計(jì)的穩(wěn)定性和精度。
Semi-global matching:基本思想是鄰近的點(diǎn)的平移應(yīng)該相似,加入平滑約束并求偏移的最優(yōu)值。
插值和圖片邊界修正:提高精度,填補(bǔ)空白。
最終算法效果如下:
圖2 MC-CNN的算法效果
MC-CNN雖然使用了CNN,但僅限于計(jì)算匹配程度,后期的平滑約束和優(yōu)化都是必不可少的,那有沒有可能使用CNN一步到位呢?FlowNet就是這樣做的。