APP下载

基于卷积神经网络的零件圆检测方法

2023-11-22曾碧卿李一娴张雅蓉

计算机技术与发展 2023年11期
关键词:语义阈值算法

曾碧卿,杨 睿,,李一娴,张雅蓉

(1.华南师范大学 软件学院,广东 佛山 528225;2.季华实验室,广东 佛山 528200)

0 引 言

多孔零件是工业生产中的一种关键零件,比如轴承、螺母和法兰盘等等,此类零件中的圆孔往往承担着重要的连接与固定功能,因此,判断一个零件中的圆孔的尺寸与位置是否符合生产规格是至关重要的事情。

最初在工业生产中采用人工的方法测量零件中圆孔的半径以及圆心位置,这种方法简单但是低效,而且随着工作时间的增加,工人因疲劳而误检的概率也在逐步增大。随着技术的发展,超声波测量[1]、电磁测量[2]和激光测量[3]开始大量应用,声波测量和激光测量都是通过接受反射信号的方法实现对零件的测距,但是超声波测量容易受到距离变化和干扰声波的影响,而激光测量容易受光照和零件姿态的影响,而电磁测量在长时间使用的情况下对人体会有一定影响,零件测量的稳定性与精度问题一直得不到有效的解决。

视觉测量是机器视觉[4-7]发展后诞生出的新应用,通过对待测量的图像进行分析计算,得到物体在图像中的相对尺寸,然后再根据空间映射关系计算出物体的实际尺寸。此方法对环境的变化有较好的鲁棒性,但会受到图像的复杂性影响,因此,如何较好地从复杂的图像中寻找到待测量的圆形是研究的重点。

1 国内外研究现状

圆检测问题作为计算机视觉中的一个基础问题,在诸多领域都有广泛的应用,比如细胞识别、虹膜检测、工件检测等。传统的圆检测算法通常需要一个含有待检测圆形的图片作为输入,而如何排除待检测圆以外的干扰物和如何获取待检测圆的清晰轮廓是圆检测算法面临的最大挑战。

目前,传统的圆检测算法根据计算原理的不同主要分为3类[8]:基于Hough变换的方法、基于目标函数优化的方法和基于圆弧边缘的方法。

基于Hough变换的圆检测方法是图像处理与计算机视觉中最常见的一种圆检测方法。最初的Hough变换圆检测方法[9]由Duba和Hart于1972年提出,该方法的思想是将圆形从图像空间映射到参数空间,图像中点每个边缘点都用满足某种参数形式的曲线描述,然后对所有参数进行累加,处于峰值的边缘点即为预测出的检测圆。Chung等人[10]提出了随机Hough变换圆检测方法,算法在边缘点的选取上进行了优化,随机选取部分像素点进行映射。Yao和Yi[11]提出了CACD圆检测算法,该算法按照圆弧的曲率对圆弧进行分组,然后根据曲率估算圆半径,曲率估算能避免所有点的累加操作和不同尺度的半径之间的差异,从而实现更快、更精准的圆检测。

基于目标函数优化的方法拟合圆形最早由Gander等人[12]提出,运用最小二乘法直接估计出圆形类目标的参数,但该方法的精确度有限。之后,Zelniker等人[13]采用基于卷积的最大似然估计方法找到图像中圆形参数的最优预测值,并采用相位编码内核进行进一步的亚像素精度的优化。Halif等人[14]提出了一种数值稳定的非迭代算法,该算法基于最小二乘化,即使对于分散和带噪音的数据,也能保持稳定的求解。

基于圆弧边缘的方法中的典型代表有EDCircle[15]算法,该算法首先利用无参数边缘绘制算法对给定图像进行边缘分割,然后将边缘分割成线段再转换为圆弧,使用两种启发式算法将圆弧拼接在一起,检测出候选圆和近圆椭圆,最后通过亥姆霍兹原理的反向验证步骤对候选对象进行验证。

以上传统的圆检测算法在对简单圆形图像时往往有较好的表现,但面对实际复杂的应用场景如零件圆检测会受到很大挑战,对此诸多学者在零件圆检测方面进行了研究。王福荣提出的多圆孔零件视觉测量系统[16]对LP图像金字塔进行改进以获得精细边缘,然后在快速随机Hough变换方法中采用优化和缺陷边缘筛除,构建了一个高精度的零件圆视觉测量系统。李晨曦[17]设计了一个圆环零件的光学检测系统,使用迭代优化将最小二乘法中的期望偏差值由非线性问题近似为线性问题,实现了对圆心的快速精确定位,同时还结合了缺陷方法实现对圆环形零件的表面缺陷检测。近年来,深度学习依靠其强大的学习能力为诸多研究领域打开了新的突破口。因此,针对圆检测任务,该文提出了一种基于卷积神经网络的多阶段圆检测方法,对零件中的圆进行由粗到精的检测,排除障碍物获取目标圆的位置以及轮廓信息,最后利用传统圆检测方法对圆参数进行检测,得到目标圆的圆心坐标与半径,以满足零件圆检测的需求。

2 圆检测方法

2.1 检测方法结构

该方法将圆检测流程分为3步(如图1):粗检测、细检测和圆参数检测。粗检测阶段目的在于寻找零件图片中的含有目标圆的感兴趣区域,细检测阶段在感兴趣区域中获取圆的轮廓掩膜信息,圆参数检测阶段负责计算出圆的圆心坐标与半径并映射回原图中。

图1 圆检测方法流程

在粗检测环节,采用YOLOv5作为目标检测模型,数据集采用自行构建的零件图片数据集。该环节的任务是对含有多圆零件图片中的圆进行检测,获得裁剪后含有单个圆的图片,将多圆检测任务简化为单圆检测,为后续细检测做准备,排除干扰物并保留感兴趣区域。

在细检测环节,采用BiSeNet[18]作为语义分割模型,数据集采用粗检测获得的输出结果构建的语义分割数据集,其中训练集采用目标检测训练集输出的结果,验证集则采用目标检测验证集输出的结果。通过细检测环节,粗检测得到的含有单个圆的图片被预测为含有圆形轮廓的掩膜图,圆检测的任务得到极大的简化。

在圆参数检测环节,采用经典的Hough变换圆检测方法,在半径的阈值范围选择上设计了自适应变化模块使得半径阈值范围更加贴近真实值,大大降低了计算量,同时对边缘点采样进行分区,避免了采样点选取过近而受不规则圆的影响。最终圆参数检测环节得到单个圆图形的半径与圆心坐标,通过裁剪与缩放关系重新映射回原来的大图中,得到整张大图中所有待检测圆的半径与圆心坐标。

2.2 粗检测阶段

粗检测阶段的目的是获得目标圆的大概区域位置,而多孔零件图片中往往含有类圆干扰物与非目标圆,因此,该文采用目标检测方法实现对圆的粗检测,目标检测通过训练学习可以对目标的种类和位置进行预测,以排除干扰物,准确地获取目标圆的区域图片。

粗检测阶段的目标检测模型采用YOLOv5,YOLOv5是YOLO系列目标检测算法[19-22]的新一代模型,采用one-stage结构,在图像输入时进行了Mosica数据增强操作并且在推理时采用自适应缩放操作,推理速度提升约37%;在推理结构中,YOLOv5将CSP模块[23]同时应用于Backbone层和Neck层,增强了网络对特征的融合能力;输出层中采用了CIOU_Loss作为边界框预测的损失函数,CIOU_Loss将边界框回归函数中3个重要几何因素:重叠面积、中心点距离,长宽比全部纳入考虑,提高了边界框的速度和精度信息。

最新版本的YOLOv5模型提供了4个网络深度和宽度不同,但结构大体相同的模型,考虑到粗检测的主要任务是检测出含有目标圆的感兴趣区域而对精度要求不高,因此选择参数量最小的YOLOv5s模型以加快预测速度。该文选择修改模型的骨干网络,使用更为轻量级的MobileNet v3[24]网络替换原模型中的骨干网络DarkNet53,在牺牲部分精确度的情况下提高预测速度,改进后的YOLOv5网络结构如图2所示。MobileNet v3是2019年提出的一种轻量化网络结构,在先前版本的基础上加入了神经网络架构搜索和h-swish激活函数,并引入SE通道注意力机制,性能和速度表现优异。由于骨干网络中的DarkNet53主要起特征提取的作用,因此只选择MobileNet v3的特征提取部分进行修改,调整网络中的降采样操作使其输出通道与YOLOv5网络相匹配。

图2 改进后的YOLOv5结构

2.3 细检测阶段

细检测阶段的主要任务是对单圆图片中圆的轮廓进行预测,由于上一步粗检测任务将多圆检测问题简化为单圆检测问题,大大降低了检测难度,但细检测阶段的图片仍然存在着阴影以及干扰物等问题,该文采用语义分割方法检测圆轮廓。语义分割是计算机视觉中的一个流行方向,其目的是将图像分割成具有一定语义的区域,并预测出每一块分割区域的语义类别。由于需要对输入图片进行逐像素的分类,计算量巨大,目前主流的实时语义分割模型多数都以牺牲精度的代价换取速度,比如将原图进行裁剪以限制输入图片的大小,从而降低计算复杂度,但这种做法会造成空间细节的损失,导致度量和可视化的精度下降。

该文采用轻量级实时语义分割模型BiSeNet[18]作为细检测模型。BiSeNet含有2个分支,分别是空间分支和上下文分支,前者使用较多的通道数和较浅的网络结构来保留丰富的空间信息生成高分辨率特征,后者使用较深的网络结构和较少的通道数快速降采样增加感受野。最后使用1个特征融合模块将2个分支输出的特征进行融合,整体网络结构如图3所示。

空间分支的结构较为简单,只包含3个相同的卷积层,每层由1个步长为2的卷积核,批处理归一化层和ReLU激活函数组成,输出特征图的尺寸为原图的1/8,为预测提供了丰富的空间信息。

图3 改进后的BiSeNet网络结构

语义分支采用轻量级网络ResNet18[25]作为骨干网络,一共进行了32倍降采样。为进一步提升特征表达能力,该文在原语义分支的输入前增加了1个根模块,根模块拥有2个分支,1个分支由1个1×1卷积块和1个步长为2的卷积块组成,另1个分支由1个步长为2的最大池化层组成,这2个分支采用不同的下采样方式来缩小特征的表示,且具有高效的计算效率。

图像经过根模块的特征提取后输出进入到原结构的语义分支中,经过1个ResNet18骨干网络进行32倍下采样,其中16倍下采样和32倍下采样的结果被提取出来分别输入到两个相同的注意力优化模块(Attention Refinement Module,ARM)中。注意力优化模块由1个平均池化层,1个1×1卷积块,1个批处理归一化层和1个Sigmoid激活函数组成。注意力优化模块使用全局平均池化来获取全局语义信息,然后计算1个注意力向量来进行特征学习,通过该模块能够精细化语义分支中各个阶段的结果。最后,32倍下采样的结果经过最大池化层后与2个注意力优化模块的输出串联作为语义分支的输出。

BiSeNet网络的尾端采用1个特征融合模块(Feature Fusion Module,FFM)对空间分支和语义分支的输出进行融合,其中空间分支的输出是低层级的,包含了空间中绝大多数的细节信息,而语义分支的输出是高层级的,富含编码语境信息。2个分支的输出通过1个连接层进行连接,然后通过批归一化层平衡特征的尺度,再进入全局池化层池化为特征向量,通过权重向量的加权后实现对特征的选择与结合。

BiSeNet采用1个主损失函数监督整个双分支网络的输出,2个辅助损失函数监督上下文分支的输出,所有损失函数均使用Softmax损失,定义如下:

(1)

总损失函数使用参数α平衡主损失函数和辅助损失函数的权重,文中α值取1,使得连接损失在模型优化时快速收敛,总损失函数定义如下:

(2)

其中,lp是连接损失的主要损失,li是第i阶段的辅助损失,其对应Xception网络第i层的输出特征Xi,K在文中取3,表示对应第2和第3层的网络输出,辅助损失只在训练阶段中使用。

2.4 圆参数检测阶段

细检测阶段输出的结果为轮廓掩膜图像,排除了对圆参数检测造成影响的干扰物与表面纹理,传统的圆检测算法也能有较好的效果,因此该文采用改进的随机Hough圆检测方法对细检测阶段的结果进行圆参数检测。随机Hough变换圆检测方法[10]针对Hough变换圆检测方法计算量大的特点,采用随机采样的方式对边缘像素点进行筛选。在平面直角坐标系中圆的标准方程为:

(x-a)2+(y-b)2=r2

(3)

方程中含有圆参数的3个未知数(a,b,r),通过在圆边缘上随机采样3个点,将3个点的坐标分别代入3个圆方程:

(4)

即可求解得到圆的参数。因此,随机Hough变换在每次循环中随机采样3个边缘点,计算出对应的圆参数后计算边缘其他点到圆心的距离,并将距离与计算所得半径进行比较,判断是否满足阈值误差,若满足误差则视为候选圆,而后将圆心与边缘上其他点进行距离计算,若满足误差范围的边缘点个数累积到预定值时,则可确定该圆为真实圆。若没有满足阈值误差,则需重新采样迭代以计算出所有的真实圆,或者重复操作次数累积达到了预定值。

由于语义分割得到的结果圆不一定为标准圆,存在着边缘出现凹凸不平的状况,若此时对边缘点进行随机采样,可能会出现3个采样点集中在不规则圆弧上的情况,导致预测的圆与真实圆相差较大。因此,该文将圆边缘点的采样区域划分为4个部分,如图4所示。每次采样时都从4个采样区中随机选择3个采样区进行采样,采样区域范围如下式:

(5)

该方法保证不会同时采样3个相距较近的点,当圆的某一段圆弧凹凸不平时,分区域采样可使得采样的边缘点不会都出自这段圆弧,减少了由于不规则圆弧导致的采样误差,从而提升算法对不规则圆的检测能力。而且由于分区域采样法筛去了许多不合理的采样情况,整体算法的运算速率也有所提升。

图4 圆的分区域采样

经过改进的随机Hough变换圆检测方法,得到经预测的圆心坐标与圆半径,为将裁剪缩放后的圆映射回原图中,该文使用以下公式对圆参数进行映射:

(6)

其中,w为原图的尺寸大小,θ为原图与检测结果图的缩放系数,圆检测结果(Xc,Yc,rc)代入缩放系数后放大到原图中的比例再加上剪裁的偏移量(Xd,Yd)即可得到检测圆在原图中的参数(X0,Y0,r0)。

3 实验结果

3.1 实验数据及说明

针对零件圆检测的场景需要构建多孔零件图片数据集,由于含有圆孔的零件样式种类繁多,且成本较高,因此该文从互联网中搜集多孔零件图片构建粗检测数据集,对于每张多圆零件图片都要求平面垂直于拍摄方向,使得待测圆孔为正圆,背景多为白色与实际生产检测场景相匹配,如图5所示。

粗检测数据集预处理步骤如下:

(1)将在网络中搜集的128张零件图片统一裁剪成604×604分辨率,对于小于604×604分辨率的图片采用白色背景填充;

(2)使用LabelImg软件进行目标检测标签的标注,标注规则是使每个圆处于标签框的中心位置,标签框的宽度大约为圆直径的3/2到5/4之间;

(3)使用数据增强方法对标注后的图片通过缩放、旋转和拼接等手段进行扩充,最终得到由864张带标签图片组成的粗检测数据集。

图5 粗检测数据集图片

该文使用粗检测阶段的输出结果构建细数据集,如图6所示。

(a) (b)图6 细检测数据集图片(a)和标签(b)

细检测数据集预处理步骤如下:

(1)从正确预测的目标检测结果图片中随机筛选出680张图片,统计图片分辨率分布,发现分辨率处于100到150像素之间的图片占总图片60%左右;

(2)将所有图片缩放裁剪成128×128分辨率的图片,长方形图片则使用灰色背景填充;

(3)使用LabelImg软件对图片进行标注,全部使用圆形标签标注;

(4)使用数据增强技术对标注后的图片进行扩充,使用翻转、裁剪、缩放、调整对比度等方法,得到带标签图片4 080张组成的细检测数据集,其中训练集和验证集比例为4∶1。

3.2 评价方法

对于粗检测结果的评价,该文使用主流的目标检测评价标准,即准确率(precision)和运行时间来比较2个不同骨干网络模型的性能。准确率定义如下:

(7)

其中,TPs、FPs和FNs分别代表真阳性检测率、假阳性检测率和假阴性检测率。若检测到的圆与真实圆的交并比大于阈值TIoU则被视为真阳性检测,否则为假阳性检测,没有被检测到的圆被视为假阴性。

为证明改进的网络对圆目标语义分割的有效性,该文采用平均像素精度(Mean Pixel Accuracy)和平均交并比(Mean Intersection over Union,MIoU)来评价网络的性能,由于文中预测类别只有1个,因此MIoU与IoU值相等。

平均像素精度定义如下:

(8)

平均交并比定义如下:

(9)

对于圆检测结果,该文采用流行的圆检测计算方法,分别为:(1)准确率(Precision,P);(2)召回率(Recall,R);(3)F值(F-measure,F1);(4)单张图片处理时间(Time)。召回率和F值的计算公式见公式(10)和(11),该文选择α值为1时的F值作为综合准确率和召回率的评价指标,简称F1。实验共设置了4个交并比阈值TIoU,分别为0.7、0.8、0.9和0.95。

(10)

(11)

3.3 模型训练

实验在win10上进行,使用PyCharm开发工具和深度学习框架Pytorch搭建和训练模型。粗检测模型YOLOv5使用在数据集Pascal-VOC上预训练好的模型进行训练,训练批处理大小为4,初始学习率为0.005,权重衰减为0.000 5,学习周期数为300。细检测模型BiSeNet使用预训练好的ResNet18权重文件作为主干网络权重,训练批处理大小为4,初始学习率为0.000 1,权重衰减为0.000 1,学习周期数为800。

3.4 实验结果与分析

为验证对YOLOv5模型改进的有效性,该文将以DarkNet53为骨干网络的原YOLOv5模型和以MobileNet v3为骨干网络的改进后的YOLOv5模型在粗检测测试集上进行对比,采用相同的训练参数进行训练,实验结果如表1所示。

表1 粗检测实验结果对比

经过实验结果得知,以MobileNet v3为骨干网络的模型在预测速度上比原模型提高了约26%,证明了替换轻量级骨干网络对速度提升有较好的效果,更加适用于对速度有要求的实时预测场景。同时注意到,使用更轻量级的MobileNet v3网络后,检测准确率比模型更复杂,参数更多的DarkNet53高0.6百分点,这种情况的发生可能是由于训练样本较小,在更加复杂的网络上训练发生了过拟合现象导致其准确率不如相对简单的网络模型。

为验证语义分割网络改进的有效性,该文使用改进的BiSeNet模型与2种主流的语义分割网络在细检测数据集上进行对比,采用相同的训练参数进行训练,实验对比结果如表2所示。

表2 细检测实验结果对比

通过表2可以看出,BiSeNet作为轻量级语义分割网络在运行时间上比其他两个网络拥有较大的优势。这是由于BiSeNet的主干网络为ResNet18,属于浅层网络,而Deeplabv3[26]的主干网络为ResNet50,OCNet[27]的主干网络为ResNet101,其网络深度都高于BiSeNet,因此其运行时间也几乎是BiSeNet的2倍,因此文中方法更加符合实时检测的需求。

在检测精度上,普通的BiSeNet网络的像素精度与交并比均低于Deeplabv3和OCNet,这与网络的深度呈正相关,越深的网络含有越多的参数,对特征的拟合能力也更好。改进的BiSeNet网络的像素精度比原网络提高2.55百分点,交并比提高2.38百分点,对其他两种网络在检测精度上也有提升,而运行速度几乎没有变化,证明了根模块的加入有效地提升了网络对特征的提取能力,同时没有对运算速度造成较大影响,证明了所涉及的模型的有效性。

为综合验证文中方法的圆检测能力,将文中方法与以下3个传统的圆检测方法进行对比:EDCircle[15]算法、CACD[11]算法和ASLS[28]算法。实验结果如表3所示,其中无分区指在圆参数检测阶段没有使用分区域采样的策略,有分区指在圆参数检测阶段中使用的分区域采样策略。

从表3可以看出,当交并比阈值为0.7时,几个圆检测算法都有较好的表现,准确率都超过了90%,EDCircles和ASLS的准确率都接近98%,而文中方法准确率接近99.9%,说明在低阈值要求下文中方法可以准确检测出所有圆的参数。当交并比阈值升高时,EDCircles和ASLS依然保持着较高的精确度和召回率,而CACD的精度率出现了较大的下降,阈值=0.9时的精确率比阈值=0.8时下降了约10%,文中方法在阈值=0.9时依然保持着96.83%的高精确率。最后,当阈值=0.95时,其他3种方法都出现了显著的下降,CACD的精确率甚至只有55.25%,而文中方法依然能保持接近80%的精确率,说明其在高精度的圆检测中依然能有较好的表现。

表3 圆检测方法实验结果对比

通过对比实验的结果可以看出,文中方法采用的分区域抽样策略更好地完成了圆检测任务,相比未使用分区域抽样策略的方法在精确度和召回率上都有一定的提升,说明分区域抽样策略在面对不规则圆形的检测上效果较好。

此外,文中方法的召回率在4种阈值下都高于95%,说明即使在较高的阈值要求下,文中方法都能准确检测出所有目标圆,具有较强的稳定性。其他3种方法虽然在阈值升高的情况下召回率的下降并不明显,大多维持在80%左右,但精确度仍然与文中方法有较大差距。

在运行时间上,其他3种方法由于需要对所有类圆轮廓都进行预测,导致时间成本增加,尤其是ASLS方法在单张图片上的检测时间大于5 s,无法达到实时检测要求,而使用了分区域抽样策略的文中方法处理单张图片的时间仅为41 ms,是第二快的EDCircle方法的1/10,也比未使用分区域抽样策略的方法快了36 ms。以上实验结果说明,与传统圆检测方法相比,文中方法能在实时检测的情况下精确地检测出目标圆同时排除干扰物的影响,证明了文中方法的有效性。

4 结束语

该文提出一种基于卷积神经网络的多阶段零件圆检测方法,首先通过YOLOv5目标检测网络对图片中的目标圆进行粗检测,得到含有单个目标圆图片的输出,然后将粗检测的输出结果输入到改进的BiSeNet网络从而对粗检测结果进行细检测,获得圆轮廓掩膜图,最后使用引入了分区域采样策略的随机霍夫变换圆检测方法进行圆参数检测,得到目标圆的半径与圆心坐标。经实验结果表明,该方法在零件圆检测数据集上的精确率与召回率远高于所对比的三种主流圆检测方法,同时运行时间也满足实时检测的需求,证明了该方法的有效性。

然而,该方法中各个阶段是相互独立且需要人工处理结果数据的,尚未实现端到端的检测。同时,该文还未将遮挡情况考虑进来,遮挡情况也是圆检测研究中的一个难点,这表明该方法在应用上还有扩展的空间,也为下一步的研究指明了方向。

猜你喜欢

语义阈值算法
语言与语义
基于MapReduce的改进Eclat算法
小波阈值去噪在深小孔钻削声发射信号处理中的应用
Travellng thg World Full—time for Rree
基于自适应阈值和连通域的隧道裂缝提取
进位加法的两种算法
比值遥感蚀变信息提取及阈值确定(插图)
室内表面平均氡析出率阈值探讨
一种改进的整周模糊度去相关算法
“上”与“下”语义的不对称性及其认知阐释