基于深度學(xué)習(xí)的多視三維重建

基于深度學(xué)習(xí)的多視三維重建是指,利用神經(jīng)網(wǎng)絡(luò)技術(shù)解決多視立體視覺中的稠密重建問題,即輸入為多視角拍攝的RGB圖像及各個(gè)視角的位姿,輸出為整個(gè)物體或場景的三維點(diǎn)云脂新。傳統(tǒng)的稠密重建方法流程如下,1. 針對每一個(gè)視角做深度估計(jì)粗梭;2. 利用多個(gè)視角的信息對深度進(jìn)行濾波平滑争便;3. 將各個(gè)視角的深度圖融合在一起形成點(diǎn)云。與之對比断医,基于深度學(xué)習(xí)的多視三維重建針對的主要是流程1滞乙,通過深度學(xué)習(xí)的手段來完成單視角的深度估計(jì),其輸入為該視角圖像(reference image)與一系列對應(yīng)參與多視重建的相關(guān)圖像(neighboring/source images)鉴嗤,輸出為該視角的深度圖斩启。這類的網(wǎng)絡(luò)有很多,如MVSNet醉锅,CasMVSNet兔簇,PatchMatchNet等。這里主要記錄一下MVSNet及PatchMatchNet荣挨。

網(wǎng)絡(luò)結(jié)構(gòu)

MVSNet

mvsnet.png

MVSNet與語義分割網(wǎng)絡(luò)有很多類似的地方男韧,其實(shí)深度估計(jì)問題也可以理解為一個(gè)語義分割問題。我們將可能的深度設(shè)定一個(gè)范圍(d_{min}, d_{max})默垄,并將深度按一定方式劃分成n份(一般是按深度的倒數(shù)平均劃分)此虑,對于每個(gè)像素而言,它的深度大致會(huì)有n個(gè)取值口锭,網(wǎng)絡(luò)最終輸出來的是這n個(gè)取值的概率朦前,最后可以計(jì)算出深度的期望值,即為網(wǎng)絡(luò)推理出來的深度鹃操。
d = \sum d_i*P_i
MVSNet主要有幾部分:

  1. 特征提染麓纭:通過常用的一些卷積網(wǎng)絡(luò)配置,將輸入的reference image和source image轉(zhuǎn)化成下采樣的feature map荆隘。

  2. 差異計(jì)算:對于reference image每個(gè)像素恩伺,深度估計(jì)本質(zhì)上是要找到一個(gè)深度,使得它與source image上對應(yīng)的像素在某種維度上差異最小椰拒。

    • 給定一個(gè)深度晶渠,假設(shè)該點(diǎn)的法向法向永遠(yuǎn)垂直于相平面,則可以估計(jì)出一個(gè)homography來計(jì)算對應(yīng)點(diǎn)燃观。這里homo的估計(jì)與傳統(tǒng)PatchMatch方法中的類似褒脯,只是把normal方向替換成垂直于相平面的方向,即這里采用的是fronto-parallel window缆毁,而不是slanted window番川。
    • 利用這個(gè)homo,可以將source image對應(yīng)的feature map轉(zhuǎn)換到reference image的視角,再將其平均之后與reference的feature map對應(yīng)位置相減颁督,得到一個(gè)描述二者差異的一個(gè)volume践啄。
  3. 代價(jià)生成:這一步基本上就是一個(gè)U-Net的配置,作用是把差異的volume轉(zhuǎn)化成深度的概率圖沉御。

  4. 深度優(yōu)化:這一步主要是解決卷積以后邊界丟失的問題往核,通過加入原圖(一般而言邊界比較清晰),與深度圖一起形成一個(gè)4通道的volume嚷节,再經(jīng)過幾次卷積以后得到一個(gè)新的深度概率。Loss將考慮Loss0和Loss1的和虎锚。

PatchMatchNet

patchmatchnet.png

PatchMatchNet基本上是在利用神經(jīng)網(wǎng)絡(luò)模擬傳統(tǒng)的PatchMatch算法硫痰,其網(wǎng)絡(luò)結(jié)構(gòu)大的模塊有以下幾個(gè)部分:

  1. 特征生成:利用常用的encoder-decoder的結(jié)構(gòu)生成特征,不同層對應(yīng)了不同分辨率的特征
  2. PatchMatch:傳統(tǒng)的PatchMatch方法主要有計(jì)算代價(jià)窜护,傳播優(yōu)化效斑,隨機(jī)優(yōu)化等幾步,這里的PatchMatch模塊主要就是模擬這些算法過程
  3. 多分辨率的級聯(lián):與一些常見的分割網(wǎng)絡(luò)一樣柱徙,先在低分辨率上生成結(jié)果缓屠,再以此為基礎(chǔ)生成高分辨率的結(jié)果,而loss將兼顧各個(gè)分辨率
  4. 深度優(yōu)化:與MVSNet類似护侮,優(yōu)化邊界
patchmatch.png

PatchMatch的過程

  • 輸入:每一張image(包括reference和source)都會(huì)生成三個(gè)feature map敌完,大小分別為(W/2, H/2, C), (W/4, H/4, C), (W/8, H/8, C),分別在不同的stage當(dāng)做輸入羊初;初始深度圖滨溉,stage3來源于隨機(jī)初始化,而其他stage來自于上一stage的結(jié)果长赞;

  • 以stage3為例晦攒,介紹整個(gè)過程。

    1. Initialization:初始深度圖為隨機(jī)值得哆,對于每個(gè)像素脯颜,其深度的倒數(shù)在(1/d_{max}, 1/d_{min})之間均勻分布取D_f個(gè)值,得到大小為(W/8, H/8, D_f)的深度圖贩据。

    2. Differentiable warping:對于每個(gè)像素栋操,根據(jù)不同的深度,可以計(jì)算出單應(yīng)變換homo乐设,然后將source image對應(yīng)的feature map變換到reference image的視角讼庇。每一張source image將對應(yīng)得到大小為(W/8, H/8, C, D_f)的warp 特征圖。

    3. Group-wise correlation:對于reference image的一個(gè)像素p近尚,給定一個(gè)深度d_j蠕啄,其特征向量F_0(p, d_j),大小為1\times C. 而對于source image的同樣像素,其特征向量F_i(p,d_j), 1\times C. 然后我們將C分成G個(gè)組歼跟,每個(gè)組中有K個(gè)特征值和媳,保證K*G=C. 分塊求向量內(nèi)積,定義S_k(p, d_j)= \frac{G}{C}\langle F_0(p, d_j)^g, F_i(p, d_j)^g\rangle.經(jīng)過這個(gè)操作以后哈街,對于每張source image我們將得到大小為(W/8, H/8, G, D_f)的特征圖留瞳。

    4. 1\times1\times1 Conv:把分塊那一維給卷積掉,得到大小為(W/8, H/8, D_f)的特征圖骚秦,再附上sigmoid操作她倘,使得特征圖中所有的值變成概率分布P(p,d_j)\in[0,1].

    5. Maxpooling: 再把深度那一維取最大值,得到大小為(W/8, H/8)的weight圖作箍。

    6. Multiplication: 把上述結(jié)果和Group-wise correlation的結(jié)果進(jìn)行pixel對應(yīng)的相乘硬梁,得到新的特征圖大小為(W/8, H/8, G, D_f).

    7. Matching cost computation:直接把所有source image得到的上述結(jié)果加在一起,得到新的特征圖(Aggregated matching cost)大小為(W/8, H/8, G, D_f). 再經(jīng)過1\times 1\times 1 conv去掉分組那一維胞得,得到大小為(W/8, H/8, D_f)的特征圖荧止。結(jié)合上幾步來看,其實(shí)就是將各個(gè)source image得到的group correlation做了一個(gè)加權(quán)平均阶剑。

    8. Adaptive spatial cost aggregation:對于每個(gè)像素而言跃巡,上面的cost都是單個(gè)像素計(jì)算而來的,考慮類似NCC的計(jì)算牧愁,需要引入一個(gè)局部的鄰域來表達(dá)cost素邪。雖然在計(jì)算feature的時(shí)候引入了CNN,相當(dāng)于已經(jīng)有一定的感受野了递宅,這里還是做了一次空間的聚合娘香。具體來說,每個(gè)像素的cost將由鄰域的像素cost加權(quán)平均得到办龄,但是這里的鄰域不是常規(guī)意義下的幾鄰域烘绽,而是在這個(gè)基礎(chǔ)上加了一個(gè)偏移,這個(gè)偏移量是可以通過網(wǎng)絡(luò)學(xué)習(xí)的俐填。這種自適應(yīng)的鄰域選擇安接,主要是為了避免在邊界處深度的大跳躍。下圖顯示了鄰域的自適應(yīng)選擇英融。這一步過后依然是大小為(W/8, H/8, D_f)的特征圖盏檐。

      adaptive.png

    9. Depth regression:以上1-8步對應(yīng)了代價(jià)計(jì)算的過程。第8步輸出的結(jié)果驶悟,對應(yīng)了深度的概率胡野,通過計(jì)算期望,可以得到最終的深度圖痕鳍,大小為(W/8, H/8)硫豆,與下采樣的ground truth比較就形成了其中一個(gè)loss.

    10. Adaptive propagation:傳統(tǒng)的方法中龙巨,傳播的過程是有一個(gè)固定的鄰域像素集合,通過比較這些像素的cost與當(dāng)前像素的cost來決定是否將這些像素對應(yīng)的深度傳播給當(dāng)前像素熊响。而PatchMatchNet拋棄了固定的鄰域選擇旨别,而是采用和步驟8中差不多的思路,先預(yù)定鄰域位置汗茄,假設(shè)有K_p個(gè)鄰域像素秸弛,再通過CNN學(xué)習(xí)出一個(gè)offset. 這里也沒有顯式地比較這些offset后的像素和當(dāng)前像素的cost,而是直接將(W/8, H/8)的深度圖直接擴(kuò)充為(W/4, H/4, K_p)大小的深度圖洪碳,這里還包含了一次上采樣递览。

    11. Local perturbation:和傳統(tǒng)方法一樣,傳播之后為了更好地優(yōu)化深度值瞳腌,會(huì)有一個(gè)隨機(jī)優(yōu)化的過程非迹。以步驟9輸出的深度圖為基礎(chǔ),先上采樣一次纯趋,然后再在一定的深度范圍R_k內(nèi)將深度值隨機(jī)出N_k個(gè)值,這樣深度圖的大小就變成了(W/4, H/4, N_k)冷离。和步驟10得到的傳播結(jié)果放在一起吵冒,最終喂給stage2的深度圖大小即為(W/4, H/4, K_p + N_k).

  • 以步驟11的深度圖,以及大小為(W/4, H/4, C)的特征圖為輸入西剥,循環(huán)2-9步就完成了stage2痹栖,再循環(huán)一次就完成了stage1.

  • 而在stage0時(shí),不再進(jìn)行PatchMatch的計(jì)算瞭空,而是直接采用MVSNet中深度優(yōu)化的操作揪阿,引入原圖的邊界信息,得到新一輪的深度圖咆畏。

  • 最終的loss將每個(gè)stage的loss相加得到南捂。

討論

泛化性

PatchMatchNet的泛化性確實(shí)不錯(cuò),在DTU數(shù)據(jù)上訓(xùn)練的模型在我們自己拍的數(shù)據(jù)上也能得到不錯(cuò)的結(jié)果旧找。主要的原因在于溺健,整個(gè)網(wǎng)絡(luò)設(shè)計(jì)都在模仿傳統(tǒng)的PatchMatch方法,利用深度圖的groundtruth代替了以NCC為代表的score計(jì)算方法钮蛛,神經(jīng)網(wǎng)絡(luò)在各個(gè)模塊中扮演了自適應(yīng)設(shè)定參數(shù)的角色鞭缭,如在傳播的鄰域選擇上等。

性能

論文顯示魏颓,PatchMatchNet在DTU數(shù)據(jù)上有很好的完整性岭辣,但在我們自有的數(shù)據(jù)上,并沒有看到這一點(diǎn)甸饱,相反完整性還略差沦童。這也許和其中的一些參數(shù)設(shè)置或者使用DTU訓(xùn)練結(jié)果有關(guān)系。理論上分析,基于深度學(xué)習(xí)的方法有個(gè)很大的不同是在feature map上去尋找差異搞动,而不是在原圖上躏精,另外通過不同層次的downsample及卷積,差異的定義不再局限于一個(gè)微小的鄰域鹦肿,即它的感受野會(huì)更大矗烛。但是,同時(shí)需要看到的是箩溃,這類方法與傳統(tǒng)方法比較瞭吃,并沒有大的實(shí)質(zhì)性突破,特別是在弱紋理的數(shù)據(jù)上涣旨,這與網(wǎng)絡(luò)設(shè)計(jì)模擬傳統(tǒng)算法流程不無關(guān)系歪架。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市霹陡,隨后出現(xiàn)的幾起案子和蚪,更是在濱河造成了極大的恐慌,老刑警劉巖烹棉,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件攒霹,死亡現(xiàn)場離奇詭異,居然都是意外死亡浆洗,警方通過查閱死者的電腦和手機(jī)催束,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來伏社,“玉大人抠刺,你說我怎么就攤上這事≌” “怎么了速妖?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長聪黎。 經(jīng)常有香客問我买优,道長,這世上最難降的妖魔是什么挺举? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任杀赢,我火速辦了婚禮,結(jié)果婚禮上湘纵,老公的妹妹穿的比我還像新娘脂崔。我一直安慰自己,他們只是感情好梧喷,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布砌左。 她就那樣靜靜地躺著脖咐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪汇歹。 梳的紋絲不亂的頭發(fā)上屁擅,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機(jī)與錄音产弹,去河邊找鬼派歌。 笑死,一個(gè)胖子當(dāng)著我的面吹牛痰哨,可吹牛的內(nèi)容都是我干的胶果。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼斤斧,長吁一口氣:“原來是場噩夢啊……” “哼早抠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起撬讽,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤蕊连,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后游昼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咪奖,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年酱床,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片趟佃。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡扇谣,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出闲昭,到底是詐尸還是另有隱情罐寨,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布序矩,位于F島的核電站鸯绿,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏簸淀。R本人自食惡果不足惜瓶蝴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望租幕。 院中可真熱鬧舷手,春花似錦、人聲如沸劲绪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至歉眷,卻和暖如春牺六,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背汗捡。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工淑际, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人凉唐。 一個(gè)月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓庸追,卻偏偏與公主長得像,于是被迫代替她去往敵國和親台囱。 傳聞我的和親對象是個(gè)殘疾皇子淡溯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容