赞
踩
点云是表达3D几何结构的一个重要形式,具有如下的特性:
(I) 稀疏性:每张图片对应的点云数据反应的是场景中物体的表面,在3D空间中即为曲面,体积为零,所以在3D空间中来看, 点云数据是非常稀疏的。
(II) 无序性:假设有
n
n
n个3D点形成的点云数据集
A
:
=
{
p
1
,
p
2
,
.
.
.
,
p
n
}
A:=\{p_1,p_2,...,p_n\}
A:={p1,p2,...,pn},
σ
\sigma
σ表示
n
n
n个元素的任意一个置换,则
{
p
σ
(
1
)
,
p
σ
(
2
)
,
.
.
.
,
p
σ
(
n
)
}
\{p_{\sigma(1)},p_{\sigma(2)},...,p_{\sigma(n)}\}
{pσ(1),pσ(2),...,pσ(n)}表示的点云数据集与
A
A
A相同,即它们表达的是同一个场景的3D几何结构。
(III) 刚体变换不变性:点云在刚体变换(旋转或平移)下,仍表示同一个场景。
~~~~~~ 特别地,由于点云的稀疏性,导致其在3D(或者更高维)空间中,形状不规则,即点与点之间的相邻关系非常不规则。为了应用规则的3D卷积,进行权值共享,一个直接的办法就是把稀疏点云稠密化,这就是体素表示。这样3D卷积就可以在规则的3D网格上进行(类似2D卷积作用在规则的2D网格上)。但缺点就是增加了大量不必要的数据点,增加了计算复杂度。
~~~~~~~~ 为了直接以点云为输入,进行端到端训练,PointNet [1] 采用了下面的策略:
(a) 采用关于置换不变的对称函数,处理点云的无序性问题:例如在最后的特征层上,应用关于置换不变的对称函数
γ
∘
max
\gamma\circ\max
γ∘max, 易见
γ
∘
max
{
h
(
x
1
)
,
h
(
x
2
)
,
.
.
.
,
h
(
x
n
)
}
=
γ
∘
max
{
h
(
x
σ
(
1
)
)
,
h
(
x
σ
(
2
)
,
.
.
.
,
h
(
x
σ
(
n
)
)
}
\gamma\circ\max\{h(x_1),h(x_2),...,h(x_n)\}=\gamma\circ\max\{h(x_{\sigma(1)}),h(x_{\sigma(2)},...,h(x_{\sigma(n)})\}
γ∘max{h(x1),h(x2),...,h(xn)}=γ∘max{h(xσ(1)),h(xσ(2),...,h(xσ(n))}其中
h
(
x
i
)
h(x_i)
h(xi)表示隐藏层特征,
σ
\sigma
σ是
n
n
n个元素的任意一个置换。通过这样的操作之后,从
n
n
n个点形成的点云中所提取的特征就与这
n
n
n个点的顺序无关。
(b) 通过显示构造 T T T- N e t Net Net网络来学习仿射变换矩阵(具体见下面1.2节的分析),从而增强网络对点云数据刚体变换的鲁棒性。
下面分析PointNet的网络结构及主要模块:
PointNet [1] 的网络结构图如下:
从上图可知,PointNet主要是用多层感知机mlp提取特征,用于进行分类或分割任务;同时为了使得网络对无序点云数据以及刚体变换具有鲁棒性,PointNet有针对性地设计了相应的Symmetry Function for Unordered Input 和 Joint Alignment 网络,这两个模块应该是PointNet能够直接有效处理点云数据的关键。
接下来,主要介绍这两个模块:
为了使得网络输出与网络输入的顺序无关,一个直观的方式是对输入数据进行置换增强,这也是深度学习中常见的方式(例如,通过对数据进行旋转,使得网络对数据的旋转更加稳定,也即增强了网络关于数据旋转的不变性)。但是这需要考虑对数据进行所有的置换变换,这无疑增大了运算复杂度。
如果设计一个函数,使得该函数对其自变量具有置换不变性,即考虑到点云数据的无序性,就会使得问题变得简单些。一些常见的具有置换不变性的对称函数有, + , ∗ , m a x +,*,max +,∗,max等。PointNet文中主要用了 γ ∘ m a x \gamma\circ max γ∘max,其中 γ \gamma γ是一个连续函数,具体形式可参见原文[1]中的Theorem 1的证明过程。那么易见, γ ∘ max { x 1 , x 2 , . . . , x n } = γ ∘ max { x σ ( 1 ) , x σ ( 2 ) , . . . , x σ ( n ) } \gamma\circ\max\{x_1,x_2,...,x_n\}=\gamma\circ\max\{x_{\sigma(1)},x_{\sigma(2)},...,x_{\sigma(n)}\} γ∘max{x1,x2,...,xn}=γ∘max{xσ(1),xσ(2),...,xσ(n)}, σ \sigma σ为 n n n个元素 { 1 , 2 , . . . , n } \{1,2,...,n\} {1,2,...,n}的任意一个置换。将前面的 { x i : i = 1 , 2 , . . . n } \{x_i:i=1,2,...n\} {xi:i=1,2,...n}用来表示PointNet中的 n n n个点的特征,则这就对应上图中的 m a x p o o l max ~ pool max pool操作模块。
这个网络模块主要用于增强PointNet对3D点云数据刚体变换的鲁棒性。PointNet通过设计一个 T T T- N e t Net Net来实现数据以及feature map 的刚体变换, T T T- N e t Net Net的主要结构如下:
上图中左图表示在3D点云数据上的仿射变换,右图则表示在feature map 上的仿射变换。PointNet就是通过
T
T
T-
N
e
t
Net
Net训练两个仿射矩阵
M
3
×
3
,
M
64
×
64
M_{3\times 3},M_{64\times 64}
M3×3,M64×64,分别对应数据和feature map上的仿射变换。因为
T
T
T-
N
e
t
Net
Net的目的是近似刚体变换,所以需要正交化约束这两个矩阵,
L
r
e
g
=
∣
∣
I
−
M
M
T
∣
∣
F
L_{reg}=||I-MM^T||_F
Lreg=∣∣I−MMT∣∣F其中,
M
∈
R
3
×
3
(
o
r
R
64
×
64
)
M\in R^{3\times 3}(or ~R^{64\times 64})
M∈R3×3(or R64×64)表示训练得到的两个仿射矩阵,
I
I
I表示相应维度的单位矩阵,
F
F
F表示Frobenius范数。
T
T
T-
N
e
t
Net
Net具体实现如下,
K
=
3
K=3
K=3或
64
64
64:
DNN的成功在于其强大的近似函数的能力。上面说了这么多,不禁要问,这样设计的网络是否具有足够的能力来近似定义在点云数据上的函数。下面的定理,从理论上有效地说明了pointnet的近似能力:
~~~~~~
利用网络对点云数据进行分类或这分割,本质上是模拟近似这样一个映射:定义域为点云数据,值域为分类或分割标签(注意,这样的映射可能不存在或者很复杂),这个映射类似上面定理中的函数
f
f
f,而上面定理中的
γ
∘
max
\gamma\circ\max
γ∘max项就是网络学到的对
f
f
f的近似。所以上面的定理能够理论上保证PointNet的近似能力。
==============================================================================================
总结:从上面的分析来看,PointNet主要通过设计对称函数使得网络输出与输入点云的顺序无关;同时,由于3D空间中点云表示的物体具有刚体变换不变性,PointNet则通过增加 T T T- N e t Net Net来增强网络对点云数据刚体变换的鲁棒性。
不过从上面的对PointNet的分析来看,网络都是对整个点云进行全局处理的,网络并没有考虑点云中数据的局部邻域信息。这就是PointNet++的工作,接下来会分析PointNet++工作。。。。。。
[1.] PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。