目录
1.数据特征
1)xyz位置坐标形成的空间结构
2)反射强度
2.数据挑战
1)不规则性
2)非结构性
3)不完整性
3.点云深度学习方法
PART1 -- 间接方法
1)基于体素
2)基于投影(包括多视图)
PART2 -- 直接方法
邻域搜索
边卷积(EdgeConv)公式
1)PointNet And PointNet++
2)基于图的方法
这篇博客是对点云深度学习方法的一个简单总结,之后会继续修改,欢迎指正。
1.数据特征
1)xyz位置坐标形成的空间结构
2)反射强度
按照强度的灰白颜色渲染:
2.数据挑战
1)不规则性
由于设备和使用方式等的不同,采集到的点云密度不相同,一个点云中的不同区域也不相同。
2)非结构性
点云不同于图像数据,图像数据按照栅格矩阵排列,是结构化的数值。而点云作为空间中离散的点,没有固定的结构用来计算,同时采集点云过程中可能产生一些随机的噪声点,必须通过某种手段去除这些噪点。
3)不完整性
由于物体遮挡,采集到的点云可能不完整。天气也会对点云产生影响,雨雾天气对lidar采集点云数据产生的影响较大。
3.点云深度学习方法
PART1 -- 间接方法
将非结构化的点云通过某种方式变成结构化的数据,接着就可以使用传统图像领域积累的大量方法进行学习。
1)基于体素
首先对点云建立体素,以体素近似代表点云形成结构化的数据,然后对结构化的三维数据应用3D卷积,3D-GAN等常见的深度学习方法。
2)基于投影(包括多视图)
用投影的办法,将点云转化成栅格图片,由于点云是三维坐标,因此可以从多个视角投影到栅格,进而再使用2D图像上的方法进行学习和融合。
Multi-View Convolutional Neural Network(MVCNN):
PART2 -- 直接方法
邻域搜索:
K近邻、半径搜索等
边卷积(EdgeConv)公式:
一种聚合节点信息的方法
:参数表示节点i和与节点i相连的节点j,不同方法中的参数有所不同
:Θ表示c'*c维的矩阵(类似图像卷积的卷积核),参数X的节点特征维度为c,矩阵乘法Θ*X将使特征维度变为c'维,然后经过一个RELU激活的MLP(全连接层)
:聚合函数,可以是sum/avg/min/max
经过一次边卷积后,每个节点将融合与之连接点的信息,特征维度将变为a维。该公式可以 广泛表达下述方法。
1)PointNet And PointNet++
PointNet:
PointNet创造性的提出直接针对点云的深度学习方法。
对于PointNet,边卷积表示为 --
由于PointNet没有考虑邻域节点之间的联系,
的参数只有Xi。
PointNet特征提取架构(每个节点单独经过共享参数的边卷积):
完整的PointNet架构:
PointNet++:
针对PointNet没有考虑领域节点的联系,改进并诞生了PointNet++。
对于PointNet++,边卷积表示为 --
考虑了领域节点信息的PointNet++,
为
和
矩阵的concate,其中Xj代表邻域节点j,Xj-Xi代表节点i与邻域节点的相对距离。
PointNet++特征提取架构:
完整的PointNet++架构:
2)基于图的方法
点云可以连接边从而构成图论中的图,因此,基于图的方法有很大的优势,只要对点云连边建立一个图,就可以使用一般的图卷积神经网络方法。
DGCNN (Dynamic Graph CNN)
DGCNN采用K近邻搜索,建立Graph。特别的,搜索是在特征空间上进行的,在进行边卷积后,特征空间将变成公式中的c'维,在每一次边卷积后神经网络将动态搜索邻域建立Graph,使得神经网络拥有了更进一步的自我调整能力,这也是DGCNN名字的由来。
DGCNN的边卷积表示为 --
其中Xi代表节点i,Xj-Xi代表节点i与邻域节点的相对距离,采用了共享参数的MLP,将自己以及邻域的信息相加后再用一个最大池化层选择K条中的一条信息。
为什么DGCNN使用K近邻搜索?
因为MLP层共享的缘故,所以需要使图中每个节点的度数相同。
完整的DGCNN架构:
其它思考:
添加注意力机制,如可以将MaxPooling替换成注意力,也就是图卷积中的AG-Net