CVPR2021文章理解3- Fully Understanding Generic Objects: Modeling, Segmentation, and Reconstruction

在这里插入图片描述
本文仅为个人理解,如有误尽请谅解。
论文链接:https://arxiv.org/pdf/2104.00858.pdf
代码链接:https://github.com/liuf1990/Fully_3D_Object
工程链接:http://cvlab.cse.msu.edu/project-fully3dobject.html

Abstract

使用半监督学习的方法解决从真实的RGB图像中恢复物体的3D表示,对于一个2D图像,文章将RGB理解为多种信息的隐层表示,包括种类,形状,反射率,光照,相机投影矩阵,将这些隐层表示解码出来便可得到3D形状和相对反射率,然后将这些组分进行融合去渲染与输入图像一致的图像。使用一个类别自适应的3D级联占用场(JOF),对真实RGB的2D图像利用更高。

Introduction

适用于多个类别的单一网络模型是比较具有挑战性的,类内和类间的差别是巨大的。该文章引入一种新的范式,共同学习一个完整的3D模型,包括3D形状和反照率,以及一个模型拟合模块从多个类别的RGB图像中去估计类别,形状,光照,反射率和相机投影参数。对光照和反射率建模,能够实现比较输入图像和渲染图象用一种自监督的方式。这样的话可以实现对无标签数据的利用。形状和反照率学习以类别为条件,减轻了多类别三维建模的负担。该设计增强了可见类别的表达能力和不可见类别的泛化能力。
在这部分基于学习的过程中的关键组成部分就是对不同类的物体找到一个表征代表3D形状和反射率。提出一种以类别编码为条件的类别自适应3D占用场(JOF),去表示多个类别的3D形状和反射率。利用占用场作为形状表示,可以表示多种类型的占用场,不被绑定到特定拓扑的三维几何。延伸到反照率,颜色场给出3D点反照率的RGB值。
贡献点:

  1. 为多个类别建立了一个单一的模型;该模型通过三维联合占用场对分割后的三维形状和反照率进行了完整的建模;
  2. 建模内在的组件不仅使我们更好地利用视觉线索,而且,利用真实的图像,以自我监督的方式进行模型训练。
  3. 在JOF学习中引入类别代码,提高了模型的表示能力;
  4. 合并无监督分割使更好的约束微调形状和姿态估计。

Method

在这里插入图片描述

问题公式化

在该文章的工作中,将目标的重建描述为三个解纠缠的参数,类别,形状和反射率,通过两个网咯,这些参数能够解码成相对应的3D形状和反射率。为了实现端到端的训练,通过一个编码网络去顾及这些参数包括相机的参数和光照参数,然后通过基于图形学的渲染神经元去重建输入图像的对应物体。
这个过程可以被公式化,简单去叙述就是,给定了一个多个类别的训练集图片,首先通过一个编码器,输出投影矩阵、光照参数,类别编码,形状编码,反射编码。之后,形状编码和反射参数经过解码器解码出3D几何形状,这颗几何形状是用占用场表示的,然后反射参数经过对应的解码器解码出来颜色场,通过这些参数就能将生成的3D模型投影到RGB图象上进行自监督。

类别自适应的3D关键点占用场

与2D不同的是,目前还没有一个能有效的3D表示,既能存储有效,也能从数据中推断。最近,基于隐式表面的重建能够提供高质量的连续表面。受此的启发,该文章提出了一种3D关键点占用场的表示,这种表示可以使用无监督的语义信息,同时对模型的形状和反射进行建模,为3D形状提供部位级别的对应。
在这里插入图片描述
JOF在之前的隐识表面的学习上有三个新设计:

  1. 将无监督分割的思想从形状拓展到反射率;
  2. 将形状分割整合到反照率解码中,通过几何和外观引导分割;
  3. 对JOF的类别设置条件,以对多个类别进行建模。

类别编码

引入一个类别编码去作为额外的输入对于形状和反射解码器,训练过程中,这个编码使用类别标签用交叉熵去监督。这样可以在多类别模型的前提下,即可建模类内的变形,也可建模类间的变形,也可以拓展到看不见的类别。

形状部分

每个形状都由一个函数来表示,这个函数以解码器网络的形式实现,它输入一个3D位置,类别代码,形状代码,并输出它的占用概率0-1。为了实现无监督的部分分割,将BAENET作为解码器的结构,它由3个完全连接的层组成,最后一层是一个分支层,它给出了每个k个分支的占用值,最后,分支上的max pooling将输出最终占用的结果。

反射率部分

这部分为3D表面的每个顶点分配一个RGB反射,可以使用类别编码和反照率编码的组合来表示彩色形状,然而,它给反射率增加了编码对象几何的冗余负担,例如,轮胎的位置,和汽车的车身。受形状解码部分的启发,提出估计反射率也分为k个分支,对于每个分支,取定点所属分割值的最大值作为该顶点的反射值,该设计将形状分割与反照率学习相结合,有利于图像的分割和重建。

基于物理的渲染

为了渲染一个WH大小的图像,首先找到相对应2D像素的WH个3D表面点,然后每个像素点的RGB值将使用光照模型和形状计算得到。

相机模型

使用透视相机,这里比较简单,不再做过多介绍。相机坐标系的点可以通过投影矩阵投影到图像坐标系中。

表面点的检测

为了渲染一个2D图像,对于每一个从相机的位置到图像上像素点的光线,均选择一个表面点。表面点定义为第一次内部点,或者是当射线没有与物体发生碰撞时,D(X)最大的外点。为了有效地训练,不去提取表面的点,通过线性或线性二叉搜索来近似它们。直观地,在线性搜索中,以距离边界误差为步长,沿着每条光线,我们以一定的步长验证了所有的空间点。在线性二叉搜索中,在第一个内部点找到之后,因为D(X)是一个连续的功能,二叉搜索能够更好的近似表面点。在相同的计算成本下,线性二叉搜索能够得到更好的表面点,增强了更高的渲染质量。

图像形成

文章假设纯普朗克表面反射和远低频照射,因此,入射辐射度可以通过球面来近似谐波(SH)基函数。(这里涉及到很多光学知识,未看懂),总之已知像素点对应的表面的,在知到反射率和阴影的前提下,能够投射成一个2D图像。
在这里插入图片描述

半监督学习

在CAD模型中进行有监督的与训练,从真实图像中进行自监督学习。

自监督的级联模型和拟合

给了一个2D图像没有真实3D形状时的Loss定义为:
在这里插入图片描述
包括图像的光度损失,轮廓一致性,局部特征一致性以及正则化的loss。

Silhouette Loss

在这里插入图片描述
公式中前三项为估计种类,表面和投影的对应编码器部分,有占用场,占用的值当物体的投影轮廓为1时,占用场的值为0.5,否则的话为0。Mesh的投影mask不可微,如果一个3D形状表示为一个网格,当比较两个二进制掩模时没有梯度。如果形状是由一个体素表示,损失可以提供梯度来调整体素占用预测,但不能调整对象方向。该损失可以更新形状占用场和摄像机投影。

Photometric Loss

使用前景一致性L1-loss,在这里插入图片描述代表像素级相乘。

局部特征一致性loss

本文设计的无监督的通过学习语义分割提供部位级别的一致性。我们假设一幅图像中相邻片段的边界像素具有与另一幅同类别图像相似的外观分布。这个假设导致了一个新的损失函数。
在这里插入图片描述
对于一个分割好的3D形状,首先从所有相邻段对中选择边界点,,即一个点及其空间邻居不同的分支。这些3D点通过相机投影矩阵被投影到图像平面上。然后从特征图中找到对应的局部特征。最后计算协方差矩阵的最大特征向量,这个特征向量描述这些点的最大的特征变化。尽管同一类别的两幅图像可能在颜色上有所不同,但我们假设它们各自的主要变化是相似的。因此,定义局部特征一致性Loss为:
在这里插入图片描述
这种损失促使多个图像的语义等价边界像素从相邻两个3D语义的相同边界投影,从而改进姿态和形状估计。

正则化的Loss
反射率局部恒定

假设分段常数反射率,在两个方向上增强梯度稀疏性:
在这里插入图片描述
在这里插入图片描述

Batch-wise White Shading

为了防止网络产生任意的明暗阴影,我们使用了一个批处理的白色阴影约束,在这里插入图片描述

在合成图像上的监督学习

在自监督前,在模型数据集上进行预训练,
在这里插入图片描述

实验结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值