21

基于GAN的单目图像3D物体重建(纹理和形状)

 3 years ago
source link: https://mp.weixin.qq.com/s/6dpOT6P1tZr_ez-cxFPNFQ
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

基于GAN的单目图像3D物体重建(纹理和形状)

Original Longway 3D视觉工坊 4/13
收录于话题
#深度学习&自动驾驶

点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

Image

项目地址:https://nv-tlabs.github.io/DIB-R/代码地址:https://github.com/nv-tlabs/DIB-R

主要思想

很多机器学习的模型都是在图片上操作,但是忽略了图像其实是3D物体的投影,这个过程叫做渲染。能够使模型理解图片信息可能是生成的关键,但是由于光栅化涉及离散任务操作,渲染过程不是可微的,因此不适用与基于梯度的学习方法。这篇文章提出了DIR-B这个框架,允许图片中的所有像素点的梯度进行分析计算。方法的关键在于把前景光栅化当做局部属性的加权插值,背景光栅化作为基于距离的全局几何的聚合。通过不同的光照模型,这个方法能够对顶点位置、颜色、光照方向等达到很好的优化。此项目有两个主要特点:单图像3D物体预测和3D纹理图像生成,这些都是基于2D监督进行训练的。

简介

在理解真实世界时,3D视觉感知提供了无价的信息。但是人类和机器接受到的原始信息都是2D投影(图像)。从3D模型产生2D图像的过程叫做渲染,这是近几年来一个很好的图像理解过程通过使用不同的算法。

现在很多已经存在的工作都集中于基于光栅化的渲染上,它们以集合方式将3D物体投影到图像平面上,并且不能支持更高级的照明效果,已被证明在很多机器学习应用方面有很好的效果,例如单图片3D预测。作者采用了这种方法。

现存的很多基于光栅化的方法都有一定的缺陷,为此,作者提出了自己的框架DIB-R,一个可微的渲染器。并且包装这个框架在一个神经网络当中,这个程序专注于三维形状和纹理恢复,通过这些程序实现了数值和可视化的最先进结果。 

相关工作

可微的光栅化:这一段说了很多基于光栅化的可微的渲染器,但是都有一定的缺陷,比如说在OpenDR中,梯度仅在网格边缘的一个小范围内是非零的,这必然会影响性能。在Neural 3d mesh renderer中,由于缺乏全彩信息,导致了嘈杂的3D预测,没有凹面特征。还有一些其他的不足,比如说失去了点云之间的连接性,因此不能处理纹理和光照等等。

SoftRas-Mesh提出了一个栅格化的概率计算公式,能够使梯度计算分析。SoftRas-Color扩展了这个框架,以合并顶点颜色和支持纹理和照明理论。和本篇文章不同的关键之处在于,他们指定每个前景像素的最前面的面和计算分析梯度像素的光栅化视为插值的局部网格属性。这使得渲染效果和OpenGL管道一样,并且自然地支持所有顶点属性的优化,此外,还可以将管道扩展到各种不同的光照模型。

对抗的3D物体生成:通过深度学习生成3D图形的方法已经在大量的工作中使用了生成对抗网络(GAN),但是这些方法需要3D监督。作者的这个框架只需要2D监督,并且是第一个同时产生形状和纹理的生成器。 

DIB-R:可微的基于插值的渲染器

DIB-R将前景栅格化处理为顶点属性的插值,可以生成真实的图像,其梯度可以通过所有预测的顶点属性完全反向传播,而将背景栅格化定义为学习过程中全局信息的聚合,可以更好地理解形状和遮挡。

1.渲染器通道:现在很多流行的APIs,例如OpenGL和DirectX3D,将渲染3D场景的过程分解为一系列连续的用户定义的程序,称为着色器。当渲染一个3D多边形网格的图像时,首先,顶点着色器将场景中的每个3D顶点投射到定义的二维图像平面上。然后使用栅格化来确定由这些顶点定义的基元覆盖哪些像素以及以何种方式覆盖像素。最后,片段着色器计算每个像素是如何被覆盖它的基元着色的。

2.可微的光栅化:首先,只考虑被一个或多个面覆盖的前景像素。相比标准渲染器, 像素的值被从最近的覆盖它的面分配, 他们把前景光栅化当做顶点属性的插值。对于每个前景像素,我们执行一个z-buffering测试,并将其分配给最近的覆盖面。每个像素都是由这个面单独影响的。

640?wx_fmt=png

可微的光栅化说明:

一个位于Pi位置的像素被三个顶点V0、V1、V2的面Fi覆盖,每个顶点分别具有自己的属性:U0、U1、U2。Pi和Vi是图像平面上的二维坐标,Ui为标量。使用面的顶点属性的重心插值来计算这个像素的值Ii:

640?wx_fmt=jpeg

权重w0,w1和w2是由顶点和像素位置使用一个可微函数Ωk(附录中提供)计算得到的:

640?wx_fmt=jpeg

渲染器模型

1.基本模型:DIB-R支持基本的渲染模型,可以直接用顶点颜色或纹理绘制图像。为了定义网格的基本颜色,我们支持顶点属性为顶点颜色或u,v坐标在一个学习或预定义的纹理映射。像素值分别通过顶点颜色或投影纹理坐标的双线性插值来确定。

2.照明模型:为了统一所有不同的照明模型,将图像颜色I分解为网格的组合颜色Ic和照明因素Il和Is:

640?wx_fmt=jpeg

Ic表示插值顶点颜色或纹理映射值从顶点属性没有任何照明效果的直接提取,Il和Is表示照明因素由特定照明模式选择决定,Il将与网格合并颜色,Is是额外的灯光效果,并且不依赖于Ic。

接下来分别介绍了三种照明模型,分别是冯氏、朗伯模型和球面谐波模型。可微分渲染器的设计允许对所有定义的顶点属性和各种渲染模型进行优化,下图显示了一个完整的检查。

640?wx_fmt=png
 (a,b) 顶点颜色渲染器模型中的顶点位置和颜色(c,d)纹理渲染模型中的纹理和纹理标(e,f) Lambertian模型中的顶点和摄像机位置(g)球谐模型照明,(h) Phong模型中的材料。 

DIB-R的应用

1从单一图像预测3D物体:输入一张RGBA图片,RGB值I和轮廓S到一个卷积神经网络F中,用特殊的拓扑学预测出网格中每个顶点的位置和颜色值。然后用一个渲染器去把预测的网格生成一个2D的轮廓S’和彩色图像I’。损失函数定义如下:

640?wx_fmt=jpeg

进一步对于彩色图像使用L-1损失:

640?wx_fmt=jpeg

在渲染预测的网格时,不仅使用了真实值的相机位置和原始图像比较,并且任意生成了第二视角和从新的角度生成的真实值做比较,这能够确保网络不仅集中于网格属性在已知的角度。最后,定义损失函数如下:

640?wx_fmt=jpeg

接下来,将这个方法应用于前一个任务的扩展,预测纹理映射而不是顶点颜色,并回归光照参数以生成更高质量的网格预测。根据所使用的照明模型,神经网络F被修改为预测顶点位置、纹理图和各种照明信息,整体框架如第一张图片所示。

纹理形状的3D生成对抗网络通过二维监督:在第二个应用中,进一步证明了这个方法的能力,通过训练一个生成的对抗网络(GAN)来产生3D纹理形状,只使用2D监督。训练一个网络FGAN预测顶点位置和纹理映射,并利用一个鉴别器D(φ)以区分真正的图片,并呈现预测。对网络FGAN进行了修改,使其以正态分布噪声代替图像作为输入。 

试验

数据集:由来自ShapeNet的13个物体类别组成。从24个不同的角度通过2D监督生成RGB图像作为数据集。为了演示DIB-R支持的多种渲染模型,使用了4种不同的渲染模型来渲染每个图像。

结果展示

从单一图像预测三维物体:几何形状和颜色:

640?wx_fmt=png

基于3D IOU (%) / F-score(%)的单幅图像三维目标预测结果

640?wx_fmt=png

单幅图像三维目标预测的定性结果。第一列和第五列是输入图像,第二列和第六列是模型的预测,第三列和第七列是SoftRas-Mesh的结果,其余两列是N3MR的结果。

从单一图像预测三维物体:几何形状、颜色和光照

640?wx_fmt=png

三维形状、纹理和光线预测定性的例子。Col. 1-3: 1) GT纹理+照明渲染图像,2)纹理渲染图像,3)光照图。Col 4-6:该框架的预测。Col: 7-9: N3MR

640?wx_fmt=png

纹理和光线预测的结果

640?wx_fmt=png
在CUB bird数据集和PASCAL3D+  Car数据集的示例 
640?wx_fmt=png
3D GAN从两个视角对汽车图像进行了训练 
640?wx_fmt=png
通过3D GAN的潜在代码之间的插值产生物体效果图,从2个观点

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK