3D ShapeNet:一种体素形状的深度表示方法
1.摘要
- 提出了一种将几何3D形状表示为3D体素网格中的二值变量概率分布方法,然后用卷积深度网络进行处理。
- 不仅可以对3D形状进行操作,2.5D的深度图也可以处理,可以使用单视图的方法,也可以使用Next-Best-View 优化识别率。
- 构造了ModelNet,一个规模很大的CAD模型3D数据集,用于3D深度训练。
2.引言
- 本文探寻一种能够用于目标识别和形状补全的通用3D形状表示方法。
- 当类别识别的第一个视角不充分时,识别系统还需要找到更优的观察视角。
3.相关工作
- Assembly-based approach
- Smooth interpolation-based approach
- Template-based approach
- Deep learning-based approach
- Next-Best-View problem
4.3D ShapeNets
3D voxel grid的构建可以参考此篇Blog。
Convolutional Deep Belief Network (CDBN)的构建具有以下特点:
- 通过卷积权值共享的方法减少模型参数。
- 不使用任何的池化操作(因为在形状重建的时候会导致很大的不确定性)。

Convolutional Deep Belief Network (CDBN)的构建配置:
- 网格大小为30×30×30,在表示形状的时候,要在上下左右空出3个多余的格子,减少卷积边界的误差,所以目标形状的范围是24×24×24。
- 第一层:使用48个大小为6的卷积核,步数为2。
- 第二层:使用160个大小为5的卷积核,步数为2.
- 第三层使用512个大小为4的卷积核。
- 第四层:全连接,有1200个隐藏单元。
- 第五层:全连接,有4000个隐藏单元,输入为multinomial label variables和Bernoulli feature variables(不清楚说的是啥,看图是输入标签和第四层特征)
- 训练的时候采用一层一层的预训练模式,前四层的训练方式为standard Contrastive Divergence,后两层的训练方式为Fast Persistent Contrastive Divergence(FPCD)。
- 微调阶段使用wake sleep algorithm。第一层只学习感知域中非空的信号,还使用了sparsity regularization 。最后,we duplicate the label units 10 times to increase their significance.(不懂,有知道的小伙伴可以在评论区讨论一下)
4. 2.5D Recognition and Reconstruction
4.1 View-based Sampling
在训练完CDBN后,模型学习到了体素数据 x {\mathbf{x}} x和目标类别 y ∈ { 1 , ⋯ , K } y \in \{ 1, \cdots ,K\} y∈{1,⋯,K}的联合分布函数 p ( x , y ) p({\mathbf{x}},y) p(x,y)。尽管模型是在3D形状上训练的,但是能够识别2.5D的深度图。

将2.5D深度图转换为体素表示,分成free、surface和occluded三个部分。free和surface被认为是可见的 x o \mathbf{x}_o xo,occluded是不可见的 x u \mathbf{x}_u xu,整体表示为 x = ( x o , x u ) \mathbf{x}=(\mathbf{x}_o,\mathbf{x}_u) x=(xo,xu)。
识别物体类别的任务可以表示为 p ( y ∣ x o ) p(y|{\mathbf{x}_o}) p(y∣xo),通过Gibbs sampling进行求解,具体可以参考此篇Blog。步骤如下:
- 将 x u \mathbf{x}_u xu初始化为随机值,并将数据样 x = ( x o , x u ) \mathbf{x}=(\mathbf{x}_o,\mathbf{x}_u) x=(xo,xu)自底向上传播,以从 p ( y ∣ ( x o , x u ) ) p(y|({\mathbf{x}_o}, {\mathbf{x}_u})) p(y∣(xo,xu))中获取标签 y y y的样本。
- 然后,High level signal向下传播到体素 x \mathbf{x} x的采样。
- 对 x {\mathbf{x}} x中可见的体素 x o {\mathbf{x}_o} xo进行截断,再进行自底向上的传播。
50次上下采样迭代应足以获得补全后的形状 x \mathbf{x} x,以及对应的值 y y y。上述步骤可以并行运行,从而产生与潜在不同类别相对应的各种补全结果。最后一个类别标签对应于采样频率最高的类别。
4.2 Next-Best-View Prediction
只从一个角度进行目标识别不太稳定,会识别出其他的类型,如果能够给定当前视角,模型能够预测下一个视角将会对鉴别目标类别产生巨大作用。
输入:
- 未知目标的单副可见体素 x o {\mathbf{x}_o} xo
- 有限个下一个视角的可选列表 { V i } \{ {{\mathbf{V}}^i}\} {Vi}(相机的旋转和平移)
输出:
- 从列表中选出最优的视图减少识别不稳定性
原始识别不确定度 H H H由 y y y的熵给出,该熵以观测到的 x o \mathbf{x}_o xo为条件:
H
=
H
(
p
(
y
∣
x
o
=
x
o
)
)
=
−
∑
k
=
1
K
p
(
y
=
k
∣
x
o
=
x
o
)
log
p
(
y
=
k
∣
x
o
=
x
o
)
\begin{aligned} H &=H\left(p\left(y \mid \mathbf{x}_{o}=x_{o}\right)\right) \\ &=-\sum_{k=1}^{K} p\left(y=k \mid \mathbf{x}_{o}=x_{o}\right) \log p\left(y=k \mid \mathbf{x}_{o}=x_{o}\right) \end{aligned}
H=H(p(y∣xo=xo))=−k=1∑Kp(y=k∣xo=xo)logp(y=k∣xo=xo)
其中,条件概率
p
(
y
∣
x
o
=
x
o
)
p(y \mid \mathbf{x}_{o}=x_{o})
p(y∣xo=xo)可以通过从
p
(
y
,
x
u
∣
x
o
=
x
o
)
p(y, \mathbf{x}_{u} \mid \mathbf{x}_{o}=x_{o})
p(y,xu∣xo=xo)中取样并将
x
u
\mathbf{x}_{u}
xu边缘化来近似。
当照相机被移动到另一个视图 { V i } \{ {{\mathbf{V}}^i}\} {Vi}时,就会有一些以前未被观察到的体素 x u \mathbf{x}_{u} xu就会根据它的实际形状被观察到。不同的视图 { V i } \{ {{\mathbf{V}}^i}\} {Vi}将导致这些未观察到的体素 x u \mathbf{x}_{u} xu的可见性不同。

在上图中,以 ( x o , x u ) (\mathbf{x}_o,\mathbf{x}_u) (xo,xu)为条件,可以采样出很多可能的形状,然后根据每一种假设可以获得 { V i } \{ {{\mathbf{V}}^i}\} {Vi}视角下的深度图。通过这种方式,我们可以仿真出不同样本在不同视角下新的深度图。
令
x
n
i
=
Render
(
x
u
,
x
o
,
V
i
)
\
x
o
\mathbf{x}_{n}^{i}=\operatorname{Render}\left(\mathbf{x}_{u}, \mathbf{x}_{o}, \mathbf{V}^{i}\right) \backslash \mathbf{x}_{o}
xni=Render(xu,xo,Vi)\xo表示下一个视角下的新的可见体素,
x
n
i
⊆
x
u
{\mathbf{x}}_n^i \subseteq {{\mathbf{x}}_u}
xni⊆xu,是未知变量,将在以下等式中被边缘化。不确定度表示为:
H
i
=
H
(
p
(
y
∣
x
n
i
,
x
o
=
x
o
)
)
=
∑
x
n
i
p
(
x
n
i
∣
x
o
=
x
o
)
H
(
y
∣
x
n
i
,
x
o
=
x
o
)
\begin{aligned} H_{i} &=H\left(p\left(y \mid \mathbf{x}_{n}^{i}, \mathbf{x}_{o}=x_{o}\right)\right) \\ &=\sum_{\mathbf{x}_{n}^{i}} p\left(\mathbf{x}_{n}^{i} \mid \mathbf{x}_{o}=x_{o}\right) H\left(y \mid \mathbf{x}_{n}^{i}, \mathbf{x}_{o}=x_{o}\right) \end{aligned}
Hi=H(p(y∣xni,xo=xo))=xni∑p(xni∣xo=xo)H(y∣xni,xo=xo)
上式中的条件熵可以通过下述步骤计算:
- 从 p ( x u ∣ x o = x o ) p({{\mathbf{x}}_u}|{{\mathbf{x}}_o} = {x_o}) p(xu∣xo=xo)中采样出足够的 x u \mathbf{x}_u xu
- 做3D rendering,得到深度图,从 x u \mathbf{x}_u xu中得到 x n i \mathbf{x}_{n}^{i} xni
- 利用 x n i \mathbf{x}_{n}^{i} xni计算 H ( p ( y ∣ x n i = x n i , x o = x o ) ) H\left(p\left(y \mid \mathbf{x}_{n}^{i}={x}_{n}^{i}, \mathbf{x}_{o}=x_{o}\right)\right) H(p(y∣xni=xni,xo=xo))
根据信息论, H − H i = I ( y ; x n i ∣ x o = x o ) ≥ 0 H-H_{i}=I\left(y ; \mathbf{x}_{n}^{i} \mid \mathbf{x}_{o}=x_{o}\right) \geq 0 H−Hi=I(y;xni∣xo=xo)≥0是以 x o \mathbf{x}_{o} xo为条件, y y y和 x n i \mathbf{x}_{n}^{i} xni之间的相互信息。
因此,视角优化算法便是最大化这个相互信息:
V
∗
=
arg
max
V
i
I
(
y
;
x
n
i
∣
x
o
=
x
o
)
\mathbf{V}^{*}=\arg \max _{\mathbf{V}^{i}} I\left(y ; \mathbf{x}_{n}^{i} \mid \mathbf{x}_{o}=x_{o}\right)
V∗=argVimaxI(y;xni∣xo=xo)
5.ModelNet: A Large-scale 3D CAD Dataset
数据来源:
- 3D Warehouse
- 3D模型搜索引擎 Yobi3D
- SUN database
- Princeton Shape Benchmark
- 打标签工具 Amazon Mechanical Turk
共有660类,151128个3D模型。
6.实验
ModelNet40:40类,每类100个模型
ModelNet10:10类
每个模型沿着重力方向旋转12次(一次30°)
——应对旋转不变性
共有48000 CAD 训练
one Intel XEON E5-2690 CPU
one NVIDIA K40c GPU
训练了两天
6.1Classification and Retrieval
Classification,将第五层看作特征,再加一层线性SVM作为输出层,取每一类的平均值,对比的算法包括Light Field descriptor (LFD, 4,700 dimensions)、Spherical Harmonic descriptor (SPH, 544 dimensions)。
Retrieval,L2 distance被用于两种模型间的相似性。评价指标为recision-recall curve (AUC) 和mean average precision (MAP)。
38,400模型进行训练,9600个模型用于测试。


6.2 View-based 2.5D Recognition
NYU RGB-D dataset:10类, 4899个模型
先直接把在ModelNet上训练好的模型用在NYU数据集上

然后再微调

6.2Next-Best-View Prediction
主要看形状重建的性能 p ( x u ∣ x o = x o ) p\left(\mathbf{x}_{u} \mid \mathbf{x}_{o}=x_{o}\right) p(xu∣xo=xo)。

按理说,一个好的视图选择方案应该可以产生更高的识别精度。

7.总结
所提出的模型既可以识别,又能重建。