深度学习之PlaneNet

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_31531635/article/details/83513251


论文名称:PlaneNet:Piece-wise Planar Reconstruction from a Single RGB Image

为什么提出

利用单张RGB图像得到分段重建平面深度图。分段平面几何理解对于比如机器人或者增强现实AR等新兴领域的许多应用来说都是很关键的。
从左到右分别为输入图像、分段平面分割图、重建的深度图、纹理映射的3维模型。
在这里插入图片描述

解决什么问题

虽然DNN为单张图像的深度预测带来了显著性的改进,但是分段平面深度图的重建要求一个结构性的几何表示(一系列平面参数和对应的分割掩膜),这对于DNN来说也是一项艰巨的任务。因为,我们不知道场景内到底有多少个平面以及在输出特征向量中需要回归的平面的顺序,这对于DNN带来了巨大的挑战。本文提出的端到端的DNN模型能够直接从一张RGB图像中直接得到一系列平面参数和对应的平面分割掩膜

现有文献

单幅图深度图估计:
(1)Predicting depth, surface normals and semantic labels with a common multi-scale convolutional architecture,ICCV2015.
(2)Depth map prediction from a single image using a multi-scale deep network.2014
(3)Deeper depth prediction with fully convolutional residual networks.2016
(4)Surge: Surface regularized geometry estimation from a single image.2016
(5)Multi-scale continuous crfs as sequential deep networks for monocular depth estimation.2017
室内布局估计:
(6)Roomnet: End-to-end room layout estimation.2017

相关工作

多视图分段平面重建。该任务是为了得到一系列平面参数然后对每个像素都分配一个平面ID。大多数现有的方法都是首先重建精确的3维点,对平面进行拟合来生成平面,然后求解一个全局推理问题来重建分段平面深度图。本文的方法直接从单张RGB图像中学出平面的参数和平面分割掩膜。
基于深度重建学习。“Learning depth from single monocular images.2006”首次提出从单张图像中基于学习的方法来推断出深度图信息。后续的大多工作仅仅是生成一个带有深度值的深度图depthmap,但是不包含平面检测或者分割。上述文献(4)通过在平面上对像素进行推断来加强平面深度和表面法线的预测。但是他们只产生了一个二值化分割掩膜(像素是否在一个平面),但是没有平面的参数或者实例级的平面分割。
布局估计。房间布局估计也旨在在一个场景(墙壁、地面和天花板)上预测空间域平面。大多传统的方法依赖于图像处理的先验知识来估计场景中的消失点,然后通过全局优化过程聚合低维特征。除了低维特征之外,如人体姿态或者语义等高维特征也被利用。已经有方法尝试过超越房间结构来预测目标的几何信息,然而,对于人造特征的依赖性使得这些方法不是很鲁棒,并且Manhattan World 假设限制了它们的操作范围。最近,上述文献(6)提出了一个端到端的深度神经网络RoomNet,其在对房间布局进行分类的同时还能预测角点位置,但是,他们的框架对于通用的分段平面场景却不适用。
直线分析。利用画线来对单图进行三维重建要追溯到60年代。早期的尝试可能是Robert的系统,其启发了后续的大量工作。在真实图像中,线图的提取是非常具有挑战性的。直线的方向、叉点或者是图像的分割的统计分析已经被用于实现建筑场景或者是室内全景图的三维重建。属性文法(Attributed grammar)被用于对一张图像进行解析成分层图来进行三维重建,但是,这些方法要求人工设计特征,语法规范或者是算法规则。本文方法纯粹是利用数据驱动的深层神经网络。

基本思想及其过程

本文第一个提出从一张RGB图像中通过一个端到端的DNN模型来直接得到一系列平面参数和对应的平面分割掩膜。
**数据来源:**从大型RGBD视频数据集ScanNet中得到5万分段平面深度图用来训练和测试,通过拟合平面到3维上的点,然后映射到图像中。
解决问题的方式:
(1)定义得到平面的顺序:遵循“A point set generation network for 3d object reconstruction from a single image.2016”中点集生成的工作,我们定义了一个与平面顺序无关的损失函数。
(2)控制得到平面的数量:遵循“Learning shape abstractions by assembling volumetric primitives.2016”中通过允许平面分割掩膜的概率全为0来进一步控制平面的数量,该网络也在一个非平面的表面上预测一个深度图,其损失通过概率性的分割掩膜来定义,然后通过反向传播。

PlaneNet

我们的网络基于Dilated Residual Networks及Deeplab网络模型进行构建,这是一个对于图像分类以及语义分割都适用的灵活的网络框架,网络输出是一个高分辨率的特征图,然后为三个预测任务构造了三个输出分支(平面参数、分割掩膜、非平面深度图),如图2所示。
在这里插入图片描述
平面参数:对于每个场景,我们预测一个固定数量K的平面 S = S 1 , . . . S K S={S_{1},...S_{K}} 。每个平面 S i S_{i} 由三个平面参数 P i P_{i} 表示, D i D_{i} 表示由参数 P i P_{i} 推断出的含深度信息的深度图。(深度值计算需要相机内参数,但是可以通过分析消失点来大致估计)
分割掩膜:K个平面的概率分割掩膜由 ( M 1 , . . . M K ) (M_{1},...M_{K}) 表示,非平面深度图为 ( M K + 1 ) (M_{K+1})
非平面深度图:对非平面结构进行建模,推断其几何结构作为一个标准的深度图。用 ( K + 1 ) t h (K+1)^{th} 个平面的深度图来表示为 D K + 1 D_{K+1} ,其不能解释平面表面。
总结:这个网络预测了:
(1)平面参数 ( P 1 , . . . P K ) (P_{1},...P_{K})
(2)概率分割掩膜 ( M 1 , . . . M K + 1 ) (M_{1},...M_{K+1})
(3)非平面深度图 ( D K + 1 ) (D_{K+1})
下面将分别从上述三个分支来描述Planenet网络细节。

平面参数分支

DRN最后的输出特征图经过一个global avg pooling得到1x1的标量,然后经过一个全连接层得到 K × 3 K{\times}3 个平面参数,在预测任务中,我们无法得知平面的数量和其顺序情况,我们预测一个固定值的平面量K,然后通过使对应的概率分割掩膜值为0来允许一些预测值无效。我们的ground-truth生成过程产生最多10个平面,因此我们设置K=10。我们对于回归平面参数基于倒角距离度量定义一个和顺序无关的损失函数 L P = i = 1 K m i n j [ 1 , K ] P i P j 2 2 . ( 1 ) L^{P}={\sum}^{K*}_{i=1}min_{j{\in}[1,K]}||P_{i}^{*}-P_{j}||^{2}_{2}. (1) ,其中,参数 P i P_{i} 是在平面上非常接近相机中心的点的三维坐标, P i P^{*}_{i} 是ground-truth, K K^{*} 是ground-truth平面的数量。

平面分割分支

DRN最后的输出特征图经过一个金字塔池化模块,然后经过一个卷积层得到K+1个通道表示K个平面和一个非平面的表面。基于“Efficient inference in fully connected crfs with gaussian edge potentials.”的快速推断算法,我们采用了一个稠密条件随机场模块(DCRF),并像“Conditional random fields as recurrent neural networks.”中一样,与前面的层共同来训练DCRF模块。在训练时,将平均场迭代次数设置为5,测试时设置为10。为了简便,双边滤波器的带宽是固定的,我们使用一个标准的softmax加上交叉熵的损失来有监督的训练分割: L M = i = 1 K + 1 p I ( 1 ( M ( p ) = i ) l o g ( 1 M i ( p ) ) ) . ( 2 ) L^{M}={\sum}^{K+1}_{i=1}{\sum}_{p{\in}I}(1(M^{*(p)}=i)log(1-M^{(p)}_{i})). (2) ,其中 M i ( p ) M^{(p)}_{i} 表示像素p属于第i个平面的概率,I表示图像的像素数量的总和, M ( p ) M^{*(p)} 表示该像素的ground-truth平面ID。

非平面深度分支

该分支与平面分割分支共享相同的金字塔池化模块,然后经过一个卷积层得到一个通道的深度图,利用整个ground-truth深度图使得整个训练更加有效,而不是对于非平面区域专门定义一个损失。特别地,我们对ground-truth与要么一个预测的平面,要么一个非平面深度图之间定义深度差别的平方和为损失。 L D = i = 1 K + 1 p i ( M i ( p ) ( D i ( p ) D ( p ) ) 2 ) . ( 3 ) L^{D}={\sum}^{K+1}_{i=1}{\sum}_{p{\in}i}(M_{i}^{(p)}(D_{i}^{(p)}-D^{*(p)})^{2}). (3) ,其中 D i ( p ) D^{(p)}_{i} 表示像素p的深度值,同时 D ( p ) D^{*(p)} 表示ground-truth的深度值。

实验及测试

数据集

来自一个大规模室内RGB-D视频的ScanNet数据集的共有51000张ground-truth分段平面深度图(50000张训练,1000张测试),在一张RGB-D图像上的深度图包含了很远距离的空洞和劣质的质量。

实现细节

我们的方法对于ground-truth生成是直接将平面拟合到一个合并的网格中,然后投影到单帧中,同时还利用了相关的语义标注。
特别地,对于每个子网格模型的相同语义标签,我们将网格的顶点利用RANSAC算法来代替重复提取平面。内部距离阈值为5cm,并且该过程持续到90%的点被覆盖为止。我们合并两个(不一定相邻)平面,如果平面的高斯差分低于20度,并且如果更大的那个平面根据平均距离误差低于5cm拟合小的那个平面,则跨越不同的语义标签。如果三个顶点由同一个平面拟合,那么我们投影每个三角到单帧上。投影完所有的三角之后,我们只保留投影面积大于图像的1%的平面。如果像素覆盖平面的比例小于50%,那么就丢掉这一帧。对于训练样本,我们从ScanNet中随机选择90%的场景,然后每10帧进行子采样,利用上述过程计算分段平面深度图,然后使用最后的随机采样来产生50000个例子。相同的过程从剩下的10%的场景中生成1000个测试例子。
基于DeepLab使用TF来实现PlaneNet,我们的系统为利用Dilated Convolution的101层的ResNet,修改首先的几层来处理去网格问题。最终的DRN特征图包含2096维通道。我们使用Adam优化方法,初始学习率设置为0.0003。输入图像,输出平面分割掩膜和非平面深度图分辨率都是256x192。我们在50000张训练样本上迭代50个epochs来训练网络。

实验结果

在这里插入图片描述
从左至右分别为:输入图像,平面分割,深度图重建,本文深度图的绘制方式。平面分割结果中,黑色表示非平面表面区域。

平面分割准确率

在这里插入图片描述
Planenet与三个baselines方法进行对比。
NYU-Toolbox:是一个平面提取算法,来自NYU官方工具箱,使用RANSACked提取平面假设,然后通过一个马尔可夫随机场MRF来优化平面分割。
Manhattan World Stereo(MWS):是一个和NYU-Toolbox相似的,除了在提取平面以及利用成对项的消失线MWS来利用Manhattan World假设提升结果。
分段平面立体(PPS):放宽了Manhattan World假设,使用消失线来生成更好的平面提取子。
图4显示了两个召回指标的评估结果。
在这里插入图片描述
图5是深度图的预测图,从左至右分别为原始输入图,NYU,MWS,PPS,PlaneNet,ground-truth。
在这里插入图片描述
####深度重建准确率
我们在分割掩膜上选择最大的概率值作为深度值来定义我们的深度图。Eigen-VGG是一个用来预测深度和表面的卷积结构网络。SURGE是一个优化平面度的较新的深度预测网络。FCRN是目前单张图像深度预测网络的最好的方法。
####平面顺序一致性
顺序不明是分段深度预测的一个挑战,我们发现PlaneNet能无监督地自动学习到一致性顺序,图6显示了本文算法能够生成有一句的房间布局估计,甚至当场景非常的杂乱且包含大量遮挡的目标时。
在这里插入图片描述
###应用
####内嵌纹理与替换
如图8所示,从上至下分别为输入图像,平面分割结果,编辑的图像
在这里插入图片描述
首先通过使用预测到的平面法线通过一个标准的投票方案“Manhattan-world stereo.”来提取Manhattan方向。给定一个分段平面区域,我们通过Manhattan方向定义它对应的UV的坐标轴上的坐标,这与平面平行,同时其他的轴仅仅是十字轴和平面法线的交叉积,给定一个UV坐标,我们通过alpha混合内嵌一个新的纹理或者利用一个新的完全替换一个纹理。

猜你喜欢

转载自blog.csdn.net/qq_31531635/article/details/83513251