-
论文作者:Jiajun Wu, Yifan Wang, Tianfan Xue, Xingyuan Sun, William T. Freeman, Joshua B. Tenenbaum(MIT CSAIL, ShanghaiTech University)
-
收录情况:NeurIPS 2017
简介
即使在物体纹理、材质、光照和背景差异很大的情况下,人也能从单张图片快速识别出3D物体,是什么样的能力让这变成现实?
人类感知专家认为我们的3D感知能力依靠恢复2.5D 草图/轮廓图(英文对应sketch),草图包含了最基本的图片,比如深度与、表面法向量图。最基本的图片通过形状,把纹理、反照率、光照等外观方面的变化消除(这部分好理解)。我们再把2.5D sketch和形状鲜艳组合起来,重建一个整个3D物体(这段写作纯粹是为了引出下文重点,其实有点扯)。
计算机科学领域,根据表面、物体、场景重建3D形状的工作有很多 [Kemelmacher-Shlizerman and Basri, 2011], objects [Tappen et al., 2003], and scenes [Hoiem et al., 2005, Saxena et al., 2009]。近年来,研究者视图用深度学习的方法解决这个问题,这些方法通常是用单周RGB图直接回归3D物体形状。
与上述方法不同的是,本文提出了一种两阶段法,首先恢复2.5D sketch,利用2.5D sketch再恢复物体形状,这么做有几点好处:
-
使用 2.5D sketch 缓解了domain transfer带来的问题(训练集表现好,测试集表现差),因为利用单张图片进行3D重建,高度依赖于物体形状这样的先验知识。
-
从2.5D sketch恢复3D shape,能让模型在合成数据上训练,这样避免了获取大量真实标注图片的成本。但存在的问题是恢复3D shape,可能不够逼真。
-
提出了可微分的重投影函数,维护2D-3D一致性。
主要方法
MarrNet 包含3个部分:
- 2.5D sketch estimator
-
3D shape estimator
- projection consistency function
- 通过设计损失函数,使得估计的3D物体结构和推理的2.5D sketch保持一致
- 2.5D Sketch Estimation
- input: 2D rgb image
- output: 2.5D sketch,由几个维度刻画
- 物体表面法向量
- (像素)深度值
- 物体轮廓图 —— silhouette
- 使用2.5D轮廓估计的目的是仅保留物体本身的特征(形状、深度、大小),去掉环境因素(光照、背景) —— 蒸馏
- 采用 encoder-decoder 架构进行 2.5D sketch 估计
- 编码器是 ResNet-18,把256x256的图片,编码成512个8x8的特征图
- 解码器包含4个这样的block:5x5 全卷积 + ReLU activation
- 3D Shape Estimation
- input: surface normal and depth image(这些东西从2.5D sketch得到)
-
output: 3D object
-
因为有了2.5D sketch,所以这部分能在合成数据上训练,而且不用担心domain adaption问题,但不足之处是生成的3D object,真实感不足,一看就是生成出来的
- 同样采用encoder-decoder结构
- encoder: 5个block(conv + ReLU + pooling)$\rightarrow$ $2~fc~ layers$
- 参考 Girdhar et al., 2016
- 把输入数据编码成 200 维向量,给到decoder
- decoder: 5个block(conv + ReLU)$\rightarrow$ $128 \times 128$ voxel-based reconstruction of the input
- 参考 Wu et al., 2016b
- encoder: 5个block(conv + ReLU + pooling)$\rightarrow$ $2~fc~ layers$
- Reprojection Consistency
- 一些基于神经网络的方法,强制加入 估计的3D形状 和 2D表示 的一致性约束(一般是通过损失函数)
- 本文也加入3D shape和2.5D sketch之间的一致性约束,共有两项
- depth reprojection loss
- surface normal reprojection loss
- 一些形式化表示
- $v_{x,y,z}$ 表示3D 体素网格中位置$(x,y,z)$对应的数值,且 $\forall~~ x,y,z~~ v_{x,y,z} \in [0,1]$ 成立
- $d_{x,y}$ 表示位置$(x,y)$对应的深度值(???我理解这是说的像素值)
- $n_{x,y} = (n_a, n_b, n_c)$ 表示估计的表面法向量
-
本文有一个重要假设:认为从3D到2D的投影是正交的(我理解为主投影,原文是We assume orthographic projection in this work)
- Depth reprojection loss
- 这部分损失函数,设计目标是让体素值 $v_{x,y,d_{x,y}}$ 为1,因为此时深度值正好等于 $d_{x,y}$,深度小于 $d_{x,y}$ 时,体素值为0
- 具体的损失函数如下
- 损失函数对 $v_{x,y,z}$ 的导数
- 当 $d_{x,y} = \infty$ 时,深度值进入一种特殊情况 —— 形状轮廓(???没理解这个因果关系)
- 当线段与形状没有交集时,体素值应当全为0
- Surface Normal reprojection loss
- 向量 $n_x = (0, -n_c, n_b)$ 和 $n_y = (-n_c, 0, n_a)$与向量$n = (n_a, n_b, n_c)$正交,对前2个向量归一化得到
- $n_x^{\prime} = (0, -1, n_b/n_c)$
- $n_y^{\prime} = (-1, 0, n_a/n_c)$
- 这两个向量位于点$(x,y,z)$对应的 surface plane(我理解为切面,因为前面说到了正交,而且是点$(x,y,z)$对应的平面,只能是切面)
- 本损失函数试图保证 $(x,y,z) \pm n_x^{\prime}$ 和 $(x,y,z) \pm n_y^{\prime}$ 等于1,来匹配估计到的 surface normals
- 上述约束仅在 目标体素 位于估计到的轮廓内部时适用(???不懂在说什么,道理是什么)
- 令 $z = d_{x,y}$,Surface Normal reprojection loss 表示为
- 损失函数的导数为
- 向量 $n_x = (0, -n_c, n_b)$ 和 $n_y = (-n_c, 0, n_a)$与向量$n = (n_a, n_b, n_c)$正交,对前2个向量归一化得到
- 训练模式
- 两阶段训练模式
- 第一阶段:训练2.5D sketch estimation module
- 第二阶段:训练3D shape estimation module
- 预训练的时候使用的都是 synthetic data,后来调优时候使用的是 real images
- synthetic data 来自 ShapeNet objects 的合成图片,带有ground truth:surface normal, depth, silhouette annotations $\rightarrow$ L2 loss
- 3D interpreter(我理解为3D shape estimation)在ground truth体素网格做监督 $\rightarrow$ cross entropy loss
- 重投影一致性损失函数用来调优 3D shape estimation
- 这部分输入是上一个模块的输出:normal, depth, and silhouette
- 调优用的数据是 real images
- 本文声称
- 直接学习得到物体形状,能与2.5D sketch吻合较好,但是3D物体的外观真实性较差
- 原因是跳过2.5D sketch,直接学习物体形状容易过拟合(并没有提供很多证据)
- 在训练3D shape estimation module时,固定 decoder,仅调优encoder
- 测试时,MarrNet能够自监督
- e.g. 模型能在不带标注的单张图片 fine-tune(没明白这是在说什么,以及有什么作用)
- 事实上,模型在每张图片迭代40次(为什么要用单张图片调优,我觉得这是一个平均数字吧 $\rightarrow$ 总共迭代次数 ÷ 图片数)
- 两阶段训练模式
实验评估
- 3D Reconstruction on ShapeNet
- ShapeNet 的图片是合成的,做实验时只用了 chairs 这类物体
- 从 Sun database [Xiao et al., 2010] 随机取了一些背景,把chairs放在物体之前;渲染对应的RGB、depth、surface normal、轮廓图片
- 使用了 physics-based 渲染器 [Jakob, 2010]
- 对于6778 个ShapeNet chairs,渲染了20张随机视角的图片(???实验数据量是不是不足)
- 第4/5列是不经过2.5D sketch直接预测3D shape,相当于一个消融实验
- 3D Reconstruction on Pascal 3D+
- PASCAL 3D+ dataset 中的3D物体来自真实图片,本文测试用的数据集与[Tulsiani et al., 2017]保持一致
- 在 ShapeNet 训练,在PASCAL 3D+调优,再在PASCAL 3D+的测试集评估
- 调优时不像前人的工作 [Tulsiani et al., 2017],本文的输入没有轮廓 silhouette,轮廓是要调优的对象,而不是输入
- 对比方法:之前SOTA DRC [Tulsiani et al., 2017]
- 为数不多的表格,定量分析结果
- 3D Reconstruction on IKEA
- 包含IKEA家具图片,带有准确的3D shape和姿态标签
- 数据集很有挑战性,因为很多物体被遮挡、裁剪程度很高
- 失败案例
- 因为这只是定性分析,所以结果很可能放了一部分,还有失败的cases没放
- 扩展实验
- 我的感受:只有椅子这类3D重建,能做的事情太少,而且方法也很复杂,说明这个问题还是很有挑战的
- 除了椅子这类,还把MarrNet应用到了 car、airplane 3D模型建立