本文是基于CVPR2020最佳论文,来自牛津VGG组的吴尚哲学Unsup3D。除了中文的详细解析外,我在作者的代码基础上,将可微分渲染模块由原来的Neural Renderer替代为Soft Rasterizer,取得的效果勉强过关~。
本方法的目的是为了从raw single-view images(原始单个视角的单张图片)恢复/学习到3D的可变形的对象.
我们的方法基于Auto Encoder, 其将输入的图像解耦为depth, albedo, viewpoint以及illumination.
为了在无监督的情况下对上述的4个变量进行disentangle(解纠缠).
我们基于一个假设: 即很多对象在原则上是符合对称结构的。
作者通过为可能对称的对象预测一个对称的probability map来建模。以end2end的方式学习depth, albedo, viewpoint以及illumination等.
相比使用监督信号的2D对手,作者说他们的效果更好!
图1说明
根据in-the-wild 图像恢复3D deformable object.
左
: 用于训练的数据格式(只有单一视角的图像本身,没有GT的3D 信息, multiple views或者其它任何先验模型)
右
: 一旦训练完成,我们的模型可以以很高的标准完成从单张图片重建3D模型的pose, shape, albedo以及illumination.
理解图像中的3D结构对于许多的CV应用来说,有着非常重要的意义。此外,当许多的神经网络看起来已经对图像的2D纹理信息(Texture)掌握的越来越好时,3D建模可以解释自然图像的许多可变性,并有可能提高图像的一般理解。
基于此,吴尚哲开始研究从2D图像中恢复3D结构的问题。我的理解是,吴同学为了区分同马普所的RingNet等利用先验知识的方法。
他的2D-3D恢复任务中,设定的第1个条件就是: no 2D or 3D GT information. 这样一来,搜集image collection的问题就被解决了,并极大的降低了将深度学习(Deep Learning)应用于这种任务的数据搜集难度。
第2个条件是: the algorithm must use an unconstrained collection of single-view images. 这样一来,通过单人的多个视角图片恢复3D model的方法的局限性被打破。这个条件是为了解决在很多情况下,我们只拥有一张still image(静态图片)去处理。
因此,吴同学的基于single-view image恢复3D deformable object的思路在这里被提出,目的是: 根据单张输入图片就能估计出其3D shape (produces as output a deep network that can estimate the 3D shape of any instance given a single image of it).
吴同学和他的老师们通过使用Auto Encoder结构,内在的将image decompose into 反射率, 深度, 光照以及viewpoint. (如上面所讲,无任何其它形式的监督信号)。
然而,然而,如果没有进一步的假设,将图像分解为这四个因素是ill-posed (病态) 问题。
为了寻求达成这一目标的minimal assumptions, 我们认为大多数物体类别在结构上是对称的。
假设一个物体是perfectly symmetric的,那么可以通过简单的镜像这张图来获得一个virtual的second view。
事实上,如果在mirrored images的对象关系可以获得(available),那么可以通过立体重建可以实现3D reconstruction.
基于此, 我们试图利用对称作为几何线索来约束分解(we seek to leverage symmetry as a geometric cue to constrain the decomposition)。
然而, 对特定物体而言,并没有完全对称这回事(无论是外观appearance还是shape).
举个例子,即便是一个物体: shape和albedo对称,但是由于光照不对称的影响,其appearance仍然有可能是不对称的。
针对这个问题, 我们首先通过explicitly model光照来探索潜在的对称结构。(我的理解是,即将光照视为一个额外的线索而非物体的本身属性?)
第2, 我们对模型进行augment来解释物体中潜在的不对称性。
通过1,2这2步,模型预测除了albedo等factor外的一个额外的dense map(其包含给定像素在图像中具有对称对等点的概率)
我们将上述的这些内容揉进了一个end2end的学习formulation, 在这个pipeline中,包括confidence map在内的所有components都是只从RGB图像中学习得到的。
我们观察到,可以通过flipping internal表示来强行保证symmetry, which is particularly useful for reasoning about symmetries probabilistically.
通过在一些数据集(包括人脸,猫脸,汽车)的测试。我们的效果很不错~,不但超过了同样不依赖于2D or 3D GT information的方法: 45(ICCVW 2019)Lifting AE
, 52(2019 arxiv)
. 还超过了使用keypoint supervision的方法37(NIPS2018的论文)
.
Lifting AE
45
ICCVW 2019
Szabo´ et al.
52
我们证明了我们训练过的人脸模型可以不经过微调就可以推广到非自然的图像,比如人脸画和卡通画。
为了评估本文的贡献与之前的image-based 3D reconstruction的方法的关系。相关工作主要从3个方面来考虑:
在表1中,我们对比了本文方法和之前的论文在这些情况上的异同。
文献 | 说明 | 作者 |
---|---|---|
43 |
2008年 巴塞尔大学, 引用705. 这篇就是BFM! | Pascal Paysan |
44 |
ECCV 2018 熟悉的michael black,熟悉的马普所…https://coma.is.tue.mpg.de/ 这篇就是大名鼎鼎的coma. | Michael J.Black |
16 |
华人做的, 斯坦福和snapchat. | 华人 |
47 |
相比其它直接预测单张图片的方法, 马里兰大学学院市分校和UCB的研究人员搞了根据图片预测N, A, L的方法,这个与本文思路很像,可能启发了本文方法. | |
60 |
帝国理工的IJCV2019,也是通过预测disentangled表情等内容,以便进行Face manipulation. | |
7 |
Neurips 2019, DIB-R,多伦多大学的Sanja Fidler课题组搞的(与Nvidia)。https://www.cs.utoronto.ca/~fidler/ 这篇论文主要就是在Soft Rasterizer基础上改了在三角形内部的插值方法. | Sanja Fidler |
52 |
瑞士伯尔尼大学 2019 本文进行定性试验对比的算法 | Szebo et al |
45 |
Lifting AE 来自2015年成立CentraleSupelec研究所和帝国理工。英法合流~~~ |
Structure from Motion SFM
:
struction from Motion的方法不适合从raw pixels of single view估计/重建3D deformable object. 因为它需要multiple views或者需要2D keypoint之间的supervision信号.
Structure from X SFX
:
很多如shading, silhouettes, texture, symmetry等monocular cues被用于替代SfM方法, 根据images恢复3D shape. 本文主要受到shape from symmetry (Mirror symmetry ⇒ 2-view stereo geometry 11, USC南加州大学 的. 2003年
) 和 shape from shading24 1989 MIT的大佬Berthold K.P. Horn & Michael J.Brooks 出版的一本书.
的启发.
Mirror symmetry ⇒ 2-view stereo geometry
11, USC南加州大学 的. 2003年
Shape From Shading
24 1989 MIT的大佬Berthold K.P. Horn & Michael J.Brooks 出版的一本书
.
34
或BFM43
) 来从单张图像构建出3D deformable object. 这些先验模型是使用特制的硬件和监督形式构建的,这对image that in-the-wild来说不太友好…(既有搜集数据的困难,又有构建模型的成本问题)SMPL
34 马普所 2015年做的
.
著名的Basel Face Model
43 经典的3D Morphable Model
吴同学整理了现在的研究人员的研究思路:
James Thewlis等人(牛津VGG组)通过使用同变性来学习dense landmarks (以便恢复object的2D 几何结构). Nips2017, Nips2018.
James Thewlis等人于Nips2017发表的论文.
54
DAE(Deforming autoencoders) 来自美国Stony Brook 大学和法国INRIA研究所。
Zhixin Shu 通过为AE限制一个很小的bottleneck embedding 来预测deformation field. 这种思路的输出形式与吴同学本文的思路很相似。ECCV2018
同样,对抗学习的思路也被引入到这里面来。
加藤裕治(东京大学)在CVPR2019发表的论文在raw images上训练一个判别器,并使用viewpoint作为额外的监督信号。
Learning View Priors for Single-view 3D Reconstruction. 来自东京大学的加藤裕治等人, CVPR2019,
28
.
瑞士伯尔尼大学的Szabo等人用adversarial learning来重建3D meshes, 但是并没有定量的进行分析。
还有一些人的试验有局限,比如Henzeler的试验里面的试验对象的背景都是白色的。
在试验部分,吴同学与45 Lifting AR
和52 Szabo et al.
做了对比,并验证了其方法的有效性。
以人脸为例,给定unconstrained collection of images,我们的目标是学习一个model, 其输入是图片实例,输出是3D 的shape, albedo, illumination以及光照.
如图2所示,作者管这个叫做 Photo-geometric Autoencoding。
因为吴同学的方法是基于对称的结构,但是问题在于类似物体的appearance并不是perfectly symmetric的。非对称情况很常见,为了解决这个问题,
吴童鞋:
1 显式的对不对称的illumination进行建模。
2 我们的模型可以通过probability map来估计每个像素在image有对称结构的概率(图2的conf ( σ , σ ′ ) (\sigma, \sigma^{'}) (σ,σ′)).
Photo-geometric autoencoding的假设: 输入的图像是中心对称的。
目标: 将I 映射为4个factors: (d, a, w, l).
depth map d
albedo image a
.
global light direction l
.
viewpoint w
.
Λ Λ Λ lighting函数是基于深度图,光线方向,以及albedo,从官方viewpoint(w=0) 生成的对象。 ∏ \prod ∏函数是模拟viewpoint从canonical到实际的变化,并基于canonical深度图d生成image I ^ \hat{I} I^. I ≈ I ^ I ≈ \hat{I} I≈I^ 用的是reconstruction loss.
在3D重建中利用对称性,需要在图像中识别对称的物体点。
本文用implicitly的方式实现:
假设depth和albedo在一个标准坐标系中重建,是关于一个固定的垂直面对称的。
这样做带来的好处是可以帮助model发现一个object的"canonical view",这对重建来说很重要。
那么怎么实现呢?
对a和d进行水平翻转: a’, d’. 如果直接要求 d = d’和a = a’, 这样很难达到一个平衡(我的理解是如果a = a’了,可能会让d和d’ 远离,这样可能就是永远达不到一个最好的tradeoff)
因此,吴同学天才的试图用间接的方式达成这个目的: 公式2.
好了, 对称性的约束通过上面被隐式实现了。
对不确定性进行建模对我们的任务尤其重要。
因为我们不只计算 I I I和 I ^ \hat{I} I^的误差,还计算 I I I和 I ^ ′ \hat{I}^{'} I^′的误差。
confidence map的存在使得我们可以挖掘input image的哪些位置可能不是对称的。
以人脸为例,头发通常不对称,那么,confidence map会给头发所在的位置assign更大的reconstruction uncertainty(因为头发不对称!)。
注意,这只是一个说明,具体的confidence map的值还是模型根据data-distribution自己学习出来的。
将实际世界的P点映射到像素p: 通过公式5的映射来实现。该模型假设有一个带有视场(FOV)的透视相机(perspective camera)。我们假设物体与摄像机的标称距离(nominal distance)约为1米。考虑到这些图像是围绕一个特定的物体剪裁的( Given that the images are cropped around a particular object),我们假设一个相对狭窄的FOV: 10度左右。
深度图d在canonical view下为每个像素(u, v)配置一个深度值 duv.
viewpoint w表示了欧式变换(R, T). w的前3个值表示rotation angle, 后3个值表示translation value.
map(R, T) 将canonical view的3Dpoints 转换到实际的view上。将canonical view的像素(u, v)warp到实际view的(u’, v’):黄色部分, 公式6.
最后,reprojection function ∏ \prod ∏将深度图 d d d 和viewpoint change w w w作为输入并将warp应用于canonical image J J J上去得到实际view的图像 I ^ \hat{I} I^.
构造每个像素的法线n的方式: t u v u t_{uv}^{u} tuvu为例, t u v v t_{uv}^{v} tuvv同理易得。法线即由2个向量的叉乘获得:
有了每个像素的法线方向以及漫反射和高光反射的系数 k s k_s ks和 k d k_d kd(由模型预测得到, tanh, 在0和1之间)
光的方向,利用tanh预测 l x l_x lx和 l y l_y ly,将光方向建模为一个球面。
在公式3(衡量重建误差)的计算式中,L1 loss的应用会有点问题:L1 loss对小的几何缺陷很敏感,容易导致重建出的图像比较模糊(blurry).
我们因此在L1 Loss的基础上,增加了perceptual loss来缓解这个问题。
经过试验验证, 吴童鞋法线relu3_3
of VGG16作为perceptual loss的特征提取层就很足够了。然后,结合公式3和公式7,整个网络的损失函数被设计为
L + λ p L p L + λp Lp L+λpLp 其中, λ p = 1 λp = 1 λp=1.
数据集: CelebA
, 3DFAW
, BFM
.
Metric: 由于基于投影相机的3D重建有固有的模糊问题,因此我们需要在评价中对此进行考虑。
在吴同学的实现中,他将warped depth map d ^ \hat{d} d^于GT depth map d ∗ d^* d∗进行了SIDE的计算. (绿色部分). 这里只比较有效的depth value.
此外,吴童鞋还通过对比normal(computed from ground truth depth and from the predicted depth, )的mean和variance,来有效的衡量surface reconstruction的效果。
按照吴同学的说法,由于本文方法相比baseline 3有较大的提升,而baseline 3是可以access to GT information的。这说明了本文的无监督方法能够学习到一个很好的3D representation。
由ablation study可以看出,albedo flip影响最大(2),其次是使用预测的阴影贴图而非根据depth & light direction计算得到(4).
然后就是depth flip(3)…
Table 3 的第7行关闭confidence map的含义是指在公式3和7中的loss里面,用固定的L1 和L2 loss即可,用固定的value来代替由网络预测出来的confidence map。 可以看出, 不用confidence map,精度并没掉太多(因为BFM的脸是高度对称的,没有头发)。但是variance 增加了很多。为了更好的理解confidence map的作用,吴同学对脸做了perturbation,以让其不对称
① depth & albedo 的AE网络没有用skip connection,这是因为输入和输出图像 are not spatially aligned。
② viewpoint和lighting用简单的encoder网络进行回归。
③ 对depth, albedo, viewpoint和lighting来说,最后的激活层是tanh;对confidence map来说,最后的激活层则是softplus。 由于光度和感知损失是在不同的分辨率下计算的,所以这四种置信图都是用相同的网络在不同的解码层预测的。而且,depth在过tanh之前,需要normalization一下。
④ Adam优化器,图像分辨率为64 x 64. 训练大约50k个迭代步, bs=64. 详细细节请看补充材料.
⑤ 我观察发现,Unsup3D中的所有网络里的normalization都是Group Normalization。
为了更好的评估confidence map对效果的贡献(本文对不确定性建模的意义)。
吴童鞋对BFM施加了非对称扰动(asymmetric perturbation). 生成了随机颜色的color patches(占图片的20到50%大小)并将其以0.5到1的一个alpha值与原来的数据混合。如图3所示。
接着,用没有confidence map的结构训练扰动后的数据。结果如表4所示。
可以看到, confidence maps可以让模型抵抗这种noise和扰动,而没有confidence map 的模型没有这种能力。
(confidence maps allow the model to reject such noise, while the vanilla model without confidence maps breaks.)
图4是人脸,汽车,猫脸重建的效果(CelebA and 3DFAW, cat faces from [66, 42] and synthetic cars from ShapeNet. )
即使在极端的面部表情的情况下,重建的3D脸也包含了鼻子、眼睛和嘴巴的细节。
为了进一步验证模型的效果,吴同学将其在celebA训练的模型应用于一系列 painting和cartoon drawings来验证效果。
如图5所示,尽管我们的方法在训练过程中从未见过这样的图像,但它仍然工作得很好。
由于我们的模型预测的object的canonical view是关于图像的垂直中心线的对称的。
我们可以可视化这些对称平面。 如图6所示,我们把centerline warp到实际view上去。
从图6a可以看出,本文方法能够在不对称的纹理和光照条件下,准确地发现对称线。
图6b是我们在图像上覆盖了预测置信映射数据(predicted confidence map),确认了我们的模型能够为非对称区域分配低置信值。
如表1所示,许多重建方法都或多或少的需要image annotations, prior 3D models或者2者都要。
但是如果没有这些标注或者先验知识,重建任务就变得非常困难,而且几乎没有可以直接比较的先前工作。
对45
,52
来讲,没法直接获得其代码和训练好的模型进行测试以便进行比较(定性和定量)。
吴同学从45
,52
的论文中截取相关内容,进行定性比较(图7),可以看出,我们的效果不错~。
定性对比. 可以看出本文方法能够恢复更高质量的shapes.
需要提一嘴的是,52
中的输入图像是由GAN生成的。
虽然我们的方法在诸如: extreme facial expression, abstract drawing等具有挑战性的scenarios下表现的不错。
但是我们也观察到了一些failure cases(图8). 在训练过程中,我们假定的是简单的Lambert shading model. 忽略了阴影(shadows)和高光(specularity). 这使得对于极端的光照条件或非lambert表面,效果非常差。如图8a所示。
由8c也可以看出,可能是由于side images的监督信号弱的原因,极端侧脸(extreme side face)重建的效果较差。这可以通过施加accurate reconstructions of frontal poses的约束来改善。
本文提出了一种可以根据某类对象的unconstrained single-view images(人脸等), 构造出逼真的3D deformable object的方法, 此方法能够获得高保真度的单目三维重建个体对象实例。
本文完全基于reconstruction loss而非任何其它监督信号或先验信息。
通过试验3,我们证明了对称关系和光照对于一个理想的非监督重建的重要性。
本文模型比使用2D keypoint supervision的方法效果好。
对于未来的工作,该模型目前使用depth map从一个canonical view表示三维形状,这对于具有大致凸形和自然标准视点的人脸等对象来说已经足够了。
对复杂的对象,可以扩展模型以使用多个规范视图或不同的3D表示,比如mesh或者voxel map。
我基于原版本换了一个可微分的renderer, 用的是pytorch3d,欢迎试用~
https://github.com/elliottwu/unsup3d
https://github.com/tomguluson92/unsup3D_pytorch3d