1 引言
早期三维场景的识别与分割主要有三种方法,一是多视角,即将多张二维图片堆叠成三维立体做以处理,二是体素化,即对若干能表达实体的立方体素进行处理,三是非欧式处理。点云相较来说容易获取且表达简单,PointNet就是一种点云的识别与分割的方法。
2 分析
点云主要有三个性质,它决定其不可使用简单的深度学习方法进行分割处理;
一是无序性,即点云的输入是无序的,但是其在空间中呈现的效果不会因顺序发生改变;
二是空间相关性,点云常表示为
(
x
,
y
,
z
,
R
G
B
)
(x,y,z,RGB)
(x,y,z,RGB)格式,空间互相临近的点会对全局特征以及点特征造成影响;
三是转换不变性,即点云经过彷射变换后,其经过神经网络后的输出值不应有变换。
3 PointNet
针对点云在深度学习中的特性,
P
o
i
n
t
N
e
t
PointNet
PointNet提供了新思路以解决。
3.1 对称函数
对称函数的对称是针对输入值而言,比如定义 f ( a , b ) = a + b f(a,b) = a + b f(a,b)=a+b则对于输入值 ( 1 , 2 ) (1,2) (1,2)与 ( 2 , 1 ) (2,1) (2,1)而言 f ( 1 , 2 ) = f ( 2 , 1 ) f(1,2) = f(2,1) f(1,2)=f(2,1),函数的输出结果并未因为输入值的顺序而发生改变,这样的函数我们称为对称函数。
如何显式的去除点云的无序性所带来的影响呢?此处采用了 M a x P o o l i n g Max Pooling MaxPooling最大池化函数,它将取出矩阵每一列中最大的元素。
3.2 T-net
T
−
n
e
t
T-net
T−net是一个自适应生成彷射矩阵的神经网络,它将会使输入矩阵转换至合适后续操作、提升结果质量的状态。
3.3 处理流程
1)输入点云数据
n
×
3
n\times3
n×3矩阵,经历预处理环节,借由
T
−
n
e
t
T-net
T−net生成彷射矩阵对其进行变化,使之转换为更良好的角度;
2)历经MLP(64,64)生成
n
×
64
n\times64
n×64矩阵,借由
T
−
n
e
t
T-net
T−net生成彷射矩阵对其进行变化,在特征层面对齐;
3)历经MLP(64,128,1024)生成
n
×
1024
n\times1024
n×1024矩阵;
4)使用对称函数
M
a
x
P
o
o
l
i
n
g
Max Pooling
MaxPooling,取出全局向量
1
×
1024
1\times1024
1×1024;
5)历经MLP(512,526,k)生成
1
×
1\times
1×
k
k
k矩阵。
这里的
1
×
1\times
1×
k
k
k矩阵是输入点云相对于
k
k
k种对象的得分,即得分越高,该输入是这类对象的概率越大。
至此完成点云识别。
6)取出2)中获得的处理完的特征向量,将其与4)中的全局向量做以拼接;
7)经由MLP(512,256,128,128,m)生成
n
×
n\times
n×
m
m
m矩阵。
这里的
n
×
n\times
n×
m
m
m矩阵是每一点对于
m
m
m种对象的得分。
自此完成点云分割。
4 说明
4.1 无序性
参见本人在浅层神经网络对于神经元的描述,我们对于输入值提供了MLPs,最后一层提供了1024个神经元,即1024个思考角度,这1024个神经元对输入点进行思考,最终生成 n × 1024 n\times1024 n×1024矩阵,矩阵中的每一个元素代表了对应神经元对该点的思考结果。
M a x P o o l i n g Max Pooling MaxPooling对每一列进行操作,选出了该列最大的一个值,共计 1024 1024 1024个,该值的选择不以行作为依据,即初始点输入的顺序不会改变最终 M a x P o o l i n g Max Pooling MaxPooling的结果,即成功解决了输入点无序性的问题。
同时,
M
a
x
P
o
o
l
i
n
g
Max Pooling
MaxPooling的输出值将输入值以
1024
1024
1024个点所概括,表达了点云数据的全局性质,当输入值发生微小扰动,其结果也不会对输出产生较大影响,提供了较高的稳定性。
4.2 空间相关性
在点云分割中将特征向量与全局向量结合,充分考虑了点与点,点与实体空间关系对结果造成的影响
4.3 转换不变性
通过
T
−
n
e
t
T-net
T−net使问题的到了解决,无论输入如何,都将自适应的转换为恰当的角度。
5 总结
亮点: M a x P o o l i n g Max Pooling MaxPooling解决了无序性的问题并提供了模型稳定性。