APP下载

形状匹配与YOLOv3相结合的螺钉识别与定位算法

2022-07-27杨保佳张伟军吴广雨彭季超

机械设计与制造 2022年7期
关键词:螺帽螺钉形状

杨保佳,张伟军,吴广雨,彭季超

(上海交通大学机械与动力工程学院机器人研究所,上海 200240)

1 引言

在工业4.0大背景下,现代制造业都开始向智能制造转型。随着机器视觉以及相关高精度传感器的飞速发展,装配机器人对环境的感知能力得到了显著提高,需要完成的任务也更具有挑战性。

在机械装配领域,螺栓联接是应用最为广泛的联接方式。通过机器视觉相关算法,对螺钉进行高鲁棒性的识别和高精度的定位是目前机器视觉研究领域最为热门的一个方向。计算机视觉的开源库OpenCV也提供了很多物体识别的算法:霍夫变换[1]、聚类算法[2]、SURF[3]、LINEMODE[4]等。近些年卷积神经网络在图像识别上的表现越来越强劲,也随之出现了一些将传统机器视觉和CNN相结合的识别定位算法。

目前工业上应用最为主流的视觉识别与定位算法是模板匹配算法。模板匹配算法是根据已知的模板,在目标图像上搜索最佳匹配点的坐标,本质上是通过规定好的相似度准则来衡量两个图像之间的相似度问题。模板匹配算法主要分为基于边缘的模板匹配算法[5]和基于形状的匹配算法[6]。基于边缘模板匹配算法,在光照环境很稳定的情况下,可以得到较理想的结果。但是在光照环境不能较好控制的场景,从目标图像提取的边缘会出现断裂的情况。如果边缘信息丢失过多,匹配结果往往达不到工业生产的要求。基于形状匹配算法,使用像素点梯度向量的差异作为两图像之间的相似度衡量标准,对光照不敏感且精度更高[7]。

在模板匹配算法的流程中,模板在目标图像上进行滑窗匹配是最为耗时的一个流程。在大视场的图像上,传统算法会进行大量无关的相似度计算,其识别与定位效率还没有达到实时的要求。

针对这个问题,这里算法使用YOLOv3目标检测网络[8]先从大视场的图像中检测目标物体,缩小模板匹配搜索的区域。在此基础上,该算法又使用图像金字塔的分层搜索策略来进一步提高模板的匹配效率。对于螺钉这种金属表面材质的物体,在螺钉姿态稍微发生一点变化的情况下,螺帽表面会出现一些反光的区域。在这种情况下,只通过相似度的高低来判断最佳匹配位置是不稳定的。为了获得更加稳定的结果,该算法提出了一种区域投票的决策机制来筛选候选点,以便得到更加稳定的性能。根据螺钉识别定位实验表明,该算法能够在大视场的图像上,很稳定和快速的识别螺钉,并且具有很高的定位精度。

2 算法设计与实现

程序运行之前需要训练两个模型:用螺钉训练集去训练YOLOv3目标检测网络,训练螺钉的匹配模板。

算法主要流程,如图1所示。算法的第一阶段,会先用YOLOv3目标检测网络去检测输入图像里的螺钉。如果检测成功,会剔除原图像中不感兴趣的区域;如果检测不成功,直接使用原图像作为下一阶段的输入。第二阶段,会使用训练好的模板在输入的图像上进行滑窗匹配,来收集候选点。第三阶段,为了获得更加稳定的结果,会依据候选点分布的聚集程度来剔除掉无关点,最后确定最佳的匹配位置。

图1 算法流程示意图Fig.1 Algorithm Flow Chart

2.1 YOLOv3螺钉检测网络训练

YOLOv3 采用的是DarkNet53 作为特征提取网络,在YOLO网络的基础上新增了top-down 结构,可以分别在(13×13)、(26×26)、(52×52)特征图上进行预测,解决了之前算法在检测颗粒粗,对小目标检测无力的问题[9]。螺钉检测的场景满足YOLOv3的使用范围。这里使用的训练集为200张由工业相机在各个场景下拍摄的螺帽图像,如图2所示。

图2 图片训练集Fig.2 Picture Training Set

为了降低网络对光照环境的敏感度,训练集在螺钉每个摆放场景下,都有3张不同光照强度的图片。

使用这样的训练集训练出来的目标检测网络对螺钉的识别具有极高的鲁棒性。

YOLOv3目标检测网络的作用,可以做如下的定义:

式中:f()—YOLOv3目标检测网络;Iimg—输入的图像;Inewimg—输出结果;Rans—网络是否检测到目标的结果。

2.2 匹配模板训练

这里沿用LINEMOD算法对模板特征点的定义规则[10],将像素点的梯度作为特征点的特征值。如果检测对象是由圆、矩形、三角形等基本图形元素组成,那么匹配模板可以直接通过这些图形元素来训练。

针对螺钉的识别,可以使用一张规整的圆来训练模板,如图3所示。

图3 通过几何圆和螺钉生成的模板特征点分布Fig.3 Template Feature Point Distribution Generated by Geometric Circles and Screws

如图3(a)所示,几何圆训练出的模板,在单个圆上特征点分布更加紧密,使得算法在螺钉识别上的稳定性更高。

如图3(b)所示,直接由螺钉训练出来的模型,其特征点分布更加的松散,特征点之间的约束度更高,更容易出现匹配失败的情况。

螺帽由很多几何圆组成,算法可以利用螺帽这个特点,训练一套不同尺度下的模板圆。使用一组不同尺度下的模板在图像上搜索螺钉,会得到更加多的候选点,提高了算法的稳定性。本文对于不同尺度下模板的定义如下:

式中:It—初始模板图像;Ti—在当前缩放比例si下模板的特征点集合;si—由初始化的比例系数s0和当前步长step*i决定的。

将这些数据的处理过程放在模板的训练阶段,就避免了在图像检测的时候,再进行模板缩放计算,可以提高算法的速度。

2.3 匹配与搜索策略

模板匹配算法是通过训练模板与目标图像的相似度来确定匹配位置。这里采用LINEMOD 算法定义的模板与目标图像相似度计算规则:

式中:ori(O,r)—模板图像O的r位置的梯度;ori(I,t)—目标图像I的t位置的梯度;c+r—目标图像I在位置c再加上r的偏移;R(c+r)—以c+r是为中心,边长为l的临域,这里的实现细节是因为LINEMOD 算法,将每一个像素点的梯度在R(c+r)临域扩散,来提高其匹配效率。其中Τ是一系列模板P的集合。

模板在原图像上逐像素的进行相似度计算,是算法最耗时的一个模块。使用图像金字塔可以指数级别的提高匹配效率,但会获得更多的候选点。这里算法将金字塔顶层匹配出来的候选点,逐层向下传递,并不断更新候选点,直到金字塔底层获得最终的候选点,如图4所示。

图4 模板搜索策略示意图Fig.4 Schematic Diagram of Template Search Strategy

其中候选点的传递规则定义如下:

式中:xdown与ydown—像素级别低一层的候选点坐标;xup和yup—像素级别高一层的候选点坐标。

2.4 最佳候选点位置筛选

由于螺钉是金属表面,螺钉姿态不同会造成螺帽表面反光情况的差异,进而造成匹配的结果有很大的差异,如图5所示。

图5 螺钉不同阈值下的检测结果Fig.5 Test Results Under Different Threshold of Screws

这四张图片展示了两种不同螺钉姿态在不同的阈值下,最终检测出来的候选点分布。可以清楚地看到同一个参数,对于不同姿态的螺钉识别结果的分布并不是稳定的,没有达到该算法的要求。主要原因是螺钉表面的反光不一样,有些特征的梯度与模板的梯度的匹配度会显著上升,导致匹配结果的分布不是很稳定。

针对这种情况,算法采用区域投票的决策机制来剔除误匹配的候选点。区域的定义规则如下:

式中:ibox—区域序号;px与py—图像上候选点的坐标;l—区域长度;lcols—图像列数。

通过该规则定义的区域,如图6所示。当候选点密集区域刚好分布在区域的边界时,如图7所示。

图6 区域划分示意图Fig.6 Schematic Diagram of Area Division

图7 候选点分布示意图Fig.7 Schematic Diagram of Candidate Point Distribution

如果只保留候选点最多的区域,那么有一部分需要保留的候选点会被剔除掉,这违背了策略的初衷。该算法在此基础上定义了如下的区域扩充规则:

式中:R(pi)—以候选点pi为中心;l—边长的正方形临域;R(p)—包含所有R(pi)临域的最小区域。

在R(p)内的所有候选点都会保留下来,如图8所示。

图8 候选点收集过程示意图Fig.8 Schematic Diagram of the Candidate Point Collection Process

由于螺帽最里面的圆环受螺钉反光的影响最小,在得到聚集在圆心周围的所有候选点之后,算法会根据匹配到的圆的半径筛选出螺帽最里面的小圆环,进而得到稳定的匹配结果。

3 实验结果分析

实验将基于边缘的模板匹配算法、传统的基于形状的匹配算法和本文算法。这三种算法在时间效率和准确度上进行了比较。

实验采用的是Basler的工业相机,视场(72×64)mm,图像像素分布是(2592×1944),使用的是intel i7 处理器和NVIDA Ge-Force RTX 2080Ti 11G显卡的计算机平台对图像进行处理。

算法实现采用的是OpenCV的数据结构。螺钉是8mm标准的内六角螺钉。光源采用的是条形光源。

首先对算法速度进行对比分析,如图9 所示。形状匹配与YOLOv3相结合的算法的速度要明显高于另外两种算法。因为新算法在形状匹配算法的基础上,使用YOLOv3目标检测网络对其进行优化,缩小了模板在原图像上搜索的区域。

图9 算法速度对比图Fig.9 Algorithm Speed Comparison Chart

新算法还使用了图像金字塔分层搜索策略来进一步提高模板的匹配效率。由于深度学习方法的鲁棒性没有传统模板匹配算法的鲁棒性高。

这里在YOLOv3模型检测螺钉失败的时候,会继续使用形状匹配算法来检测螺钉。

图示第10张图片就是YOLOv3网络检测失败之后,使用形状匹配算法继续检测的结果。

定位精度分析,如图10所示。

图10 螺钉定位分析图Fig.10 Screw Positioning Analysis Diagram

图中每隔15°画一条经过定位圆心的直线,将这12条直线与理论圆相交线段最长的那条线段来近似理论圆的直径。通过计算定位圆心与这条线段中点的距离来评定定位误差。

在视场(72×64)mm,图像像素分布是(2592×1944)的条件下,每一个像素点所表达的距离0.028mm。最终定位误差的统计结果,如图11所示。

图11 算法定位精度对比图Fig.11 Comparison of Algorithm Positioning Accuracy

新算法在最佳匹配点的选取上不再以相似度为唯一的衡量标准。算法先降低阈值收集了更多的候选点,在此基础上,通过区域投票策略和判断圆半径大小来获取螺帽孔里的圆环,因此所表现出来的结果相比于传统的形状匹配算法更稳定。

从图中可以看出新算法可以将定位精度控制在0.2mm 以内,相比于另外两种算法表现会更稳定和精确。

4 结论

为了在大视场图像上快速识别和定位螺钉,这里提出了一种形状匹配与YOLOv3相结合的螺钉识别与定位算法,并与基于边缘的模板匹配算法和传统的形状匹配的算法进行了比较。

实验结果表明,新算法具有以下的优势。

(1)使用YOLOv3目标检测网络,极大的缩小了算法需要遍历匹配的区域。在大视场图像上,相较于传统的形状匹配算法,将螺钉的识别速度提高了10倍,可以达到每秒10帧的速度。

(2)在传统形状匹配算法的基础上,使用了金字塔分层匹配策略提升了在图像上的搜索效率。

(3)相比于传统的形状匹配算法,新算法在最佳匹配点的选取上不再以相似度为唯一的衡量标准,所表现出来的螺钉识别准确度更高。

猜你喜欢

螺帽螺钉形状
出走的螺帽
出走的螺帽
侵彻弹体尾部联结螺钉失效的影响因素
螺帽出走
术后跟骨螺钉取出的影响因素分析
内固定螺钉要取出吗?
火眼金睛
一种深孔螺钉防倒管
分一半
心的形状