APP下载

基于改进PointNet的空调散热器V形槽3D点云分割算法

2024-03-22陈冠华李博朱铮涛

科学技术与工程 2024年5期
关键词:池化体素精简

陈冠华, 李博, 朱铮涛

(1.广东工业大学机电工程学院, 广州 510006; 2.电子科技大学中山学院机电工程学院, 中山 528402)

近年来,随着国民生活水平的提高和消费观念的转变,市场对空调的需求量越来越大。空调工作时,必须使空气不断进入多层薄片状换热器的翅片间进行热交换,并将放热后变冷的空气送出,实现制冷效果。空调的换热结构通常由多组不同外形、角度的散热器拼装组成,在拼装的连接处有比较大的V形槽缝隙,为避免空气从缝隙中流走降低换热效率,空调制造企业会在缝隙处装入密封胶条或者注入胶体。目前市场上常见的自动化点胶装置,其运动轨迹与自动化控制方式均缺乏柔性,无法应用于散热器自动化点胶。能否准确识别出空调散热器的V形槽部分是完成自动化点胶工作的基础,为实现提取出散热器V形槽区域以便于后续点胶轨迹的拟合,现重点研究面向空调散热器点云数据的数据精简以及散热器V形槽的语义分割。

原始点云的数据量庞大、冗余,如果直接对原始点云数据进行操作,会有处理时间过长的问题。点云的数据精简处理是实现后续点云处理的重要步骤,点云精简后的数据结果会直接影响到后续点云处理的速度、准确度等,因此对点云数据进行精简是必要的。文献[1]根据目标点的K近邻点云密度构建K-近邻长方体,依据长方体的扁平程度进行筛选,结合分段采样去除大量冗余点和少量密集特征点。文献[2]将K-means聚类方法与均方根曲率相结合,能较多地删减冗余点云数据,达到精简点云的目的。文献[3]针对残缺点云数据精简时边界特征容易失真的问题,提出一种利用法向量夹角选取初始特征点,根据欧式距离搜索邻域点,再将数据点划分为特征点和非特征点,对非特征点采用曲率精简,最后将精简的数据与特征点合并的数据精简方法,达到保留边界及孔洞领域特征点并且对点云数据进行精简的目的。文献[4]提出一种利用曲率特征将点云分为平坦区域和非平坦区域,再对不同区域采用不同精简方法的算法,对于防止特征细节的丢失有较好的效果。文献[5]通过计算点云数据点主曲率的Hausdorff距离提取特征点,然后通过K-means聚类算法提取非特征区域的特征点,将两次提取的特征点融合达到数据精简的目的。上述点云数据精简算法的优点是能够较好地保留点云的特征信息的前提下精简点云数量。

空调散热器的点云由两块平坦的点云以一定的夹角组成,两块平坦点云的内部与边缘区域特征相似,两块点云的夹角,即V形槽区域的特征并不突出。针对上述问题,现提出一种算法对点云边缘区域与内部区域采用不同体素大小的降采样,使得点云内部与边缘区域的特征具有较为明显的区别。

对于点云分割,近年来随着硬件设备以及神经网络的发展,发展较快的是利用深度学习方法来对点云进行处理的方法[6-7]。目前利用深度学习处理点云的方向主要有3种。第一种是利用成熟的2D-CNN技术,对三维的点云数据进行处理[8-10],该方法是将三维物体投影到多个二维视图中,再将二维视图输入网络中进行训练。虽然多视图数据包含的信息量很多,但是在投影过程中会有可能丢失几何信息。第二种是基于体素的方法[11-12],该方法参考了二维深度学习直接对像素进行卷积的操作,在三维空间中划分固定大小的网格,将点云分配到每个体素网格中,用3D卷积核对体素进行卷积操作。由于体素网格的稀疏特性,使得大量的卷积计算是无用的,浪费了大量算力,且三维卷积的计算成本过高,在处理大规模点云时的速度较慢。第三种是基于点云的网络[13-15],该方法直接将点云数据输入神经网络中进行训练,利用多层感知机(multilayer perceptron,MLP)单独对每个点进行运算。文献[13]是首个应用该方法的工作,PointNet将点云输入MLP中提取特征,再通过最大池化函数生成一个1 024维的全局特征,进而依据全局特征进行分类和分割工作。

对于PointNet网络的改进,文献[16]利用Spider卷积与残差网络来获取点云特征,提升了点云分类和分割的精度。文献[17]提出一个基于注意力机制的分数细化模块,将初始分割结果通过近邻点的分数与注意力权重合并,提高了分割的总平均交并比。文献[18]将K近邻算法与PointNet结合,引入局部特征,提高了网络的点云分割精度。上述针对PointNet的改进都能够明显提升点云分割的精度,文献[19]提出网络模型轻量化,提高网络运行速度是点云分割未来的研究方向之一。目前有不少研究着重于引入注意力机制与复杂的编码器、卷积等结合的方法,来提高网络分割精度,但忽略了网络复杂度的提升和训练时间大幅提高的缺点。在原版的PointNet网络中,变换网络T-Net占用了大量的参数,但提升的性能并不大,同时其采用的最大池化函数会导致特征信息的损失过大。

针对上述问题,遵循轻量化以及优化特征损失的思路,通过去除变换网络T-Net模块以及引入平均池化的方法构建双池化的方式,以减少PointNet网络的参数量以及提升其分割性能。

针对空调散热器原始点云庞大以及点云边缘区域特征不突出的问题,现设计一种算法对点云边缘区域与内部区域采用不同体素大小的降采样,在精简点云数量的同时,突出点云边缘区域的特征。针对变换网络占用参数量大以及最大池化丢失信息的问题,在PointNet的基础上去除了变换网络,并且在最大池化的基础上引入平均池化,构建双池化方式弥补信息丢失的问题。通过以上工作,期望能够分割出较为准确的散热器V形槽区域点云为后续的点胶轨迹提取提供准确的区域定位。

1 内部区域点云简化算法

散热器的点云如图1所示,其由两块倾斜平面以一定的夹角组成。需要分割出来的V形槽边缘区域与平面内部区域点云之间没有明显的区分特征。采用算法将平面内部区域的点云进行更大体素的降采样,突出散热器点云V形槽边缘区域的特征。算法流程如图2所示,将经过预处理后的点云进行二维化,之后通过边缘提取[20]与K邻域查找将边缘区域点云与内部区域点云分别提取出来,对内部区域点云进行进一步的降采样处理。

图1 散热器点云

图2 内部点云二次精简算法流程

1.1 点云预处理

由于所采用的LJ-X8200线激光传感器采集到的原始点云数据为15 360 000点,原始数据存在着背景点云、离散点云以及点云密度过大的问题。因此对原始数据点云采用了z轴方向上的直通滤波、统计滤波、体素滤波进行数据简化预处理操作。

1.1.1 直通滤波

直通滤波是一种操作简单、速度快的滤波算法。直通滤波器是在点云的属性上(x,y,z等)设置阈值,根据阈值对点云进行滤波,保留阈值内或者阈值外的点云。采用直通滤波来滤除背景点云,因此是在点云的z方向上设置了阈值。

1.1.2 统计滤波

在采集点云时,由于震动等原因,可能会产生一些明显的离群点,采用统计滤波器来进行离群点的移除。统计滤波器是通过计算每个点到其最近的k个点的平均距离,若计算出的平均距离超过给定的均值参数,则该点被认为是离群点。

1.1.3 体素滤波

点云体素滤波将点云以一定大小的包围盒进行划分体素,以每个体素的重心代表当前体素中所有的点,以此来达到点云精简的目的。

1.2 二维化

若已知点P(x0,y0,z0)和一个三维平面l:Ax+By+Cz+D=0,则可通过式(1)求得点P在平面l上的投影点P′(x′p,y′p,z′p)的表达式为

(1)

若对点云沿着深度方向进行投影获得二维平面点云(即相当于垂直投影到x、y平面上),则令C=D=0,可将三维平面l表示为Ax+By=0,即可得到将点云P投影到xoy平面的方程为

(2)

将经过预处理之后的点云数据集合表示为

S={Si|Si=(xi,yi,zi),i∈[1,n]}

(3)

经过投影后,投影点的集合表示为

(4)

1.3 边缘提取

在二维化之后,需要对点云进行边缘提取,采用alpha-shapes边缘提取算法来提取边缘。alpha-shapes算法又称为滚球法,其算法原理可以想象成一个半径为∂的球在点集上滚动,经过点集中的任意两点P1和P2时,如果任意一个球内没有其他数据点,则认为P1和P2是边缘点,最终这个球经过的点连接起来的线段即为边缘轮廓。

1.4 K邻域查找

在提取出边缘后,为了实现将距离边缘点一定距离内的所有点查找出来并且保留,面对无拓扑关系的点云数据,使用KD Tree构建索引结构以实现邻域查询。点云数据中常用的邻域搜索方法有两种:①k最近邻搜索,即搜索距离查询点最近的k个点;②指定半径r搜索领域,即以查询点为球心,半径为r的球形搜索球体内的所有点构成邻域集合。

采用指定半径r搜索邻域点云的方法,以alpha-shapes算法提取出来的边缘点为查询点,搜索与边缘点的距离小于r的所有点云,将其构成需要保留的边缘区域的点云集合。

1.5 内部点云二次简化

经过上述二维化、边缘提取、K邻域查找后可以得到散热器点云边缘区域的点云集合。

边缘区域点云集合表示为

P={Pi|Pi=(xi,yi),i∈[1,k]}

(5)

由于已经对点云构建了索引结构,所以边缘区域点云集合P内的每个点都有其对应的索引,边缘区域点云集合P的索引在点集S[式(3)]中找出对应的边缘区域点云集合,表示为

Sedge={Sedgei|Sedgei=(xi,yi,zi),i∈[1,k]}

(6)

在点集S[式(3)]中,不属于边缘区域点云集合Sedge的点,就认为是属于需要进行二次简化的内部点云,表示为

Sin={Sini|Sini=(xi,yi,zi),i∈(k,n-k]}

(7)

然后对点集Sin进行第二次体素滤波,第二次体素滤波的体素栅格大小需比第一次大。

2 PointNet

2.1 PointNet网络原理

在PointNet出现以前,针对点云数据的深度学习主要采用两种方式:一种是将点云转换为多个二维视图,以多张二维图片输入到传统CNN上进行训练;另一种是将点云以体素的形式进行三维卷积,形式类似于二维的卷积,但是因为多出来了一个维度,所以计算消耗巨大。

PointNet是一种直接将点云数据输入网络进行训练的网络框架,相比于上述两种方法,直接将点云数据输入网络的计算消耗明显减小。图3为PointNet的模型结构图。

图3 PointNet模型结构

点云数据具有旋转不变性和无序性。针对点云数据的旋转不变性,PointNet使用一个小型的仿射变换矩阵预测网络T-Net来对输入点云进行仿射变换,将点云变换到一个规范的空间,然后再将经过MLP升维后的点云进行仿射变换,保证了点云的特征对齐。针对点云数据的无序性,PointNet采用对称函数去解决,PointNet采用的对称函数是最大池化函数(MaxPooling)。

对称函数可表示为

f({x1,x2,…,xn})≈g[h(x1),h(x2),…,h(xn)]

(8)

最大池化函数是PointNet的核心,通过最大池化函数可使得PointNet无视点云的无序性问题。通过最大池化函数,可在n个输入点云提升到1 024维的情况下选取该维度下数值最大的点,然后将该点作为输入点云的特征,即得到一个1×1 024的最大特征作为全局特征。

2.2 去除T-Net

在PointNet里,T-Net的作用主要是计算一个旋转矩阵,将输入点云的位姿进行改变,使得改变后的位姿更适合分类或者分割。T-Net是一个小型网络,其旋转矩阵并非是提前设置好的参数,而是随着整个网络的训练进行更新的,在PointNet网络训练中需要占用一定的时间与参数。

尽管经过T-Net训练出来的旋转矩阵调整输入点云的位姿后,能够保留一些原始点云的特征,但经过实验,对于语义分割来说,使用T-Net对分割精度并没有太大的提升,反而会增加训练的时间以及网络的参数量,因此基于轻量化的原则,将T-Net从网络中去除。

2.3 平均池化

最大池化函数在提取特征时只提取了输入点云中的最大特征作为全局特征,这样就使得网络只利用到了最大的特征信息,而其他特征信息就被忽略掉了,在一定程度上没有充分地利用到点云的特征信息。

平均池化函数也是对称函数的一种,无论点云的排列顺序如何,其特征的平均值都不会发生变化,所以平均池化函数也可以用式(8)表示。

在PointNet最大池化的基础上,加入了一个并行的平均池化函数,使得n×1 024特征分别经过最大池化和平均池化,得到最大全局特征1×1 024和平均全局特征1×1 024,之后将这两个全局特征与经过T-Net特征变换后的n×64特征进行拼接,得到n×2 112的特征后输入MLP中对每个点进行分类。

引入平均池化后,输入PointNet的n个点的高维信息都能被网络利用到,能够弥补最大池化带来的信息丢失问题。并且因为最大池化所取的全局特征与最值有关,当极值出现时,会在一定程度上影响到模型的精度,引入平均池化后,会有一定的削峰作用,能够增强模型的鲁棒性。

如图4所示为改进后的PointNet网络结构图,去除了两个变换网络模块,以及在池化阶段引入了平均池化。

图4 网络整体结构

3 实验验证

3.1 实验环境配置

实验设备与环境配置如表1所示。

表1 硬件与软件配置表

3.2 数据集

数据集采集自本地企业提供的散热器样品,采集点云数据所用传感器为基恩士LJ-X8200,共采集点云数据300个,每个散热器点云数量均为15 360 000点。采用7∶2∶1的比例划分训练集、验证集、测试集。对训练集与验证集使用CloudCompare软件对点云数据进行标注,类别为目标区域VArea和非目标区域OtherArea。

在实验过程中,由于采集的数据集数量较少,采用数据增强的方式对训练集进行扩充,所采用的数据增强操作有旋转、平移、尺寸变换、添加高斯噪声等。

3.3 二次数据精简算法实验

为了验证所提出的二次数据精简算法,先对散热器点云采用直通滤波去除背景以及统计滤波去除离群点,然后采用本文算法两种方式进行数据精简。本文算法中内部点云二次简化的体素滤波(即第二次体素滤波)的体素设置为2。部分实验结果如图5所示,其中图5(a)、图5(c)、图5(e)分别为采用直通滤波、统计滤波、体素滤波点云预处理操作后的结果,图5(b)、图5(d)、图5(f)分别为在图5(a)、图5(c)、图5(e)样品上应用本文算法的结果。可以明显看出,本文算法可以有效地降低散热器平面内部的点云密度。具体减少的点云数量如表2所示。

表2 应用算法前后点云数量对比

为了进一步测算本文算法的性能以及效果,从运行速度和精简率两个方面进行考量,上述3个散热器样品的试验数据如表2所示。由表2可以得到,本文算法的点云数据精简率基本处于30%以上,平均运算时间为1.3 s,其中包含构建索引结构、投影降维、边缘提取、r半径球形区域搜索、体素滤波等步骤所消耗的时间,因此能够说明此方法具有较高精简率的同时,算法运行所消耗的时间也较少。

在验证了有效性与运行速度后,将本文算法与随机下采样法和曲率下采样法两种经典的三维点云数据精简算法做比较,实验结果如图6所示。

图6 对比实验图

图6(a)为只经过直通滤波去除背景和统计滤波去除离群点的原始散热器点云模型,图6(b)、图6(c)和图6(d)均为在图6(a)的基础上应用不同算法得到。图6(b)为应用随机下采样算法得到的点云,可以看出随机下采样法得到的点云较为散乱,其精简后的点云模型质量较差。图6(c)为应用曲率下采样法得到的点云,可以看出应用这个方法得到的点云在V形槽附近的点云较密,其他地方的点云较为稀疏,这是因为该散热器在V形槽旁有一根圆柱形的散热管,曲率下采样法对具有曲率特征的地方的点云删除较少,但是对于覆盖在散热管上方的鳍片(也就是点胶的地方),其精简后的质量也比较差。图6(d)是应用本章算法得到的点云,可以明显看出在V形槽附近的点云较为均匀,点云数据精简后的整体质量也较好。这表明相比于上述两种经典点云精简算法而言,本文算法能够获得预期的数据精简以及特征突出效。

3.4 PointNet实验

3.4.1 网络复杂度分析

网络复杂度包括空间复杂度与时间复杂度,空间复杂度通常用网络的参数量来表示,利用Python工具包“thop”来计算网络参数量,时间复杂度采用1轮网络训练的时间来表示。实验中,设置batchsize为1,采样点数为4 096,学习率为0.001,得到结果如表3所示。

表3 不同网络的复杂度

由表3可知,由本文算法改进的PointNet相比于原始的PointNet,空间复杂度更低,减少了2.197×106个参数,时间复杂度也比原始PointNet低;本文算法比PointNet++少0.551×106个参数,空间复杂度略低于PointNet++,但PointNet++的时间复杂度很高,需要较多的训练时间。

3.4.2 语义分割实验结果分析

为了准确评估模型的分割性能,采用平均交并比(mean intersection over union,mIoU),总体精度(overall accuracy,OA)作为实验结果的评价指标。

mIoU公式为

(9)

OA公式为

(10)

式中:TP为分类正确的正样本;FN为分类错误的正样本;FP为分类错误的负样本;TN为分类正确的负样本。

实验环境配置如表1所示。实验中,学习率设置为0.001,batchsize为32,共训练120个epoch,所用数据集均为先统一经过直通滤波与统计滤波,再用不同算法进行降采样。结果如表4所示,可以看出,在利用本文算法对训练集进行二次简化突出边缘区域的特征,并且对PointNet加入平均池化之后,无论是训练集还是测试集,OA与mIoU指标均有一定的提升,其中测试集的OA提升了6.37%,mIoU提升了9.73%,实验证明本文算法有效。从消融实验可以看出,在数据预处理方式为包围盒法的基础上,加入平均池化后的PointNet比原版的PointNet,测试集的OA提升了1.74%,测试集的mIoU提升了4.12%。预处理方式为本文算法的数据比预处理方式为包围盒法的数据,在PointNet训练出来的模型分割结果中,测试集OA提升了4.98%,测试集mIoU上提升了6.72%。实验证明本文算法均对分割结果有一定的提升。

表4 语义分割实验结果

图7是部分语义分割结果的可视化对比图。其中第一列为PointNet+包围盒法处理的数据集的模型分割结果,第二列为改进的PointNet+包围盒法处理的数据集的模型分割结果,第三列为PointNet+本文算法预处理数据集的模型分割结果,第四列为改进的PointNet+本文算法预处理数据集的模型分割结果,为方便起见,将上述4种组合分别命名为组合A、B、C、D。可以看出,在对预处理方法和网络模型进行改进之后,V形槽边缘区域的语义分割的准确度有了一定的提升,能够为后续的点胶轨迹提取工作提供较为准确的V形槽区域的定位信息。

图7 语义分割结果对比图

4 结论

首先,针对散热器点云数据量庞大,导致点云处理和语义分割的耗时久、计算量大的问题,提出了一种能够突出散热器V形槽边缘区域的特征的点云数据精简方法,该方法能够将散热器点云数量在预处理的基础上再精简30%以上,并将V形槽边缘区域的特征进行突出。该点云精简方法首先对点云沿深度方向进行投影,通过边缘提取算法提取出点云边缘,构建KD-Tree索引结构将散热器点云边缘区域与内部区域分别进行不同体素的降采样,从而使得边缘区域与内部区域获得不一样的特征。

其次,对于语义分割网络,在PointNet网络最大池化的基础上联合了平均池化,构造了池化函数联合模块,弥补了最大池化会丢失点云特征信息的缺点,并且去除了T-Net变换网络,减少了网络的复杂度,使得网络的运行速度得以提升。

最后,实验结果表明,经过本文数据精简算法处理后的数据集,在本文算法改进后的PointNet网络中测试的结果,可比原始PointNet网络获得更高精度的分割效果,能够为后续点胶轨迹的提取提供较为准确的V形槽区域点云。

猜你喜欢

池化体素精简
面向神经网络池化层的灵活高效硬件设计
基于Sobel算子的池化算法设计
基于多级细分的彩色模型表面体素化算法
瘦体素决定肥瘦
卷积神经网络中的自适应加权池化
运用边界状态约束的表面体素加密细分算法
基于体素格尺度不变特征变换的快速点云配准方法
基于卷积神经网络和池化算法的表情识别研究
时常精简多余物品
一种面向应用的流量监测精简架构设计