论文笔记:AtlantaNet(ECCV 2020)

本文方法基于Atlanta假设,其只要求墙垂直于地面。布局预测和房间高度估计都是基于天花板和地板的2个透视图。预测布局使用RNN,并且利用一个基于专家知识的自定义训练策略。本文重点是支持复杂布局,墙角很多甚至是曲面墙角。

在这里插入图片描述

Introduction

以往方法:LayoutNet、DulaNet、HorizonNet,需要Manhattan假设进行费时的预处理和后处理。Atlanta假设不需要墙与墙互相垂直。布局预测和房间高度估计都是基于天花板和地板的2个透视图。

预测布局使用RNN,并且利用一个基于专家知识的自定义训练策略。该网络分别输入对天花板和地板透视图,对应输出各自的分割mask,区分内部和外部空间。天花板的输出抽取墙角得到多边形近似房间结构,地板的输出通过几何关系(上下视图比例)可以算出房间高度

贡献:

  1. 基于Atlanta假设,全都在透视图上预测,便于使用透视图的方法:直接地2D卷积、数据增强、RNN
  2. 在天花板透视图和地板透视图输出分割mask,得到轮廓和角点。其中天花板透视图估计结构,2个轮廓分析几何关系估计高度。比以前从稀疏的角落位置推断布局的方法更稳定,也更适合于复杂结构的建模,如曲面墙。不需要后处理。
  3. 不需要预处理和后处理,只需要输入图片大致墙是垂直地面的。
  4. 们提出了一种训练策略,基于在同一网络实例中同时提供天花板和地板视图,与双连接分支架构或天花板和地板的单独训练相比,可以提高推理性能

Overview

现在的全景相机一部带有惯性测量单元(IMU),可以得到当前相机的pitch和roll,应用到全景图上即可对齐进行矫正。当然也可以使用panocontext提供的预处理。
在这里插入图片描述
在这里插入图片描述

第一个模块首先进行Atlanta变换,得到天花板视图和地板视图,分辨率都为(1024 x 1024)。由于事先不知道上下视图的墙边界范围,所以fov先固定一个值,比如fov=120。尽可能大,但是又要保证边界不会有太严重的扭曲。

输入到网络后,上下视图各种输出对于的墙的轮廓。图a显示如何使用上下轮廓得到房间比值高度 h r h_r hr。其实就是简单的相似三角形原理,fov一样,当上下的边长(蓝红线)不一样时,即可计算 h r = h c / h r h_r = h_c/h_r hr=hc/hr。图b显示,由于遮挡,取轮廓的并集然后再算比例。

Approach

4.1 Data Encoding

等距平面图形到透视图形的关系(理解为等距投影图像到球面上,然后在 z = h f z=h_{f} z=hf截取,即 z = h f z=h_{f} z=hf作为透视图焦距)
A h ( θ , γ , h f ) = { x = h f / tan ⁡ γ ∗ cos ⁡ θ y = h f / tan ⁡ γ ∗ sin ⁡ θ z = h f A_{h}\left(\theta, \gamma, h_{f}\right)=\left\{\begin{array}{l} x=h_{f} / \tan \gamma * \cos \theta \\ y=h_{f} / \tan \gamma * \sin \theta \\ z=h_{f} \end{array}\right. Ah(θ,γ,hf)=x=hf/tanγcosθy=hf/tanγsinθz=hf

为了便于理解,回顾一下投影过程:
在这里插入图片描述
图片来自论文:基于本质矩阵鲁棒估计的球形全景匹配

上图中,球面到平面(等距投影):
{ x = r ( α + π ) y = r ( π 2 − β ) r = W 2 π = H π \left\{\begin{array}{l} x=r(\alpha+\pi) \\ y=r\left(\frac{\pi}{2}-\beta\right) \\ r=\frac{W}{2 \pi}=\frac{H}{\pi} \end{array}\right. x=r(α+π)y=r(2πβ)r=2πW=πH

平面(等距投影)到球面:
{ X = r cos ⁡ β cos ⁡ ( π 2 − α ) Y = r cos ⁡ β sin ⁡ ( π 2 − α ) Z = r sin ⁡ β \left\{\begin{array}{l} X=r \cos \beta \cos \left(\frac{\pi}{2}-\alpha\right) \\ Y=r \cos \beta \sin \left(\frac{\pi}{2}-\alpha\right) \\ Z=r \sin \beta \end{array}\right. X=rcosβcos(2πα)Y=rcosβsin(2πα)Z=rsinβ

理解完上面,再结合本论文,其 z = h f z=h_{f} z=hf,即 Z = r sin ⁡ β ( h f r sin ⁡ β ) Z=r \sin \beta (\frac{h_f}{r \sin \beta}) Z=rsinβ(rsinβhf)。那么就有 X = r cos ⁡ β cos ⁡ ( π 2 − α ) ( h f r sin ⁡ β ) , Y = r cos ⁡ β sin ⁡ ( π 2 − α ) ( h f r sin ⁡ β ) X=r \cos \beta \cos \left(\frac{\pi}{2}-\alpha\right) (\frac{h_f}{r \sin \beta}),Y=r \cos \beta \sin \left(\frac{\pi}{2}-\alpha\right) (\frac{h_f}{r \sin \beta}) X=rcosβcos(2πα)(rsinβhf),Y=rcosβsin(2πα)(rsinβhf),然后就得到本论文的投影关系。所以 h f h_{f} hf是三维坐标系中z轴的值,其表示高度、焦距。在 z = h f z=h_{f} z=hf处截取平面,把球面上的点投影在 z = h f z=h_{f} z=hf平面上,即得透视图。

理一下论文算房间高度过程,房间高度由2个值决定 h e h_e he h c h_c hc

h e h_e he是相机到地面的距离,通常已知真实值,或者假设为1。
那么需要求的就是 h c h_c hc。而 h c / h e h_c/h_e hc/he可以通过计算上下视图的轮廓比例来求。而轮廓需要网络预测得到。所以对于网络输入,在不知道 h f h_f hf的情况下,先假设 h f = w / 2 ∗ tan ⁡ ( F O V / 2 ) h_{f}=w / 2 * \tan (F O V / 2) hf=w/2tan(FOV/2) w w w是输入网络的宽,论文中 w × w = 1024 × 1024 w \times w = 1024 \times 1024 w×w=1024×1024 ,FOV=180。在应用最开始的公式进行投影,这样便得到输入网络的上下2个透视图。

Network Architecture

在这里插入图片描述
网络结构:
输入:上下透视图(3x1024x1024)

encoder:resnet,每经过一个block分辨率减半

最后4层经过不同卷积(4个卷积层称为convs,步长为2,最后一层为1),每个卷积层后面接BN和ReLU激活,得到相同尺寸256x32x32。最终经过reshape得到256x1024,然后4个feature map连接得到1024x1024的sequential feature map。

输入:1024x1024
RNN是双向LSTM,细胞状态和输入上下都为512维度特征,所以LSTM输出为1024 x (512 + 512)

输入:1024 x (512 + 512)
decoder:上采样 + 6卷积层(和convs一样但步长为都为1),每个卷积层接ReLU激活,最后一个卷积层接sigmod。

最终输出1x1024x1024的形状分割mask,再经过过Douglas算法提取轮廓。

为什么使用RNN?

We feed such a sequence to a RNN, that is exploited to capture the shape
of the object and thus make coherent predictions even in ambiguous cases such as occlusions and cluttered scenes.

布局的恢复:
2D房间布局由天花板mask抽取轮廓得到F2D,通过上下视图输出的mask抽取轮廓,计算比例得到 h r h_r hr,它是一个比例,即 h c / h e h_c/h_e hc/he,当确定了 h e h_e he,便可知道房间高度 h = h c + h e h =h_c + h_e h=hc+he。最终的布局由F2D和 h h h恢复。

Training

损失函数:
− 1 n ∑ p = M ( p ^ log ⁡ p + ( 1 − p ^ ) log ⁡ ( 1 − p ) ) − 1 n ∑ q = M ′ ( q ^ log ⁡ q + ( 1 − q ^ ) log ⁡ ( 1 − q ) ) -\frac{1}{n} \sum_{p=M}(\hat{p} \log p+(1-\hat{p}) \log (1-p))\\-\frac{1}{n} \sum_{q=M^{\prime}}(\hat{q} \log q+(1-\hat{q}) \log (1-q)) n1p=M(p^logp+(1p^)log(1p))n1q=M(q^logq+(1q^)log(1q))

其中,M是分割内外的mask,M’是M的梯度图(使用sobel 3x3)。 即使梯度部分loss只在边缘附近有效,但是它的存在改善了在小边界表面细节的情况下轮廓的锐化。使得本文方法不需要后处理。同样改进了在复杂纹理情况下的noise过滤。

在实践中,对于每次训练迭代,我们用随机旋转和镜像来增加输入全景图集,在2D空间中执行所有操作。

对于分支结构有3种:

  1. 各种对天花板视图和地板视图训练。实际上是2个网络(结构一样,网络weights不一样)。
  2. 通过一个共同的loss函数进行联合训练(parallel training)
  3. 一个网络既能预测天花板视图也能预测地板视图

在第一种情况下,有2个独立的AtlantaNet,作者单独训练天花板分支,发现训练有过拟合的趋势,经过少量的迭代,学习速率迅速衰减。只使用地板图像训练地板分支会导致粗糙的形状。因为天花板部分通常有更干净的区域,但较少的特征,而在地板部分,建筑结构更闭塞,因此更难以匹配,单独与地面真实的房间形状。

在第二种情况下,作者测试2个平行分支,各种都是AtlantaNet的一个实例。loss是上下视图loss的和。由于不知道视图比例关系,所以无法进行特征融合。但是比各种单独训练表现要好。

在第三种情况下,作者使用1个AtlantaNet实例,训练数据包含天花板视图个地板视图。结果表明,这种策略提高了性能,因为它引导网络寻找天花板干净结构之间的共性和地板的高度杂乱的结构。

Results

Datasets

PanoContext
Stan- ford 2D-3D
Matterport3D
MatterportLayout
AtlantaLayout(a selection of images from Matterport3D and Structured3D)

Performance

在这里插入图片描述
PanoContext都是cube房间,本文方法在不使用Manhattan假设和后处理也能得到和最新方法近似性能。

在这里插入图片描述

Ablation Study

在这里插入图片描述
Qualitative results and comparison:
在这里插入图片描述
Failure case:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值