<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          PatchmatchNet:一種高效multi-view stereo框架 (CVPR2021 Oral)

          共 6728字,需瀏覽 14分鐘

           ·

          2021-05-15 21:40

          ↑ 點擊藍字 關注極市平臺

          作者丨王方錦華@知乎
          來源丨h(huán)ttps://zhuanlan.zhihu.com/p/354439127
          編輯丨極市平臺
          本文僅供學術參考,如有侵權請聯系做刪文處理。

          極市導讀

           

          本文介紹了一篇被CVPR2021收錄的工作,該項工作結合了傳統(tǒng)的PatchMatch算法以及深度學習的優(yōu)點,提出了PatchmatchNet。在DTU、Tanks & Temples和ETH3D Benchmark上,其表現出了十分competitive的performance。 

          給大家介紹一下我們之前關于multi-view stereo的工作。我們結合傳統(tǒng)PatchMatch算法以及深度學習的優(yōu)點,提出了PatchmatchNet。PatchmatchNet在DTU、Tanks & Temples和ETH3D上都取得了不錯的表現,并且相比于SOTA方法大幅度地提升了效率。

          Figure 1: 在DTU數據集上和state-of-the-art的比較

          代碼已開源,具體鏈接如下:

          PatchmatchNet: Learned Multi-View Patchmatch Stereo

          https://arxiv.org/abs/2012.01411

          FangjinhuaWang/PatchmatchNet

          https://github.com/FangjinhuaWang/PatchmatchNet

          1.背景

          當給定一些圖像以及對應的相機參數(包括內參和外參)時,multi-view stereo (MVS)主要用來把場景以點云或mesh的方式進行重建。在傳統(tǒng)方法中,許多方法(譬如COLMAP、Gipuma、ACMM等)基于PatchMatch算法進行深度圖的估計。PatchMatch算法主要包括三個步驟:

          • Initialization:每個像素隨機初始化深度值;
          • Propagation:把每個像素的depth hypothesis傳播到周圍像素;
          • Evaluation:對每個像素,從所有的hypotheses中選取cost最小的作為估計值。

          在Initialization以后,PatchMatch在Propagation和Evaluation之間循環(huán),直至結果收斂。PatchMatch利用了深度圖的空間相關性,通過隨機初始化和傳播過程避免了對所有可能的深度值進行驗證,所以對memory要求比較低。

          而目前,基于深度學習的方法在各個MVS benchmark上面有了很好的表現。MVSNet是一個十分具有代表性的方法,它在預先給定的深度范圍內采樣D個depth hypotheses,然后基于plane-sweeping stereo和differential warping構建cost volume,使用3D U-Net進行regularization得到probability volume,最后使用soft argmin(求期望)得到深度的估計。在后續(xù)的諸多工作中,由于3D convolution十分昂貴,一些方法(R-MVSNet、D2HC-RMVSNet等)通過使用RNN對cost volume進行sequentially regularization,對顯存進行了很好的限制,但是增加了運行時間。另一些方法(CasMVSNet、UCS-Net、CVP-MVSNet等)使用cascade cost volume進行coarse-to-fine的估計,顯存和時間都大幅縮減,并且有更好的表現。

          2.PatchmatchNet

          具體而言,PatchmatchNet是一種以learning-based Patchmatch為主體的cascade結構,主要包括基于FPN的多尺度特征提取、嵌入在cascade結構中的learning-based Patchmatch以及spatial refinement模塊(用來上采樣至原圖大?。?。

          Figure 2: PatchmatchNet的結構

          3.Learning-based Patchmatch

          我們基于傳統(tǒng)的PatchMatch進行修改和拓展,提出了adaptive版本的Patchmatch(仍然包括Initialization、Propagation和Evaluation三個部分)。需要注意的是,不同于傳統(tǒng)的PatchMatch方法使用傾斜平面(hypothesis包括depth以及normal),我們出于計算量的考慮,還是像MVSNet那樣使用fronto-parallel平面(平面和圖像平面平行,hypothesis只包括depth)。使用傾斜平面的話,為確定normal,需要對每個像素所在的鄰域進行warping,所以計算比較昂貴。具體結構見下圖:

          Figure 3: Learning-based Patchmatch的結構

          整個流程具體如下:

          1. initialization:在第一個iteration(stage 3的第一個),隨機初始化  個sample(為保證sample盡可能分布到整個depth range,將depth range劃分為多個區(qū)間,在每個區(qū)間隨機采樣);
          2. local perturbation:在第一個iteration以后,以前一個iteration得到的估計值為中心,在一個小鄰域內采樣(local refinement);
          3. adaptive propagation:基于特征,對每個像素,將adaptively sampled neighbors的depth hypothesis傳遞過來;
          4. differentiable warping:在得到所有depth hypotheses后(前三個步驟),進行differentiable warping,將source features warp到reference view;
          5. matching cost computation:對每個像素和每個depth hypothesis,進行matching cost的計算,使用Pixel-wise view weight(在第一個iteration估計得到,因為第一個iteration的samples能比較好的分布在整個depth range)對所有source views的costs進行aggregation【需要注意的是,在這個步驟,我們只使用了  的卷積,而沒有使用大部分方法的3D U-Net,原因有兩方面:一是coarse-to-fine結構以及adaptive propagation使得不同像素的hypotheses都不相同,cost volume不規(guī)則;二是為了提升效率,具體可參見supplementary】;
          6. adaptive spatial cost aggregation:對每個像素和每個depth hypothesis,自適應采樣一些鄰域內的像素進行cost aggregation;
          7. depth regression:得到所有costs以后,用softmax得到每個hypothesis對應的概率,然后求期望得到估計值。

          3.1 Adaptive Propagation

          大部分傳統(tǒng)方法(譬如Gipuma)使用固定的pattern選取neighbors,進行propagation。但是,深度圖的空間一致性往往只對一個表面上的像素成立(周圍的neighbors有相似的深度值)。所以,我們希望在采樣neighbors的過程中,只采樣和當前像素在同一表面上的neighbors,這樣的話可以加快算法的收斂速度,提升精度。具體效果如下:

          Figure 4: adaptive propagation原理 (a) RGB (b) static pattern (c) adaptive pattern

          對于邊緣的點(黃色),所有的采樣點盡可能分布在邊界內部。對于untextured area上的點(紅色),采樣點分布的比較分散,因為untextured area上的估計往往有比較大的ambiguity,比較分散的采樣可以降低ambiguity。

          具體實現的話,受Deformable Convolution Networks啟發(fā),我們構建了一層2D CNN layer,以reference feature為輸入,直接輸出每個像素  個neighbors的additional 2D offset,得到hypothesis集合 

          其中,  是固定的offset(3x3,棋盤狀的pattern),  是additional 2D offsets。

          實驗結果如下:

          Figure 5: adaptive propagation實驗結果

          3.2 Adaptive Spatial Cost Aggregation

          在matching cost computation 步驟,我們只使用了  卷積,沒有聚合鄰域信息。而大部分傳統(tǒng)方法都會在一個spatial window里進行cost aggregation以增強匹配的魯棒性,所以我們提出了adaptive spatial aggregation strategy。與adaptive propagation類似,我們用2D CNN學習得到每個像素  的additional 2D offset  。然后,我們使用feature weight(  )和depth weight(  )來分配第k個neighbor的貢獻權重,計算weighted sum得到cost:

          adaptive sampling的實驗結果如下:

          FIgure 6: adaptive spatial cost aggregation實驗結果

          4.實驗

          和大部分方法一樣,我們在DTU訓練數據集上訓練模型。然后,我們在DTU測試數據集、Tanks & Temples和ETH3D Benchmark上進行測試。

          4.1 DTU

          Table 1: DTU數據集上的測試結果(指標越小越好)

          可以看到,在所有方法中,Gipuma的accuracy最高,PatchmatchNet的completeness最高,并且具有不錯的overall quality(accuracy和completeness的平均)。

          我們還通過可視化進行了qualitative comparison,如下圖所示??梢园l(fā)現,PatchmatchNet的點云更加稠密,門、窗等細節(jié)都重建的比較好,這體現了方法較高的completeness。與此同時,對于屋頂上的一些細節(jié)(譬如邊緣、尖頂等),PatchmatchNet的重建效果比CasMVSNet更好。一般而言,cascade結構都存在finer level無法完全修正coarse level誤差的局限性。而我們提出的adaptive propagation可以使用鄰域像素的信息(譬如邊界內像素的depth),幫助當前像素跳出local optima,從而使估計更精確。

          FIgure 7: DTU scan 9的重建效果比較

          4.2 顯存和時間比較

          我們和當前的state-of-the-art:CasMVSNet、UCS-Net、CVP-MVSNet進行了比較,具體如圖8所示。可以看到,PatchmatchNet的顯存消耗和運行時間相比于其他方法有大幅度的減小。譬如在輸入圖像為  時,顯存消耗和運行時間比CasMVSNet減少67.1%和66.9%,比UCS-Net減少55.8%和63.9%,比CVP-MVSNet減少68.5%和83.4%。

          Figure 8: 在DTU上memory和run-time的比較結果

          4.3 Tanks & Temples

          在Tanks & Temples上,我們直接使用了在DTU上訓練得到的模型(沒有fine-tuning)。在intermediate數據集上,PatchmatchNet的表現較好。在advanced數據集上,PatchmatchNet表現最好。

          Table 2: Tanks &amp;amp; Temples數據集上的測試結果(F-score,越大越好)

          4.4 ETH3D Benchmark

          同樣,在ETH3D Benchmark上,我們直接使用了在DTU上訓練得到的模型(沒有fine-tuning)。在Training數據集上,PatchmatchNet的表現接近于COLMAP。在Test數據集上,PatchmatchNet表現最好。與此同時,PatchmatchNet是目前在ETH3D Benchmark上運行時間最短的方法。

          Table 3: ETH3D Benchmark數據集上的測試結果(F1 score,越大越好)

          5. 小結

          在這個工作中,我們提出了PatchmatchNet,一種以learning-based Patchmatch為主體的cascade結構。我們對傳統(tǒng)的PatchMatch進行了拓展,提出了adaptive propagation和adaptive evaluation。在DTU、Tanks & Temples和ETH3D Benchmark上,PatchmatchNet表現出了十分competitive的performance。與此同時,相比于大部分state-of-the-art,PatchmatchNet在顯存消耗和運行時間上十分高效。


          本文亮點總結


          1.PatchMatch算法主要包括三個步驟:
          • Initialization:每個像素隨機初始化深度值;
          • Propagation:把每個像素的depth hypothesis傳播到周圍像素;
          • Evaluation:對每個像素,從所有的hypotheses中選取cost最小的作為估計值。

          2.MVSNet是一個十分具有代表性的方法,它在預先給定的深度范圍內采樣D個depth hypotheses,然后基于plane-sweeping stereo和differential warping構建cost volume,使用3D U-Net進行regularization得到probability volume,最后使用soft argmin(求期望)得到深度的估計。

          如果覺得有用,就請分享到朋友圈吧!

          △點擊卡片關注極市平臺,獲取最新CV干貨

          公眾號后臺回復“pytorch”獲取Pytorch 官方書籍英文版電子版


          極市干貨

          YOLO教程:YOLO算法最全綜述:從YOLOv1到YOLOv5YOLO系列(從V1到V5)模型解讀!
          實操教程:PyTorch自定義CUDA算子教程與運行時間分析詳解PyTorch中的ModuleList和Sequential詳細記錄solov2的ncnn實現和優(yōu)化
          算法技巧(trick):深度神經網絡模型訓練中的 tricks(原理與代碼匯總)神經網絡訓練trick總結深度學習調參tricks總結
          最新CV競賽:2021 高通人工智能應用創(chuàng)新大賽CVPR 2021 | Short-video Face Parsing Challenge3D人體目標檢測與行為分析競賽開賽,獎池7萬+,數據集達16671張!


          CV技術社群邀請函 #

          △長按添加極市小助手

          添加極市小助手微信(ID : cvmart2)

          備注:姓名-學校/公司-研究方向-城市(如:小極-北大-目標檢測-深圳)


          即可申請加入極市目標檢測/圖像分割/工業(yè)檢測/人臉/醫(yī)學影像/3D/SLAM/自動駕駛/超分辨率/姿態(tài)估計/ReID/GAN/圖像增強/OCR/視頻理解等技術交流群


          每月大咖直播分享、真實項目需求對接、求職內推、算法競賽、干貨資訊匯總、與 10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺開發(fā)者互動交流~



          覺得有用麻煩給個在看啦~  
          瀏覽 130
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  操逼片 | 青青操视频在线观看无码 | 欧美一区 亚洲一区 | 淫荡视频网站 | cao逼网址 |