孫克強繆 君江瑞祥黃仕中張桂梅
(南昌航空大學計算機視覺研究所,江西 南昌330063)
基于圖像的室內場景三維重建是計算機視覺領域的一個重要研究內容,它在視覺SLAM(Simultaneous Localization And Mapping)、虛擬現實(Virtual Reality)、增強現實(Augmented Reality)等領域具有廣泛的應用。
基于圖像的三維重建一般需要獲得場景深度信息及相機參數,然后利用二者逐像素計算得到的三維點云建立模型。室內場景通常包含大量的平面結構,例如墻壁、天花板等。基于圖像的分段平面重建是常用的方法之一。這類方法除了計算深度信息及相機參數外,還估計場景包含的平面,因此重建精度更高。目前常用方法有布局估計法[1]、曼哈頓假設法[2]及各種體素重建法[3],但單張圖像對應著無數真實物理世界場景,重建的逆推過程存在很多歧義,而且除受光照變化影響外,室內場景還存在紋理缺乏的挑戰。近年來,深度學習算法被快速應用到計算機視覺的各個領域,基于深度卷積神經網絡可以從圖像中學習場景豐富的特征表示,故利用深度神經網絡的單幅圖像室內場景三維重建已有研究[4-5]。這些算法將平面分割和深度估計統一在共同的深度學習框架內,但都存在以下問題:①沒有充分考慮到平面內待重建目標物體的細節,易丟失平面內小物體的信息;②預測的分割圖及深度圖的邊緣效果不佳,影響重建精度。
為了解決上述問題,本文針對室內場景重建提出了一種端到端分段平面重建算法(如圖1)。該算法將平面分割和深度圖預測任務整合到一個深度卷積神經網絡中,對室內場景中的整體結構進行快速高效的推斷和分析,本文的主要技術貢獻包括以下兩個方面:①提出了一種基于深度卷積神經網絡端到端的方式實現室內場景的三維重建算法;②改善了平面內待重建目標物體的細節信息及預測的分割圖及深度圖邊緣效果不佳的問題。

圖1 單圖像室內場景分段平面重建
在室內機器人導航及社交媒體等新興產業有著廣泛應用的場景三維重建是計算機視覺和計算機圖形學重點問題。其中,三維場景中的平面區域為一些類似于場景理解[6]和場景重建[3]等三維感知任務提供了極為重要的幾何線索。
大多數傳統室內場景平面預測和重建方法[7-8]都需要借助多幅圖像的輸入或深度信息。Deng等人[9]近來提出了一種基于學習的方法用來恢復室內場景中的平面結構,但它需要已知深度信息。隨著如基于模板的形狀組合[10-11]、包圍盒[12]或線框[13]形式的目標檢測框架結構在三維理解任務中的廣泛應用,對室內場景中的目標對象進行形狀預測,但只能得到粗糙的目標對象,對具有遮擋和復雜特性的室內場景重建能力具有一定的局限性。
除了利用檢測的框架結構外,聯合優化的分割掩模對于一些需要更精確的平面參數或邊界的三維重建應用來說很有幫助。通過近年來在語義分割方面的研究,發現全連接條件隨機場(Conditional Random Field)在邊界分割及定位方面表現十分奏效[14]。CRF通常只利用低級語義信息,需利用圖形化模型[15]或設計新的神經網絡[16-17]從而進一步利用全局上下文信息。
在規則的人造環境室內場景中存在很多平面結構,利用這些平面區域的空間信息使得三維場景的恢復變得便利。此外,針對室內場景,基于分段平面的重建算法通常可以恢復完整的室內場景結構,這是傳統的像素或空間點級的算法難以企及的。
基于分段平面深度圖的重建曾經是多視圖三維重建領域的一個熱點話題[18]。其主要任務是通過二維圖像推斷出一組平面參數,同時再為各像素標定平面序號。目前,現有的大多數的方法都是先重建出精確的三維點,再通過擬合后的平面生成平面假設,然后再通過求解一個全局推理問題將分段平面的深度圖重建出來。基于多視圖的三維重建須從不同角度采集場景多幅圖像,但現實生活中拍攝的照片單幅居多。本文提出的端到端的三維重建方法以單幅RGB圖像為輸入,直接推斷平面參數、分割圖及深度圖,進而重建出室內三維場景。
在2006年,Saxena等人[19]通過提出的基于學習的方法,直接從單幅RGB圖像中推斷出深度圖。隨著深度神經網絡的研究和發展,許多基于卷積神經網絡(Convolutional Neural Network,CNN)的方法被一一提了出來[20-21]。但大多數的技術方法只是通過單幅RGB圖像生成了深度圖(僅有一組深度值)并沒有進行平面分割掩膜處理或平面檢測;在2016年,Wang等人[22]利用提出的方法通過推測出處于平面上的像素來進一步進行深度和表面法線預測。但該方法僅能判斷出像素是處于平面還是非平面上,未能對平面進行分割處理和平面參數估計,這導致該方法的重建缺乏時效性和高可靠性。最近,Zhou等人提出的PlaneRecover[4]和Liu等人提出的PlaneNet[5]均是將單圖像三維重建看作是平面分割任務,這與我們的工作很接近。但本文進一步考慮了平面內待重建目標物體的細節和易丟失平面內小物體的情況,并對邊緣像素進行了監督,使得重建精度更高。
本文算法的目標是通過CNN預測直接從單幅RGB圖像中得到室內場景的深度圖、分割圖及平面參數,然后將平面深度圖與相機標定獲取的相機參數相結合,得到逐像素的三維點云深度信息(3D點坐標),并通過平面擬合恢復各平面結構。這就使得本文算法必須要滿足兩個條件:①能夠準確地檢測出場景中的平面;②在獲得室內場景各平面深度圖的同時,還要能夠對室內場景中的平面進行平面參數的估計及分割掩膜處理。本文使用包含語義標簽和深度信息的數據集訓練一個深度神經網絡,以此得到平面參數、分割圖及深度圖。
如圖2所示,本文設計的深度神經網絡整體上包含兩個分支。一個分支整合了分割圖和深度圖的預測任務,另一分支進行平面參數的預測任務。首先,輸入單幅RGB圖像,經過RESNet-101處理后得到輸入圖像的特征圖(Feature Map);接著經過全局平均池化(Global Average Pooling)和雙線性插值(Bilinear Iterpolation)對特征圖分別進行下采樣和上采樣操作;最后,再經過條件隨機場對分割圖進行優化。前一分支輸出分割圖及深度圖,后一分支輸出平面參數。其中,平面參數包括平面法向信息和偏移量。通過本文預測得到的平面參數、深度圖及分割圖,即可確定室內場景中的各平面結構及三維空間范圍。最終,利用逐像素的三維點云深度信息,并通過擬合平面恢復各平面結構,實現分段平面的三維重建。

圖2 算法流程
本文提出的神經網絡結構建立在深度殘差網絡(Deep Residual Networks,DRN)[23](如圖4)上,包含三個主要部分:特征提取網絡,分割細化網絡以及平面參數網絡。
為了預測空間點的數值,我們采用小卷積核進行卷積。但固定的感受野不利于檢測復雜場景中大小不同的物體。相比于核尺寸相同的卷積,空洞卷積可以在不增加計算量和參數量的情況下增加卷積核的感受野。感受野RF、卷積核尺寸C及空洞率V之間的關系為:

當V=1時,即為普通卷積。空洞率V越大,可使卷積核獲取更大感受野、采樣更大范圍。

圖3 部分特征圖結果示例
特征提取網絡:特征提取網絡利用加入空洞卷積的ResNet-101網絡,提取全局特征(如顏色、紋理特征等)與局部特征(如邊緣、角點等),輸出高分辨率的特征圖。以如圖3(a)所示的輸入圖像為例,本文將DRN作為基礎網絡提取全局特征,將網絡對輸入圖像采用卷積等操作進行特征提取,得到不同分辨率的特征圖。這些特征圖分別為輸入圖像的1/2,1/4,1/8,即128×96,64×48,32×24。部分特征圖結果如圖3(b)所示。局部特征提取將PSPNet[17]作為基礎網絡,并利用改進后的PSPNET(Refine PSPNet,如圖5所示)對DRN網絡產生的不同分辨率的特征圖進行處理。為了保留特征圖中大量的有效信息及減少計算量等因素,本文利用全局平均池化對特征圖進行處理,結果如圖3(c)所示。首先將網絡產生的分辨率為32×24的特征圖經過金字塔池化及1×1卷積操作后,將產生的分辨率均為32×24的四層特征圖進行雙線性插值操作,并且與DRN網絡產生的相同分辨率的特征圖進行拼接;接著,將通過3×3卷積和雙線性插值上采樣產生的分辨率為64×48的特征圖與DRN網絡產生的相同分辨率的特征圖進行拼接;然后,再通過3×3卷積和雙線性插值將產生的分辨率為128×96的特征圖與DRN網絡產生的相同分辨率的特征圖進行拼接;最后,為了將特征圖恢復到輸入圖像大小,本文通過雙線性插值[24]對特征圖進行處理,圖3(d)顯示了部分實驗結果。
分割細化網絡:分割細化網絡包括分割圖分支和深度圖分支。該網絡利用Refine PSPNet,首先將DRN輸出的不同分辨率的特征圖進行平均池化、卷積、拼接等操作;接著將拼接后的特征圖進行雙線性插值,生成分辨率為256×192的分割圖;最后,在分割圖預測分支加入用于圖像像素分類的概率圖模型-條件隨機場對分割圖進行分割優化。

圖4 網絡結構圖
為了控制深層網絡結構的參數量和計算量,本文將深度圖預測分支與分割圖分支整合在同一個金字塔池化模塊下。由于在人工環境中,平面與非平面類分布不均衡,故本文通過交叉熵損失函數用于監督分割圖的訓練過程。


圖5 改進后的PSPNet(Refine PSPNet)
對于深度圖預測分支,首先通過Refine PSPNet將生成的多尺度特征圖經過雙線性插值及與本文設計的網絡產生的各分辨率特征圖進行拼接等操作,最終生成分辨率為256×192的深度圖。本文利用真實的深度圖與預測的深度圖間的差值平方和作為深度圖的監督訓練損失:

平面參數網絡:平面參數網絡將利用Refine PSPNet,將拼接后的分辨率為32×24的特征圖經過平均池化得到1×1的特征圖,再經過全連接層,得到平面參數。本文首先將設計的網絡產生分辨率為32×24的特征圖經過金字塔池化處理,再經過1×1卷積操作將產生的分辨率均為32×24的四層特征圖進行上采樣操作,并且與DRN網絡產生的分辨率同樣為32×24的特征圖進行拼接;然后將通過平均池化操作產生的特征圖通過1024個通道的全連接層處理,產生平面參數。
由于在預測平面參數任務過程中,平面的回歸順序不可知,故本文利用倒角距離作為平面參數回歸的度量指標,定義了無序損失函數對平面參數進行監督訓練。

通過利用上述各分支損失函數監督訓練得到輸入圖像場景中的分割掩模圖、深度圖及平面參數,通過訓練總損失:

完成本文提出的深度神經網絡各分支監督訓練。其中,Ls為分割掩模損失;Ld為深度損失;Lc為平面參數損失。
為了防止在訓練時出現過擬合問題,在網絡中使用Dropout方法,使全連接層的神經元以一定的概率失活并不再參與前向和反向傳播,隨機忽略部分學習參數。
本文使用目前具有代表性的大規模室內場景數據集—ScanNet[25],這是一個大型室內RGB-D視頻數據集,包含了1513個場景的250萬個視圖,并標注了3D相機的姿態、表面重建和語義分割。ScanNet包含各種室內場景,例如辦公室,公寓和浴室等。數據集既包含了一些如浴室、雜物間等小的空間集合又涵蓋了一些如教室、圖書館等大的空間集合。由于計算機內存和顯存等因素的限制,我們只從數據集中選取共51000張圖片用于實驗研究。其中,訓練集有50000張圖片,測試集有1000張圖片。另外,選用NYU Depth Dataset V2[8](NYUV2)數據集對本文預測的深度結果做定量分析。部分數據集示例如圖6所示。

圖6 數據集示例
對于單目圖像深度圖的預測,我們采用以下幾種定量的評價指標進行計算:①相對誤差(Relative Error,Rel);②平方相對誤差(Square Relative Error,Rel(sqr));③均方根誤差(Root Mean Squared Error,RMSE);④對數均方根誤差(Logarithmic Root Mean Square Error,RMSE(log));⑤對數平均誤差(Logarithmi Mean Error,log10);⑥閾值誤差(Correct,δ(%))。通常,誤差值越小且精度值越高,預測的深度圖質量越好。
其評價指標計算公式如下:
①相對誤差(Relative Error,Rel),其公式為:

②平方相對誤差(Square Relative Error,Rel(sqr)),其公式為:

③均方根誤差(Root Mean Square Error,RMSE),其公式為:

④對數均方根誤差(Logarithmic Root Mean Square Error,RMSE(log)),其公式為:

⑤對數平均誤差(Logarithmi Mean Error,log10),其公式為:

⑥閾值誤差(%,Correct)δ,其公式為:

式中:N為像素總個數,Di為第i個像素的預測深度值,為第i個像素所對應的真實深度值,τ為設置的閾值,通常所設定的閾值為:1.25、1.252、1.253。
我們基于ResNet-101網絡結構,通過使用TensorFlow[26]的框架實現了本文的算法。本文利用ScanNet訓練集進行訓練,共迭代500000次,使用Adam優化器[27]進行參數優化,初始的學習率(Learning Rate)定為0.0003。我們在平面分割結果、深度預測精度和重建結果方面將本文算法和其他方法進行了比較。
為了評估本文的平面分割算法,NYU-Toolbox[8],曼哈頓世界立體視覺[2](MWS),分段平面立體視覺[28](PPS)以及PlaneNet[5]被用來進行比較。NYU-Toolbox是一種使用隨機采樣提取平面的算法,并通過馬爾可夫模型對分割掩模進行優化;MWS在提取平面過程中使用了曼哈頓世界假設,并采用成對的消失線來改善平面提取結果;PPS使用消失線產生了較好的平面候選區域;PlaneNet使用深度卷積神經網絡提取平面特征。
圖7展示了各種算法在ScanNet數據集上的部分平面分割結果。從圖中可以看出來:其他方法在進行室內場景的分割時,不能夠準確的分割出室內場景的平面(如圖7中框中所示)且無法捕捉到精確的邊界。本文利用空洞卷積增加卷積核的感受野,捕獲更多空間語義信息,并融合多尺度特征,故可以對室內場景平面進行準確分割,并且通過將全連接條件隨機場優化的定位精度與深度卷積神經網絡的識別能力耦合,從而可以更好地處理邊界定位。

圖7 平面分割比較
在圖8中展示了本文算法和其他方法關于平面分割精度的定量比較。其中,像素召回率指的是正確預測的平面重疊區域中像素所占的百分比;平面召回率指的是正確預測真實平面的百分比。如果所預測的平面與真實平面的交并比(IOU)大于0.5,并且重疊區域的平均深度差值小于設定的深度閾值(從0到0.6 m,增量為0.05 m),那么我們就認為該平面被成功的預測出來了。從曲線圖8可以看出來:當使用預測的深度圖作為輸入時(計算預測的像素點到預測深度圖間的距離),本文算法的平面召回率和像素召回率都是最優的;即使使用真實深度圖作為輸入時(計算預測的像素點到真實深度圖間的距離),本文算法的平面召回率和像素召回率也比PPS和PlaneNet好。
在本節中,本文算法和其他方法進行了深度圖的定量分析比較。為了得到深度圖,除了使用全局預測任務外,同時為了避免其他分支的影響,我們還單獨使用深度預測分支(深度)進行深度圖的估計,同時使用Eigen[29]等人的方法改變訓練損失。深度預測精度在NYUV2數據集上的測試結果如表1所示。Eigen-VGG是一個用于法線和深度預測的卷積神經網絡;SURGE[22]是一個可進行平面優化的深度預測網絡;FCRN[30]是目前最好的單圖像深度預測網絡之一。由于NYUV2深度圖極具噪聲且真實平面的提取極具有挑戰性且質量不佳,故本文僅使用深度預測分支及深度損失來微調網絡。
表1展示了4.2節提到的各種指標的定量結果。表格第2至第6列是各種深度誤差指標值(差值越小表明深度預測結果越好);表格第7至第9列的三個指標為深度精度指標(數值越大表明深度預測結果越好),它們表示預測深度值與真實深度值的差值小于設置閾值情況下的像素所占比例。從表中可看出來,當使用全局預測任務預測深度圖時,和文獻[5]相比各種深度誤差指標和深度精度指標相當甚至不及;當僅使用深度預測分支(深度)進行深度估計時,各種深度誤差指標和深度精度指標略有提高。

圖8 平面分割精度比較

表1 NYUv2數據集深度精度比較
圖9展示了本文算法與使用深度殘差網絡的PlaneNet[5]各室內場景重建對比結果。PlaneNet使用固定的感受野,無法使用卷積核進行更大范圍的采樣、捕獲豐富的空間語義信息,并且沒有使用淺層高分辨率的特征;本文利用空洞卷積并設置不同空洞率增加卷積核的感受野,捕獲更多空間語義信息,并融合多尺度特征。從圖9中矩形框可以看出,本文的算法在邊緣位置的重建效果(如框所示)要好于PlaneNet。

圖9 重建結果對比
本文提出了一種基于空洞卷積殘差連接的和多尺度特征融合網絡的分段平面三維重建算法。本文提出的算法可直接從單幅圖像中預測出平面參數、深度圖及分割掩模。由于本文是在靜態室內場景下進行的三維重建,未來的一個重要方向是能夠在室內和室外均進行動態場景的實時三維重建。