一、前言
示例介绍了中概述的方法,其中点云数据被预处理为体素化编码,然后直接与简单的 3-D 卷积神经网络架构一起使用以执行对象分类。在最近的方法中,点云数据的编码可能更加复杂,并且可以与执行分类/对象检测/分割任务的网络一起进行端到端训练的学习编码。然而,从不规则无序点移动到可以馈入卷积网的网格结构的一般模式在所有这些应用中仍然是相似的。
二、导入和分析数据
在此示例中,我们使用悉尼城市对象数据集。在此示例中,我们使用数据中的折叠 1-3 作为训练集,并使用折叠 4 作为验证集。
从直方图中可以明显看出,训练数据中存在类不平衡问题,其中某些对象类喜欢并且比不太频繁的类更常见。
三、数据增强管道
为了避免过度拟合并增加分类器的鲁棒性,在训练网络时,一定数量的随机数据增强通常是一个好主意。函数和 pctransform 使得在点云数据上定义随机仿射变换变得容易。我们还为每个点云中的每个点添加一些随机的每点抖动。该功能包含在下面的支持功能部分中。
验证点云数据的扩充是否合理。
接下来,如上一个示例所述,我们将输入点云添加到每个输入点云,将输入点云转换为可与卷积神经网络一起使用的伪图像。使用简单的占用网格。检查我们将馈送到网络的最终体素化体积的样本,以验证体素化是否正常工作。
四、定义网络架构
在此示例中,我们使用简单的 3-D 分类体系结构。
五、设置培训选项
使用具有动量的随机梯度下降,并对学习率时间表进行分段调整。此示例在 TitanX GPU 上运行,对于内存较少的 GPU,可能需要减小批量大小。尽管 3D 卷积神经网络具有概念简单的优点,但它们的缺点是在训练时大量使用内存。
六、训练网络
七、评估网络
按照的结构,此示例仅形成来自悉尼城市对象的训练和验证集。使用验证评估已训练网络的性能,因为它未用于训练网络。
查看混淆矩阵以研究各种标签类别的准确性。
训练集中注意到的标签不平衡是分类准确性中的一个问题。与货车等不太常见的类别相比,混淆图说明了行人(最常见的类别)的精度和召回率更高。由于此示例的目的是演示具有点云数据的基本分类网络训练方法,因此将不探索可以采取的后续步骤来提高分类性能,例如对训练集进行重采样或实现更好的标签平衡或使用更稳健的损失函数来标记不平衡(例如加权交叉熵)。
八、程序
使用Matlab R2022b版本,点击打开。(版本过低,运行该程序可能会报错)
程序下载:基于matlab训练分类网络以对3D点云中的对象进行分类资源-CSDN文库