基于卷积神经网络的匹配代价算法
1、問題分析
? 立體匹配問題,即根據(jù)雙目攝像頭拍攝到的參考圖像和目標(biāo)圖像,確定參考圖像上每個(gè)點(diǎn)在目標(biāo)圖像上對應(yīng)位置的一個(gè)過程。一般展示效果通過輸出視差灰度圖或偽彩色圖像表示實(shí)際物體遠(yuǎn)近程度。直觀上人眼可以直接評判立體匹配效果的好壞,客觀上可以根據(jù)數(shù)據(jù)庫提供的真實(shí)視差圖計(jì)算匹配錯(cuò)誤率,錯(cuò)誤率越低說明模型的準(zhǔn)確度越高。
? 近年來,隨著深度學(xué)習(xí)的發(fā)展,卷積神經(jīng)網(wǎng)絡(luò)在越來越多的計(jì)算機(jī)視覺任務(wù)上大展身手,取得了驚人的進(jìn)步,大幅提高了各項(xiàng)視覺任務(wù)挑戰(zhàn)賽的最高水平。與傳統(tǒng)方法不同,深度學(xué)習(xí)依賴于深層神經(jīng)網(wǎng)絡(luò)對問題進(jìn)行建模,相對于淺層結(jié)構(gòu),深層結(jié)構(gòu)能學(xué)習(xí)到更為復(fù)雜的非線性關(guān)系。同時(shí),卷積神經(jīng)網(wǎng)路直接以圖像為輸入,減少了認(rèn)為設(shè)計(jì)特征的工作量。與此同時(shí),大規(guī)模的訓(xùn)練樣本和高性能訓(xùn)練設(shè)備也顯得尤為重要。
? 研究的該篇論文采用KITTI2012數(shù)據(jù)集訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò),用于訓(xùn)練的圖片只有194對,其中還有一部分需要用于驗(yàn)證模型訓(xùn)練程度和參數(shù),若直接使用原始圖像對作為訓(xùn)練輸入,樣本數(shù)量過少,無法得到較好的效果。因此考慮從原始圖像上截取圖像塊作為網(wǎng)絡(luò)訓(xùn)練樣本,因此接下來所述網(wǎng)絡(luò)本質(zhì)上屬于局部匹配方法。
? 該論文中考慮將問題限定為一個(gè)有監(jiān)督的機(jī)器學(xué)習(xí)問題,其訓(xùn)練過程如圖3.3所示,將數(shù)據(jù)分為訓(xùn)練集和測試集,訓(xùn)練集由訓(xùn)練圖片對和真實(shí)視差獲得,通過不斷地迭代過程使得本文提出的模型收斂,并存儲整個(gè)模型的參數(shù),方便對后續(xù)的圖片進(jìn)行測試和驗(yàn)證。
? 論文中所使用的數(shù)據(jù)集、網(wǎng)絡(luò)結(jié)構(gòu)及訓(xùn)練方法將在后文詳細(xì)介紹。
2、訓(xùn)練數(shù)據(jù)
? 該論文采用的每條訓(xùn)練數(shù)據(jù)由兩個(gè)圖片塊組成,記做<Ps×sR ,Ps×sT>,圖像塊的大小s與網(wǎng)絡(luò)中卷積層的數(shù)量n成線性關(guān)系,具體為:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? s = 2xn+1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (3.14)
? 這樣設(shè)定的目的是即使改變網(wǎng)絡(luò)結(jié)構(gòu),也可以輕松地自動(dòng)生成對應(yīng)的圖像塊。Ps×sR?(p)表示從參考圖像IR?截取的大小為s x s,中心為p的圖像塊,Ps×sT?(q)表示從目標(biāo)圖像IT截取的大小為sxs,中心為q的圖像塊。
? 由于對于訓(xùn)練數(shù)據(jù),p處的真實(shí)視差d已知,我們可以根據(jù)真實(shí)視差分別生成一組正樣本和負(fù)樣本。令q = (xp -d + Oneg,yp),其中Oneg?是負(fù)樣本補(bǔ)償參數(shù),它從中隨機(jī)選取,則<Ps×sR?(p),Ps×sT(q)?>是一個(gè)負(fù)樣本。類似地,令q =?(xp?-d + Opos,yp),其中Opos是正樣本補(bǔ)償參數(shù),它從中隨機(jī)選取,則<Ps×sR?(p),Ps×sT(q)?>是一個(gè)正樣本。同時(shí),記正樣本的輸出標(biāo)注為1,負(fù)樣本的輸出標(biāo)注為0.根據(jù)以上分析,可以認(rèn)為該論文所提出的卷積神經(jīng)網(wǎng)絡(luò)在立體匹配任務(wù)中實(shí)現(xiàn)了計(jì)算匹配代價(jià)的功能。
? 值得注意的是,由于對網(wǎng)絡(luò)輸出結(jié)果還需要進(jìn)行后續(xù)步驟的精煉,網(wǎng)絡(luò)的輸出結(jié)果應(yīng)該與經(jīng)典的局部匹配方法輸出具有相同的形式,即正樣本輸出結(jié)果應(yīng)小于負(fù)樣本輸出結(jié)果。因此在網(wǎng)絡(luò)訓(xùn)練完成后進(jìn)行測試時(shí),網(wǎng)絡(luò)輸出結(jié)果要乘以-1使其符合匹配代價(jià)的形式。
? 本文在訓(xùn)練網(wǎng)絡(luò)時(shí),使用KITTI2012數(shù)據(jù)集進(jìn)行網(wǎng)絡(luò)的訓(xùn)練。KITTI2012數(shù)據(jù)集共含有194組訓(xùn)練圖像對及其真實(shí)視差。為了避免過擬合及參數(shù)調(diào)優(yōu),本文使用1/4的有效點(diǎn)作為驗(yàn)證集。
? 為了使網(wǎng)絡(luò)具有更好的泛化能力,本文使用了縮放、調(diào)整對比對、調(diào)整亮度等手段人為地對圖像塊進(jìn)行了預(yù)處理。
? 上面提到的Nlo,Nhi,Phi?是獨(dú)立于網(wǎng)絡(luò)結(jié)構(gòu)的超參數(shù),一般通過結(jié)合驗(yàn)證集合經(jīng)驗(yàn)法確定。
3、網(wǎng)絡(luò)結(jié)構(gòu)
? ?本文使用的網(wǎng)絡(luò)結(jié)構(gòu)如圖3.4所示。網(wǎng)絡(luò)含有4個(gè)隱含層,且為全卷積結(jié)構(gòu),因此在測試階段可以很方便地使用各種尺寸的輸入圖像進(jìn)行測試。4個(gè)卷積層對應(yīng)的網(wǎng)絡(luò)輸入為1x9x9的圖像塊,第一維為1表示灰度圖像。第一層卷積層(C1)的卷積核尺寸為64x1x3x3,第二到四個(gè)卷積層(C2,C3,C4)均由64x1x3x3的卷積核構(gòu)成。第四個(gè)卷積層(C4)的輸出為左右兩個(gè)64x1的特征列向量,第五層網(wǎng)絡(luò)輸出層為第四層輸出向量內(nèi)積的累加和。除最后一個(gè)卷積層(C4)外,每個(gè)卷積層輸出結(jié)果經(jīng)過一個(gè)ReLU層,最近一些研究證明,ReLU層在訓(xùn)練CNN時(shí)能夠提高收斂速度。
? 由于網(wǎng)絡(luò)第一層64x1x3x3的卷積核,因此本網(wǎng)絡(luò)輸入只能使用灰度圖像,但只要簡單地將第一層卷積核改為64x3x3x3的卷積核,本網(wǎng)絡(luò)即可接受RGB彩色圖像作為輸入。
? 由于該網(wǎng)絡(luò)結(jié)構(gòu)輸出可以作為匹配代價(jià)用戶后續(xù)步驟的處理,故將此卷積神經(jīng)網(wǎng)絡(luò)命名為代價(jià)卷積神經(jīng)網(wǎng)絡(luò)(Cost Convolutional Neural Network,簡稱CCNN).方便后文的理解。
4、網(wǎng)路的訓(xùn)練過程
? 該論文網(wǎng)絡(luò)訓(xùn)練流程圖如圖3.5所示。
? 首先將KITTI2012數(shù)據(jù)集194組訓(xùn)練圖片隨機(jī)打亂,選取其中160組圖像作為訓(xùn)練集,用于訓(xùn)練網(wǎng)絡(luò)參數(shù),剩余34組作為驗(yàn)證數(shù)據(jù)集,用于驗(yàn)證模型參數(shù)。
? KITTI2012數(shù)據(jù)集提供的真實(shí)視差圖為稀疏視差圖,即其中有部分點(diǎn)的真實(shí)視差未知,另外由于攝像頭視野限制,左圖中左側(cè)部分區(qū)域無法匹配右圖中對應(yīng)位置,即無法通過計(jì)算獲得其視差,因此需要對有效訓(xùn)練點(diǎn)進(jìn)行篩選。給定參考圖像中一點(diǎn)p和真實(shí)視差d,篩選條件如下:1)d為0的點(diǎn);2)p在目標(biāo)圖像中對應(yīng)點(diǎn)pd的橫坐標(biāo)小于0.
? 通常訓(xùn)練一個(gè)深度神經(jīng)網(wǎng)絡(luò)需要大規(guī)模的數(shù)據(jù),而當(dāng)訓(xùn)練數(shù)據(jù)不足時(shí),常用的策略是使用ImageNet數(shù)據(jù)集對網(wǎng)絡(luò)參數(shù)進(jìn)行預(yù)訓(xùn)練(Pre-train),使網(wǎng)絡(luò)參數(shù)能有一個(gè)較好的初始值,加快收斂速度。故目前大部分使用深度學(xué)習(xí)完成視覺任務(wù)的項(xiàng)目,常常會(huì)使用ImageNet數(shù)據(jù)集對網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練,再用當(dāng)前任務(wù)的數(shù)據(jù)集對模型參數(shù)進(jìn)行微調(diào)(Finetune)。
?如前2中所述,使用該論文準(zhǔn)備數(shù)據(jù)的方法可以獲得近1500萬個(gè)有效點(diǎn),每個(gè)有效點(diǎn)可以生成一組正樣本和一組負(fù)樣本,共約3000萬組樣本,已經(jīng)足夠用于一般的學(xué)習(xí)任務(wù),故不需要進(jìn)行預(yù)訓(xùn)練步驟。?卷積層的卷積核參數(shù)采用均值為0,方差為0.01的高斯分布隨機(jī)初始化。該論文使用SGD算法更新權(quán)重,mini-batch為128個(gè)樣本,momentum為0.9,前12次迭代時(shí)學(xué)習(xí)率為0.00002,共20次迭代。
5、網(wǎng)絡(luò)測試過程
? ?網(wǎng)絡(luò)測試流程與訓(xùn)練流程略有不同。如前所述,訓(xùn)練時(shí)網(wǎng)絡(luò)輸入為2組9x9的灰度圖像塊,卷積層的填充寬度為0,故經(jīng)過多個(gè)卷積層后輸出1個(gè)實(shí)數(shù),表示兩個(gè)圖像塊的匹配程度。由于網(wǎng)絡(luò)是全卷積結(jié)構(gòu),所以卷積核尺寸都是3x3,根據(jù)下圖所示(3.4)公式,通過將填充寬度設(shè)置為1,可以使得網(wǎng)絡(luò)的輸入輸出的尺寸相同。即輸入?yún)⒖紙D像和目標(biāo)圖像,卷積層C4輸出尺寸與輸入相同,再將向量內(nèi)積改為第二維逐像素列向量的內(nèi)積,可獲得負(fù)匹配代價(jià)-C(p,d)。
? 一般來說,局部匹配算法包含代價(jià)計(jì)算、代價(jià)聚合、視差計(jì)算、后處理四個(gè)步驟,為了簡化實(shí)驗(yàn)步驟,該章實(shí)驗(yàn)并未進(jìn)行代價(jià)聚合,直接用網(wǎng)絡(luò)輸出的視差空間圖進(jìn)行視差計(jì)算并輸出結(jié)果。
? 另外,若以左圖為參考圖像,左圖上一點(diǎn)p在視差d的匹配代價(jià),與以右圖為參考圖像,右圖上點(diǎn)pd在視差d的匹配代價(jià)相同,因此CCNN可以分別獲得以左右圖作為參考圖像的匹配代價(jià),可用于后處理。
?
轉(zhuǎn)載于:https://www.cnblogs.com/ding-jing/p/8693462.html
總結(jié)
以上是生活随笔為你收集整理的基于卷积神经网络的匹配代价算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: gRPC
- 下一篇: pat 甲级1013