目录
点云分割(point cloud segmentation)
根据空间、几何和纹理等特征点进行划分,同一划分内的点云拥有相似的特征。
点云分类(point cloud classification)
为每一个点分配语义标记,分类即是将点云分类至不同点云集。点云集有相同的属性
部件分割:一个物体的不同部位用不同颜色标识出来。
语义分割:不同类别的物体标识出来。
实例分割:就是把一个类别里具体的一个个对象(具体的一个个实例)分割出来。
语义分割只能划分类别,而同类之间无法划分,因此部分场景在语义分割之后还需要进一步用实例分割来划分同类别的不同实例 。
PointNet 论文
点云三个特性
在欧氏空间中
-
点的无序性:点云是无序的集合,点与点之间没有严格的顺序,如将两个点交换之后仍然表示同一个点云。可以对比图像数据进行理解,点云是一个数据集,形式大概为下图所示,无序性即指任一点的点云数据(即任一行数据)与其它点可以交换。所以模型应该具有无论怎样输入点集都不会影响分割分类结果的能力。(max pooling 作对称函数来解决)
-
点与点之间的空间关系: 每个点都包含空间坐标信息,这些信息之间构成一定的空间关系,论文提出将局部特征和全局特征进行串联。
-
变换不变性: 旋转和平移将不影响模型识别结果
PointNet网络架构:
将点云数量记为 n ,输入样本 n × 3 n\times3 n×3的3对应xyz坐标。
- 输入变换:输入的样本先通过和一个T-net学习到的转换矩阵相乘对齐.
- 点云处理:mlp(64,64)MLP处理升维至 n × 64 n\times64 n×64
- 特征变换:对齐输入样本特征。
- 特征处理: mlp(64,128,1024),MLP处理将特征逐步升维到 n × 1024 n\times1024 n×1024
- 对称函数处理: maxpooling全局特征,汇总所有点云信息。解决了点云无序性的问题
第一部分
T-Net:微型网络,用于生成一个仿射变换矩阵(使一个向量空间经过线性变换和平移,变为另一个向量空间)对点云的旋转、平移进行规范化处理。这个变换/对齐网络是一个微型的PointNet,它输入原始点云数据,输出为一个3 ∗ 3的旋转矩阵。特征空间的变换(feature transform)同理,但输入输出的维度变为64维。
第二部分
对点云和特征进行处理的n个多层感知机,将 n × 3 n\times3 n×3 的点云输入后,每个点都有对应的两层感知机处理进行升维,每个输入的点都得到1024维的描述,通过最大池化,将 n × 3 n\times3 n×3融合为1024维的特征来描述。采用max pooling保证提取出来的长度为1024的全局变量点不随点的顺序改变而改变,解决点云的无序性问题。
f ( x 1 , x 2 , . . . , x n ) ≈ g ( h ( x 1 ) , . . . , g ( h ( x n ) ) ) f({x_1,x_2,...,x_n})\approx g({h(x_1),...,g(h(x_n))}) f(x1,x2,...,xn)≈g(h(x1),...,g(h(xn)))
这里的h(x)函数为mlp升维操作,g函数是池化提取特征操作。
分类任务(Classificaion Network)
生成1024维特征后通过最后一个MLP进行学习,k是最后一层的输出量,代表分类的类别,每个类别对应点云的分类得分。
分割任务(Segmentation Network)
分割任务中需要考虑到局部特征,因此提出 n × 64 n\times64 n×64的64维局部特征,在每个点数据尾部拼接上1024维的全局特征,形成 n × 1088 n\times1088 n×1088维的特征进行学习,使用了两次mlp进行学习,最后每个点输出m个分类得分。