3D voxel grid的构建可以参考此篇Blog。
Convolutional Deep Belief Network (CDBN)的构建具有以下特点:
Convolutional Deep Belief Network (CDBN)的构建配置:
在训练完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。步骤如下:
50次上下采样迭代应足以获得补全后的形状 x \mathbf{x} x,以及对应的值 y y y。上述步骤可以并行运行,从而产生与潜在不同类别相对应的各种补全结果。最后一个类别标签对应于采样频率最高的类别。
只从一个角度进行目标识别不太稳定,会识别出其他的类型,如果能够给定当前视角,模型能够预测下一个视角将会对鉴别目标类别产生巨大作用。
输入:
输出:
原始识别不确定度 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)
上式中的条件熵可以通过下述步骤计算:
根据信息论, 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)
数据来源:
共有660类,151128个3D模型。
ModelNet40:40类,每类100个模型
ModelNet10:10类
每个模型沿着重力方向旋转12次(一次30°)
——应对旋转不变性
共有48000 CAD 训练
one Intel XEON E5-2690 CPU
one NVIDIA K40c GPU
训练了两天
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个模型用于测试。
NYU RGB-D dataset:10类, 4899个模型
先直接把在ModelNet上训练好的模型用在NYU数据集上
然后再微调
主要看形状重建的性能 p ( x u ∣ x o = x o ) p\left(\mathbf{x}_{u} \mid \mathbf{x}_{o}=x_{o}\right) p(xu∣xo=xo)。
按理说,一个好的视图选择方案应该可以产生更高的识别精度。
所提出的模型既可以识别,又能重建。