Self-supervised Single-view 3D Reconstruction via Semantic Consistency
论文地址:https://arxiv.org/abs/2003.06473
作者:Xueting Li, Sifei Liu, Kihwan Kim, Shalini De Mello, Varun Jampani, Ming-Hsuan Yang, and Jan Kautz
发表: ECCV 2020
链接: https://github.com/NVlabs/UMR
笔记参考:https://zhuanlan.zhihu.com/p/464151329
Abstract
该模型通过收集二维图像和轮廓来预测目标物体的3D网格形状、纹理和相机姿势。该方法不需要三维监督,不需要人工标注关键点,也不需要对象的多视图图像或先前的三维模板。
1. Introduction
1.1 问题和挑战
(1)由于其固有的模糊性,从2D图像中恢复三维形状和纹理以及相机姿态是一个高度不适定的问题。
(2)现有的方法通过利用各种形式的监督来解决这个任务,如地面真实3D形状、2D语义关键点、阴影、类别级3D模板或每个对象实例的多个视图。这些类型的监督信号需要繁琐的人力工作,因此要推广到许多缺乏此类注释的对象类别具有挑战性。
(3)通过不使用任何3D形状、模板或关键点注释来学习重建,即只使用一组单视图图像和对象实例的轮廓,仍然具有挑战性。这是因为在没有上述监控信号的情况下学习到的重建模型会导致错误的三维重建。
1.2 关键思路
人类会直觉感知到一个物体包括各个部分,比如鸟有两只腿、两个翅膀、一个头,从而识别物体。类似的,cv受此启发,也可以将一个物体定义为多个可变形的部分的集合。
- 仅需要单张图片+轮廓mask,利用语义一致性(即网格表面上一个点的语义部件标签即使在网格形状变形时也不会改变),实现自监督3D重建模
- 思路:1. 每个物体可以看作由可变形的部分组成;2. 对同一类型的不同物体,它们的每一部分在语义上都是一致的
- 通过自监督学习大量同类的图片,可以建立重建的mesh模型与图片之间的语义一致性来学习自监督重建模型。这样在同时预测形状、相机位置和材质的时候,可以降低模糊性。
- 第一个做到不需要特定类别的template mesh模型、带注释关键点或多视图图像,就可以从单视角图像中实现3d重建模。因此,这个方法可以推广到各种物体类别,而不需要类别的标签
2. Related Work
省略
3. Approach
从CMR中的现有网络开始作为基线重建网络。给定输入图像,CMR 使用编码器 E 提取图像特征,并通过**三个解码器 Dshape、Dcamera 和 Dtexture **联合预测网格形状、相机姿态和网格纹理。网格形状 V V V 通过预测顶点偏移 Δ V ΔV ΔV 到特定类别的形状模板 V ˉ \bar{V} Vˉ 来重建;相机姿态 θ θ θ 由弱透视变换表示;重建网格纹理,纹理解码器输出 UV 纹理流 ( I f l o w I_{flow} Iflow),将像素从输入图像映射到 UV 空间。预定义的映射函数 $ Φ $进一步将 UV 空间中的每个像素映射到网格表面上的点。
CMR方法为什么表现良好?
(1)利用了手动注释的语意关键点
(2)精确的预先计算每个实例的地面实况相机姿态
(3)预先估计类别级3D模版
但世界上大多数对象类别没有良好的定义,注释的关键点不可能泛化到新的类别 (这篇论文主要就是把它去掉了。去掉之后呢,会出现相机+形状同时预测时Ambiguity的问题,所以就想方设法解决这个问题。),因此提出了一种在更具可扩展性但具有挑战性的自监督设置中的方法,而不使用手动注释的关键点来估计相机姿势或先验模板。
本文提出了一个专为自监督网格重建学习而设计的框架,即仅使用图像和轮廓的集合作为监督()
该框架包括:
(1)一个与CMR结构相同的重构网络(图像编码器E 和三个解码器Dshape、Dcamera和Dtexture)共同预测图像实例的网格变形 ∆ V ∆V ∆V、纹理流 f l o w flow flow和摄像机姿态 θ θ θ
(2)语义一致性约束,正则化了模块(1)的学习,在自我监督设置下很大程度上解决了前面提到的“相机形状模糊”问题。
(3)一个从头开始学习规范语义UV映射和类别级模板的模块,该模块使用模块(1)进行迭代训练。
3.1 利用语义一致性解决相机形状歧义
由于自我监督学习模型只依赖于图像和轮廓,而不提供任何语义部分信息,同时预测形状、相机位置导致“相机形状模糊性”的问题。不正确的形状重建,与不正确的相机姿势相关联,可以产生与图像和轮廓观察相匹配的渲染。
关键是在3D和2D中使用对象实例的语义部分,基于:
自监督部件分割(SCOPS)为大多数对象实例提供了正确的部件分割,即使是那些具有较大形状变化的对象
在三维空间中,语义部件不受网格变形的影响,即在类别的所有重构实例中,网格表面上某一点的语义部件标签是一致的。因此允许我们构建一个所有实例可以共享的类别级语义UV映射——规范语义UV映射,反过来允许我们为网格上的每个点分配语义部件标签。
2D的部件分割SCOPS 一种自监督的方法,从一个对象类别的图像集合中学习语义零件分割,它们在不同的对象实例中语义一致。通过本文的方法,还可以反过来提升SCOPS的结果:利用生成的标准语义UV map作为伪标注反过来进行监督。
针对SCOPS估计的2D图像的语义部件分割,如何获得网格表面上每个点的语义部件标签?一种直观方法是获得从2D图像空间到3D形状空间的映射。如下
基于标准语义一致性进行3D的部件分割 通过重构网络学习到的纹理流 I f l o w I_{flow} Iflow,形成从2D图像空间到UV纹理空间的映射,然后通过预定义的映射函数 Φ \Phi Φ,进一步将UV空间的语义标签映射到网格表面。
理想情况下,所有实例都应该生成相同的语义UV映射——类别的规范语义UV映射,而不考虑实例的形状差异。这是因为:(i)语义部件的不变性表明分配给网格表面上每个点的语义部件标签在不同的实例之间是一致的;(ii)将像素从UV空间映射到网格表面的映射函数Φ是预先定义的,与3D空间中的变形(如面位置或区域变化)无关。因此,UV映射中像素的语义部分标签也应该在不同的实例中保持一致。
如果我们通过学习的纹理流 I f l o w I_{flow} Iflow直接对单个Pi进行采样,那么获得的语义UV映射在实例之间确实非常不同。这是由于(i)自监督SCOPS方法产生的部分分割预测是有噪声的,(ii)纹理流预测对于重构网格的不可见面具有高度的不确定性。。因此,通过聚合单个语义UV映射来近似规范语义UV映射 P ˉ u v \bar{P}_{uv} Pˉuv
P ˉ u v = 1 ∣ U ∣ ∑ i ∈ U I flow i ( P i ) \bar{P}_{\mathrm{uv}}=\frac{1}{|\mathcal{U}|} \sum_{i \in \mathcal{U}} I_{\text {flow }}^{i}\left(P^{i}\right) Pˉuv=∣U∣1i∈U∑Iflow i(Pi)
通过某种方法选择出训练集中效果比较好的子集 u u u ,对它们的结果进行加和,
选择样本的方式:
- 首先选择最好的那一个样本,即 perceptual distance(3D投影到2D的图像与原始RGB图像的知觉距离?)最小的
- 然后选择K个跟这个最好的样本最接近的样本,即它们的语义UV map最接近
产生一个平均语义UV图,有效地消除了异常值(即不正确SCOPS的实例),以及有噪声的像素级预测。
2D和3D之间的语义一致性 相机模糊性虽然不容易仅通过比较渲染的重建图像和输入图像来识别,但是一旦网格表面上每个点的语义部分标签可用,就可以被识别出来。通过比较网格表面上的语义部分标签的渲染和二维SCOPS部分的分割,可以看出上上上图的(i)行重构是错误的。只有当相机的姿态和形状都正确时,渲染和SCOPS分割才会一致。
因此提出一种基于概率和一种基于顶点的约束,通过鼓励二维图像和网格表面中语义部分标签的一致性来促进相机的姿态和形状学习。
1. 基于概率的约束Probability-based constraint.
L s p = ∥ P i − R ( Φ ( P ˉ u v ) ; θ i ) ∥ 2 L_{\mathrm{sp}}=\left\|P^{i}-\mathcal{R}\left(\Phi\left(\bar{P}_{\mathrm{uv}}\right) ; \theta^{i}\right)\right\|^{2} Lsp=