LayoutNet: Reconstructing the 3D Room Layout from a Single RGB Image
本文為原文翻譯,原文地址:https://arxiv.org/abs/1803.08999
Abstract
我們提出了一種算法,可以從一張圖像中預(yù)測房間的布局,該圖像可以將全景圖和透視圖圖像,長方體布局以及更一般的布局(例如“ L”形房間)進(jìn)行概括。 我們的方法直接在全景圖像上運行,而不是像最近的作品一樣分解為透視圖像。 我們的網(wǎng)絡(luò)架構(gòu)類似于RoomNet,但是我們展示了一些改進(jìn),這些改進(jìn)包括基于消失點對圖像進(jìn)行對齊,預(yù)測多個布局元素(角、邊界、大小和平移),以及將一個受約束的曼哈頓布局與結(jié)果預(yù)測進(jìn)行擬合。我們的方法在速度和精度上與現(xiàn)有的其他工作在全景圖上進(jìn)行了比較,在透視圖像上實現(xiàn)了最佳的精度,并可以處理長方體和更一般的曼哈頓的布局。
1. Introduction
通過一個應(yīng)用程序(例如機器人技術(shù)和虛擬/增強現(xiàn)實),從一個圖像估計房間的3D布局是一個重要的目標(biāo)。房間布局指定了相對于攝像機中心的墻壁的位置,方向和高度。布局可以表示為一組投影的角位置或邊界,也可以表示為3D網(wǎng)格?,F(xiàn)有工作適用于該問題的特殊情況,例如根據(jù)透視圖或全景圖預(yù)測長方體形的布局。

我們展示了LayoutNet,這是一種深度卷積神經(jīng)網(wǎng)絡(luò)(CNN),可從單個視角或全景圖像估計室內(nèi)場景的3D布局(圖1)。我們的方法在全景圖的速度和準(zhǔn)確性上具有很好的對比,并且在透視圖圖像中是最好的。我們的方法還可以推廣到非立方體的曼哈頓布局,例如“ L”形的房間。 可以從以下網(wǎng)址獲得代碼:https://github.com/zouchuhang/LayoutNet。

我們的LayoutNet方法分三個步驟運行(圖2)。 首先,我們的系統(tǒng)分析消失點并將圖像與地板對齊(第3.1節(jié))。根據(jù)我們的實驗,這種對齊方式可以確保墻壁邊界為垂直線,并大大減少了誤差。第二步,使用帶有編碼器-解碼器結(jié)構(gòu)和跳過連接的CNN,直接在圖像上預(yù)測拐角(布局交界處)和邊界概率圖(第3.2節(jié))。角和邊界分別提供了房間布局的完整表示。我們發(fā)現(xiàn),在單個網(wǎng)絡(luò)中共同預(yù)測它們會帶來更好的估計。最后,優(yōu)化3D布局參數(shù)以適合預(yù)測的角和邊界(第3.4節(jié))。我們優(yōu)化過程中最終的3D布局損失很難通過網(wǎng)絡(luò)反向傳播,但是在訓(xùn)練過程中3D參數(shù)的直接回歸可以作為有效的替代方法,從而鼓勵進(jìn)行預(yù)測以最大程度地提高最終結(jié)果的準(zhǔn)確性。
我們的貢獻(xiàn)是:
·? 我們提出了一種更通用的RGB圖像到布局算法,該算法適合于具有曼哈頓布局的透視圖和全景圖。 我們的系統(tǒng)在全景圖像的速度和準(zhǔn)確性方面具有很好的對比,并且在透視圖像方面達(dá)到了第二好的水平,同時也是最快的。
·??我們展示了使用預(yù)先計算的消失點提示,幾何約束和后處理優(yōu)化所獲得的收益,表明深層網(wǎng)絡(luò)方法仍然受益于顯式的幾何提示和約束。 我們還表明,將目標(biāo)添加到直接回歸3D布局參數(shù)可以更好地預(yù)測用于求解最終預(yù)測布局的邊界和角。
·? 我們擴展了斯坦福2D-3D數(shù)據(jù)集的注釋,提供了可用于將來工作的房間布局注釋。
2. Related Work
在過去十年中,單視圖房間布局估計一直是研究的一個活躍主題。 Delage等在“曼哈頓世界”假設(shè)下,將水平相機拍攝的透視圖圖像中的地板/墻壁邊界擬合以創(chuàng)建3D模型。曼哈頓世界的假設(shè)是所有墻壁彼此成直角并垂直于地板。 cuboid模型是一種特殊情況,其中四面墻壁,天花板和地板將房間圍起來。 Lee等產(chǎn)生方向圖,基于檢測到的線段生成布局假設(shè),并從其中選擇最適合的布局。 Hedau等通過求解三個消失點,采樣與那些消失點一致的布局,并基于邊緣和幾何上下文的一致性選擇最佳布局,來恢復(fù)長方體布局。隨后的工作遵循類似的方法,改進(jìn)了布局生成,對布局進(jìn)行評分的功能以及合并了對象假設(shè)或其他上下文。最新的方法訓(xùn)練深度網(wǎng)絡(luò)特征以將像素分類為布局表面(墻壁,地板,天花板),邊界,角或是它們的組合。
幾乎所有這些作品都旨在從透視RGB圖像生成長方體形的布局。一些作品還可以處理全景圖像。 張等提出了一種PanoContext數(shù)據(jù)集和方法,可以從360°全景圖像中估算房間的布局(稍后會詳細(xì)介紹)。楊等根據(jù)邊緣提示,Geometrical Context和其他先驗從全景圖中恢復(fù)布局。徐等根據(jù)表面方向估計和對象假設(shè)估計布局。其他工作從多張圖像或RGBD圖像恢復(fù)室內(nèi)布局,其中估計嚴(yán)重依賴于從傳感器或多視圖約束獲得的3D點。Rent3D利用了已知的平面圖。我們的方法通過直接在單個RGB等矩形全景圖上估算布局來簡化重建。我們的最終輸出是稀疏而緊湊的曼哈頓平面布局,該布局由每面墻到相機的距離,高度和布局旋轉(zhuǎn)參數(shù)化。
我們的工作與PanoContext和RoomNet的目標(biāo)最為相似。PanoContext將設(shè)計用于透視圖圖像的框架擴展到全景圖,估計消失點,生成假設(shè)并根據(jù)方向圖,幾何上下文和對象假設(shè)對假設(shè)進(jìn)行評分。為了計算這些特征,PanoContext首先將全景圖像投影到多個重疊的透視圖像中,然后將特征圖組合回全景圖像中。我們的方法更直接:在根據(jù)消失點對齊全景圖像后,我們的系統(tǒng)使用深度網(wǎng)絡(luò)直接在全景圖像上預(yù)測邊界和拐角。在這方面,我們類似于Room-Net,它使用深度網(wǎng)絡(luò)直接預(yù)測透視圖圖像中的布局角,并使用標(biāo)簽指示哪些角是可見的。我們的方法在某些方面與RoomNet不同。我們的方法適用于全景圖像。我們的方法在對齊步驟(RoomNet不執(zhí)行任何操作)以及邊界,角和3D長方體參數(shù)的多任務(wù)預(yù)測方面也有所不同。我們的最終推理僅限于產(chǎn)生曼哈頓3D布局。 RoomNet使用RNN來完善2D角位置預(yù)測,但這些預(yù)測可能與任何3D長方體布局不一致。我們的實驗表明,所有這些差異都可以改善結(jié)果。
更籠統(tǒng)地說,據(jù)我們所知,我們第一次提出了適用于透視圖和全景圖的方法。我們還表明,我們的方法可以輕松地擴展到非立方體的曼哈頓布局。因此,我們的方法可以說是迄今為止從單個RGB圖像進(jìn)行室內(nèi)布局估計的最通用,最有效的方法。
3. Approach
我們首先描述從全景圖預(yù)測長方體布局的方法:對齊(第3.1節(jié)),使用CNN預(yù)測角和邊界(第3.2和3.3節(jié))以及優(yōu)化3D長方體參數(shù)(第3.4節(jié))。然后,我們描述修改以預(yù)測更一般的(非立方體)曼哈頓布局和透視圖圖像(第3.5節(jié))。
3.1 全景圖像對齊
給定輸入為覆蓋360°水平視野的全景圖,我們首先通過估計球形投影下的地板平面方向來對齊圖像,旋轉(zhuǎn)場景,然后將其重新投影為2D等矩投影。 與Zhang等人的方法相似,我們在每個重疊的透視圖中使用線段檢測器(LSD)選擇長線段,然后使用霍夫變換對三個相互正交的消失方向進(jìn)行投票。此預(yù)處理步驟可簡化我們的網(wǎng)絡(luò)訓(xùn)練。檢測到的候選曼哈頓線段還提供了改善性能的額外的輸入特征。
3.2? 網(wǎng)絡(luò)結(jié)構(gòu)
LayoutNet網(wǎng)絡(luò)如圖2所示。該網(wǎng)絡(luò)遵循編碼器-解碼器策略。
深度全景編碼器:輸入是6通道特征圖:使用3.1節(jié)的對齊方法將分辨率為512×1024(透視圖像為512×512)的單個RGB全景圖與位于三個正交消失方向上的曼哈頓線段特征圖拼接在一起。編碼器包含7個卷積層,內(nèi)核大小為3×3。 每個卷積后跟一個ReLU操作和一個下采樣因子為2的最大池化層。第一個卷積包含32個特征,在每次卷積后我們將尺寸加倍。 這種深層結(jié)構(gòu)可確保從高分辨率圖像中更好地學(xué)習(xí)特征,并有助于簡化解碼步驟。我們在每個卷積層之后嘗試了BN,但是觀察到了較低的準(zhǔn)確性。 我們還探索了一種替代結(jié)構(gòu),該結(jié)構(gòu)為輸入圖像和曼哈頓線應(yīng)用了單獨的編碼器,但是與我們當(dāng)前較簡單的設(shè)計相比,性能沒有增加。
2D布局解碼器:解碼器由兩個分支組成,如圖2所示。頂部分支是布局邊界圖(mE)預(yù)測器,以與輸入相同的分辨率將瓶頸特征解碼為2D特征圖。mE是全景圖上的墻-墻、天花板-墻、墻-地板邊界的三通道概率預(yù)測,包括可見邊界和遮擋邊界。 邊界預(yù)測器包含7層最近鄰上采樣操作,每層后面都有一個內(nèi)核大小為3×3的卷積層,特征大小從2048減少了一半。最后一層是Sigmoid操作。我們受U-Net結(jié)構(gòu)的啟發(fā)向每個卷積層添加跳過連接,以防止上采樣步驟的預(yù)測結(jié)果發(fā)生偏移。底部的分支,即2D布局拐角圖(mC)預(yù)測器,遵循與邊界圖預(yù)測器相同的結(jié)構(gòu),另外,還接收來自每個卷積層的頂層分支的跳過連接。這源于直覺,即布局邊界暗示了拐角位置,特別是對于遮擋拐角的情況。我們在實驗中(第4節(jié))表明,聯(lián)合預(yù)測有助于提高兩個圖的準(zhǔn)確性,從而獲得更好的3D重建結(jié)果。我們用全卷積層進(jìn)行了實驗,而不是采用上采樣加卷積結(jié)構(gòu),但是觀察到棋盤偽影,性能較差。
3D布局回歸器:從2D角和邊界到3D布局參數(shù)的映射函數(shù)在數(shù)學(xué)上很簡單,但很難學(xué)習(xí)。 因此,我們?yōu)?D布局參數(shù)訓(xùn)練回歸器,目的是產(chǎn)生更好的拐角和邊界,而不是為了回歸器本身。 如圖2所示,3D回歸器將兩個預(yù)測的2D映射的級聯(lián)作為輸入,并預(yù)測3D布局的參數(shù)。假設(shè)接地平面在x-z軸上對齊,我們使用6個參數(shù)對布局進(jìn)行參數(shù)化:寬度Sw,長度Sl,高度Sh,平移T =(tx,tz)和旋轉(zhuǎn)角r在x-z平面上。 回歸器遵循一個編碼器結(jié)構(gòu),具有7個卷積層,內(nèi)核大小為3x3,每個卷積后跟一個ReLU操作和一個下采樣因子為2的最大池化層。通過輸入4個特征通道的層,卷積特征的大小增加了一倍。接下來的四個全連接層的大小分別為1024、256、64和6,介于ReLU之間。 輸出1x6特征向量d = {Sw,Sl,Sh,tx,tz,r}是我們預(yù)測的3D長方體參數(shù)。 請注意,回歸器輸出三維布局的參數(shù),這些參數(shù)可以被投影回二維圖像,這是一種端到端的預(yù)測方法。我們觀察到3D回歸器不準(zhǔn)確(與表1中的其他結(jié)果相比,PanoContext數(shù)據(jù)集中的拐角誤差為3.36%),但將其包含在損耗目標(biāo)中往往會稍微改善網(wǎng)絡(luò)的預(yù)測。 直連3D回歸器失敗的原因是,2D中的微小位置偏移會在3D形狀中產(chǎn)生很大差異,從而使網(wǎng)絡(luò)難以訓(xùn)練。
損失函數(shù): 網(wǎng)絡(luò)的總損失函數(shù)在等式1中:

損失是mE和mC中預(yù)測像素概率與ground truth的二元交叉熵誤差之和,加上3D長方體參數(shù)d到ground truth d'的歐式距離。p是mE中一個像素的概率,?p是mE中p的ground truth。q是mC中的像素概率,?q是ground truth。 n是mE和mC中的像素數(shù),即圖像分辨率。請注意,RoomNet方法使用L2損失進(jìn)行拐角預(yù)測。我們在第四小節(jié)討論了兩個不同的損失的性能。α,β和τ是每個損失項的權(quán)重。 在我們的實驗中,我們將α=β=1并將τ= 0.01。
3.3? 訓(xùn)練細(xì)節(jié)
我們的LayoutNet預(yù)測拐角和邊界的像素概率,并對3D布局參數(shù)進(jìn)行回歸。我們發(fā)現(xiàn),隨機初始化網(wǎng)絡(luò)的聯(lián)合訓(xùn)練有時無法收斂。因此,我們分別訓(xùn)練每個子網(wǎng)絡(luò),然后一起共同訓(xùn)練它們。 對于2D布局預(yù)測網(wǎng)絡(luò),我們首先訓(xùn)練布局邊界預(yù)測任務(wù)以初始化網(wǎng)絡(luò)的參數(shù)。對于3D布局回歸器,我們首先使用ground truth布局邊界和角作為輸入來訓(xùn)練網(wǎng)絡(luò),然后將其與2D布局解碼器連接,然后端到端訓(xùn)練整個網(wǎng)絡(luò)。
輸入的曼哈頓線圖是3通道0-1張量。我們將每個3D長方體參數(shù)標(biāo)準(zhǔn)化為訓(xùn)練樣本之間的零均值和標(biāo)準(zhǔn)差。我們使用ADAM來更新網(wǎng)絡(luò)參數(shù),其學(xué)習(xí)速率為e-4,α= 0.95和?= e-6。 用于訓(xùn)練2D布局預(yù)測網(wǎng)絡(luò)的批處理大小為5,而對于用于訓(xùn)練3D回歸器的批處理大小更改為20。 整個端到端培訓(xùn)使用的批處理大小為20。
平滑ground truth:我們的目標(biāo)2D邊界和拐角圖是在圖像上具有細(xì)曲線或點的二進(jìn)制圖。 這使訓(xùn)練更加困難。例如,如果網(wǎng)絡(luò)預(yù)測拐角位置稍微偏離ground truth,則將產(chǎn)生巨大的損失。因此,我們放大ground truth邊界和拐角圖4倍,然后使用20×20的高斯核對圖像進(jìn)行平滑處理。請注意,即使經(jīng)過平滑處理,目標(biāo)圖像仍包含約95%的零值,因此我們將背景像素的反向傳播梯度通過乘以0.2重新加權(quán)。
數(shù)據(jù)增強:我們使用水平旋轉(zhuǎn),左右翻轉(zhuǎn)和亮度變化來增強訓(xùn)練樣本。水平旋轉(zhuǎn)范圍是0°-360°。亮度隨γ值在0.5-2之間變化。對于透視圖像,我們在圖像平面上應(yīng)用±10°旋轉(zhuǎn)。

3.4? 3D布局優(yōu)化
初始2D拐角預(yù)測是從我們的網(wǎng)絡(luò)輸出的拐角概率圖獲得的。首先,將響應(yīng)匯總到各行中,以獲得每一列的匯總響應(yīng)。然后,在列響應(yīng)中找到局部最大值,局部最大值之間的距離至少為20個像素。最后,沿著選定的列找到兩個最大的峰。這些2D角可能無法滿足Manhattan的限制,因此我們執(zhí)行優(yōu)化以細(xì)化估計值。
給定預(yù)測的拐角位置,我們可以直接恢復(fù)相機的位置和3D布局,在一個縮放和平移的范圍內(nèi),通過假設(shè)底部的角在同一個地面平面上,而頂部的角直接在底部的角上。我們可以進(jìn)一步將布局形狀限制為曼哈頓,以便相交的墻是垂直的,例如,在俯視圖中像長方體或“ L”形。 對于全景圖像,通過利用全景圖的列對應(yīng)于相機的旋轉(zhuǎn)角度的特性,可以輕松地合并曼哈頓約束。 我們將自頂向下視圖中的布局坐標(biāo)參數(shù)化為2D點Lv = {v1 =(0,0),v2 =(x1,y1),... ,vN =(xN,yN)}。v1解決了翻譯歧義,| v1? v2 | = 1設(shè)置刻度。 因為假定布局為曼哈頓,所以相鄰的頂點將共享一個坐標(biāo)值,這進(jìn)一步減少了自由參數(shù)的數(shù)量。 我們根據(jù)Farin等人的啟發(fā),根據(jù)以下廣義能量最小化來恢復(fù)攝像機位置vc = {xc,yc}和Lv:

其中vi,vj是成對的相鄰頂點,并且βij =

是攝像機vc在vi和vj之間的旋轉(zhuǎn)角度。 我們將αij表示為vi和vj之間圖像上像素方向的水平距離除以全景圖的長度。 請注意,此L2最小化也適用于曼哈頓的一般布局。 我們使用LBFGS 來求解方程解決等式2。
我們將天花板初始化為3D較高角落高度的平均值(均值),然后根據(jù)拐角和邊界信息使用以下得分來評估3D布局候選者L:

其中C表示L的2D投影角位置。L的基數(shù)為#walls×2。我們將圖像上的附近角連接起來,以獲得Le為投影墻-天花板邊界的集合,Lf為投影墻-地板邊界的集合(每個都有#walls基數(shù))? )。? Pcorner(·)表示預(yù)測的mC上的像素方向概率值。 Pceil(·)和Pfloor(·)表示mE的概率。 第二和第三項在每個邊界le∈Le和lf∈Lf中取對數(shù)似然響應(yīng)的最大值。Wjunc,Wceil和Wfloor是術(shù)語權(quán)重,我們使用網(wǎng)格搜索分別將其設(shè)置為1.0、0.5和1.0。這一權(quán)重與墻-地板拐角經(jīng)常被遮擋的觀察結(jié)果一致,預(yù)測的邊界可以幫助改善布局重建。我們發(fā)現(xiàn)在評分函數(shù)中增加墻-墻邊界的幫助較小,因為預(yù)測的垂直角對已經(jīng)揭示了墻體邊界信息。
直接優(yōu)化式 3在計算上是昂貴的,因為我們會對2D投影進(jìn)行懲罰,但不能直接對3D屬性進(jìn)行懲罰。在這種情況下,我們將對候選布局形狀進(jìn)行采樣,并根據(jù)公式3選擇最佳的評分結(jié)果。我們使用行搜索來刪除候選編號,以加快優(yōu)化速度。 算法1演示了該過程。在每個步驟中,我們通過將一個墻的位置移動到相機中心距離的±%10以內(nèi)來采樣候選布局。然后根據(jù)相同的抽樣策略對每個候選人的上限和下限進(jìn)行優(yōu)化,并根據(jù)公式3進(jìn)行評分。一旦我們通過移動其中一個墻找到了得分最高的布局,我們就固定這個墻的位置,移動到下一個墻并再次執(zhí)行抽樣。根據(jù)我們的邊界預(yù)測,我們從最不可靠的那堵墻開始??偣膊蓸恿恕?000個布局候選對象。優(yōu)化步驟花費不到30秒為每個圖像,并產(chǎn)生更好的3D布局,如第4節(jié)所示。
3.5? 擴展
經(jīng)過小的修改,我們的網(wǎng)絡(luò),最初設(shè)計用于從全景圖預(yù)測長方體布局,也可以從全景圖預(yù)測更一般的曼哈頓布局,從透視圖像預(yù)測長方體布局。
一般曼哈頓布局:?為了實現(xiàn)更一般的布局,我們包括了超過四面墻可見的訓(xùn)練示例(例如“L”形房間),這適用于大約10%的示例。然后,我們通過對第六大的墻-墻邊界進(jìn)行閾值化來決定是生成四面墻還是六面墻。具體來說,沿著拐角圖第六大列的平均概率至少為0.05。換句話說,如果有證據(jù)表明有超過四道墻,我們的系統(tǒng)就會產(chǎn)生更多的墻;否則生成4。由于可用的測試集沒有很多超過四面墻的例子,我們在4.2節(jié)和補充材料中展示了我們額外捕獲的樣本的定性結(jié)果。
我們嘗試過預(yù)測凹/凸標(biāo)簽作為拐角圖預(yù)測的一部分以獲得單個解,但是觀察到了退化的2D預(yù)測。 因此,我們列舉了所有可能的形狀(例如 對于具有六面墻的房間,將有六種變化),然后選擇得分最高的一種。 我們發(fā)現(xiàn)這種啟發(fā)式搜索非常有效,因為它在一個小的離散集中進(jìn)行搜索。 對于非立方體布局,我們不使用3D參數(shù)回歸器進(jìn)行訓(xùn)練。
透視圖圖像:在透視圖圖像上進(jìn)行預(yù)測時,我們跳過對齊和優(yōu)化步驟,而是直接在圖像上預(yù)測角和邊界。 我們也不使用3D回歸器分支。 網(wǎng)絡(luò)會預(yù)測一個3通道邊界布局圖,其中包括天花板-墻,墻-墻,和墻-地板的邊界,并且拐角圖中每個可能的拐角都有8個通道。 由于透視圖圖像的視野較小,可見角的數(shù)量也有所變化,因此我們添加了一個小的解碼分支來預(yù)測房間的布局類型,類似于RoomNet。 預(yù)測器具有4個全連接(fc)層,其中包含1024、256、64和11個節(jié)點,中間之間有ReLU操作。 然后,預(yù)測的布局類型將確定檢測到哪些角,并將這些角定位為拐角圖中最可能的位置。 我們使用交叉熵?fù)p失來共同訓(xùn)練布局邊界和拐角預(yù)測器。 為了簡化訓(xùn)練,類似于3.3節(jié)中的過程。我們首先訓(xùn)練邊界/拐角預(yù)測器,然后添加類型預(yù)測器分支并將所有組件一起訓(xùn)練。
4. 實驗
實驗部分不作詳細(xì)介紹,只放圖。



5 結(jié)論
我們提出了LayoutNet,這是一種從單個全景圖或透視圖圖像預(yù)測房間布局的算法。 我們的方法放寬了通常假定的長方體布局限制,并適用于非長方體布局(例如“ L”形空間)。 我們演示了基于消失點和Manhattan約束的預(yù)對齊如何大大改善定量結(jié)果。 我們的方法直接在全景圖像上運行(而不是分解為透視圖圖像),并且是透視圖任務(wù)的最新技術(shù)。 未來的工作包括擴展以處理任意房間布局,合并對象檢測以更好地估計房間形狀以及恢復(fù)從單個圖像恢復(fù)的完整3D室內(nèi)模型。