基于PointNet++ 矫形云平台的肢体分割方法
2024-01-16蓝培钦周荣光
蓝培钦,周荣光
广州科莱瑞迪医疗器材股份有限公司 (广东广州 510730)
人体肢体分割是数字化智能矫形器CAD 设计中的关键步骤。国内外的人体肢体分割研究主要集中在传统方法和深度学习方法两个方向[1]。传统方法主要基于图像处理技术,如边缘检测、区域生长和水平集等,然而在人体肢体分割中,边缘通常不是明确的线条,而是由复杂的曲线和不规则形状组成,使传统边缘检测算法难以准确地捕捉到人体肢体的边界[2]。水平集方法在处理多个并行边界和边界交叉时,需要精心设计能量函数和数值计算方法,增加了算法的复杂性和计算成本,且人体肢体在不同姿态和形状下具有较大的变化范围,传统方法往往对这些变化不够鲁棒。虽然深度学习技术的快速发展为人体肢体分割带来了许多突破,但在应用卷积神经网络(convolutional neural network,CNN)和全卷积神经网络(fully convolutional networks,FCN)等深度学习模型进行人体肢体分割时,仍然存在人体肢体的边界通常是复杂的曲线和不规则形状,模型可能无法准确捕捉到边界的细微变化和曲线的非线性形状等困难[3-4]。PointNet++是一种基于点云数据的深度学习模型,能够处理不规则形状的点云数据并实现语义分割。脊柱侧弯矫形器的矫形效果受到矫形器技师的专业知识和制作熟练程度的影响[5-9]。为解决矫形器设计制作过程中的痛点,本研究结合智能数字化矫形设计CAD 云平台的3D 数字化扫描技术、CAD/CAM(计算机辅助制造)云平台架构、B/S(浏览器/服务器)架构和3D 打印技术,提出了一种基于深度学习算法的智能化自动设计方法,以快速定制出适合患者的假肢矫形器。
1 PointNet++神经网络概述
FCN 是一种全卷积神经网络,用于图像语义分割任务,可以有效将输入图像逐像素映射到相应的类别标签,从而实现对图像中每个像素的语义理解。与传统卷积神经网络不同,FCN 不包含全连接层,完全由卷积层和反卷积层组成,使FCN 能够接收任意尺寸的输入图像,并输出相同尺寸的密集预测图,且能够捕捉到丰富的上下文信息,并在不同尺度上进行语义分割。在3D 图像领域,FCN 也被扩展为FCN 3D 网络,用于处理三维数据的语义分割任务。FCN 3D 通过沿着3 个维度(x、y 和z)进行卷积和反卷积操作,实现对三维体积数据的像素级分类,可应用于医学图像分割、三维物体识别等领域,提供更准确的空间语义分割结果。FCN 3D全卷积神经网络通过使用卷积和反卷积层,能够对三维体积数据进行像素级的语义分割,并在不同尺度上捕捉上下文信息,为图像理解和分析任务提供了强大的工具。由于FCN 无法提取局部特征,网络学习精细特征较困难,无法捕捉三维空间中的局部信息,因此限制了识别细粒度三维点云物体和复杂场景的能力。PointNet++通过迭代方式对点云数据分组产生局部区域,并使用pointnet 单元对局部区域进行特征提取,从而实现多级特征学习。PointNet++网络模型由基础网络、分类网络和分割网络3 部分组成,能够执行三维点云的分类和分割任务,Pointnet++网络结构图如图1 所示。集合抽象层(set abstraction)是PointNet++网络的基础网络结构,由下采样层、分组层和pointnet 单元3 部分组成[10-11]。PointNet++的分类网络通过pointnet 单元对基础网络输出特征进行进一步的局部特征提取,然后输送到全连接层学习特征表示,实现三维点云分类。PointNet++分割网络将基础网络的输出特征进行线性插值,实现特征上采样操作,在线性插值过程中各点权重均采取全局归一化,距离越远的点权重越小。为增加上采样后的细节特征,分割网络利用插值后的特征与浅层提取的特征进行跳跃连接和pointnet 单元实现特征融合,提高分割网络的预测精度[12]。
图1 PointNet++网络结构示意图
2 基于PointNet++的人体肢体分割算法
2.1 整体框架
首先,采用高斯平滑滤波技术对标准模板库(standard template library,STL)模型进行预处理,减少模型中的噪音。通过应用高斯平滑滤波,能够有效地消除模型中的细小噪点,从而提高后续处理步骤的数据质量。其次,进行顶点法向量估计。通过计算各顶点的法向量,获得模型表面的法线信息。法向量可以提供有关模型表面方向的关键信息,对于后续步骤中的采样和分割操作十分重要。再次,引入了顶点八叉树采样技术,对模型进行采样。顶点八叉树采样技术能够将模型划分为不同的空间区域,并选择代表性的顶点进行采样。该采样方法能够有效减少计算量,并保持对模型形状的准确表示[13]。最后,应用PointNet++模型进行分割。利用PointNet++模型对采样后的点云数据进行处理,以实现对STL 模型的准确分割。本研究整体框架的流程如图2 所示。
图2 整体框架流程图
2.2 点云获取与预处理
利用3D 扫描技术获取人体表面的三维信息,通过异常值处理将表面的离群点剔除,以提高数据质量和准确性。(1)高斯平滑滤波:首先,确定高斯核的大小和标准差。定义半径(r)表示邻域范围。高斯核的大小可以根据r确定,并根据点云密度和噪声水平进行选择,而标准差控制着平滑程度。其次,对于点云中的各点,确定其邻域内的点。使用欧氏距离测定2 点间距离,并将距离小于r的点作为邻域内的点。对于各邻域内的点,根据其与中心点的距离计算高斯权重。距离越近的点具有更高权重,而距离越远的点则权重较低。最后,将各邻域内点的坐标与其对应的高斯权重进行加权平均,以得到平滑后的点坐标,可有效消除噪声并保留点云的细节特征,从而提高后续处理步骤的准确性和稳定性。(2)三角面片顶点的法向量估计:遍历各三角面片,计算面片的法向量。将与各顶点关联的所有面片的法向量进行平均,通过对法向量进行归一化得到平均法向量,可平滑地估计顶点的法向量,并减少面片间的不连续性。同时,根据面片的面积对法向量进行加权平均,以更准确地反映不同面片对顶点法向量的贡献程度,从而提高法向量的准确性和稳定性。(3)三角面片顶点的八叉树采样:首先,将三角面片集合划分成多个较小的立方体,形成八叉树结构。每个立方体包含1 组面片,并可根据需要细分到更小的子立方体中。然后计算每个立方体的包围盒。对于树中的每个叶节点(即无子节点的节点),找到其包围盒内的所有三角面片,并对其进行均匀采样。对于各采样点,通过三角面片网格(如Delaunay 三角化)计算其所在三角面片和相应的顶点。根据三角面片顶点的位置和法向量信息,计算采样点的法向量。采样点的获取也是一个重要步骤,可被用来表示整个场景的形状和表面特征。因此,将其包围盒内的所有采样点和法向量作为1 个点云集合存储,有效提高对场景的空间分割和管理效率,使面片集合能够被更加高效地处理。在采样过程中考虑不同区域的曲率信息,使生成的点云能够更加准确地反映原始表面的特征。此外,为提高渲染和显示效果,对点云进行进一步滤波和降采样,以便在后续处理中减少数据量和提高渲染的速度。
2.3 PointNet++模型分割算法
PointNet++模型分割算法主要包括3 个步骤:数据预处理、PointNet++网络设计和分割策略。首先,对采集到的点云数据进行预处理,包括点云重采样和归一化等操作,以保证数据的一致性和稳定性。其次,设计基于PointNet++的网络结构,在多个尺度上对点云数据进行特征提取和聚合。将采样点邻域的自注意力明确分为中心自注意力和邻域自注意力两部分,如图3 所示。中心自注意力是指在注意力机制中,每个元素均与其他所有元素计算注意力得分(包括自己),以使每个元素都能够考虑到整个序列或图像的信息,从而更全面地捕捉上下文间的关系。邻域自注意力是一种更局部化的注意力机制,每个元素只与其邻居元素计算注意力得分,从而限制了注意力范围,在处理大型序列或图像时能够减少计算复杂度,并且更适合捕捉局部信息之间的关联。结合不同空间编码方式增强网络模型对采样点邻域拓扑结构的学习,接着构建注意力池化模块以强化重要信息在网络的有效传递,并通过差异性池化函数整合注意力池化、最大池化提取的多个全局特征,通过多层感知机结构和局部邻域关系图的建模,可捕捉到点云数据的全局和局部特征,以提高分割结果的鲁棒性。最后,采用有效的分割策略,结合阈值分割和形态学操作,实现对人体肢体的准确分割。
图3 注意力模块示意图
3 实验结果
3.1 实验配置环境
目前,主流深度学习框架为Tensorflow、Keras 和Pytorch。这3 个主流深度学习框架中,Pytorch 拥有高效性能及代码简单易懂等优点,因此选择Pytorch 作为深度学习框架。本研究的语义分割实验是在Windows 10 操作系统中实现的,深度学习框架为Pytorch,具体实验配置环境如表1 所示。
表1 实验环境配置
3.2 模型训练的准确率
在自定义数据集上对所提出的方法进行了广泛的实验评估。人体肢体分割方法在训练过程中能够迅速收敛,并进入稳定状态,且准确率比较高,见图4。人体肢体分割方法的切割效果图,见图5。人体肢体分割任务中具有更高的准确度和更好的鲁棒性,同时还能够保持较好的细节信息,并在处理复杂姿态和存在空洞情况下表现出色。
图4 模型训练过程中准确率
图5 人体点云模型的分割
3.3 消融实验结果
基于FCN 的分割方法由于在网络传播过程中逐渐丢失局部相关特征信息,导致分割准确率较低,准确率只有78%。而基于PointNet++分割方法准确率最高达到95%,远高于FCN 的准确率,见表2。PointNet++网络带法向量、提高批次和采样密度均能提高总体分割精度,法向量能够区分点云中不同表面的方向和形状。适当地提高训练的批次能够加快模型收敛,提高模型精度。不同区域点云密度差异及采样后点云变稀疏导致原目标点邻接关系或多或少存在一定程度上的破坏,从而影响网络模型捕捉细粒度局部特征的能力,充分捕捉点云之间的关系特征,有利于提高分割精度。
表2 不同姿态的人体点云数据的消融实验结果
3.4 人体肢体分割方法效果
基于FCN 分割难以识别到颈部、腋下和阴部等局部特征,导致切割效果不好;而本研究中的人体肢体分割方法能够有效提取局部特征,使人体肢体模型获得较好的切割效果,见图6。
图6 人体STL 模型的分割效果对比
4 结论
本研究提出了一种基于三维物体分割模型PointNet++的人体肢体分割方法,通过利用点云数据的局部特征和全局特征相结合,实现了对人体肢体的准确分割。未来的研究方向可以包括进一步提升算法的效率和鲁棒性,以适应更加复杂和多样化的场景。