一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于YOLOv5的工业二维码定位方法与流程

2022-07-02 15:08:17 来源:中国专利 TAG:

一种基于yolov5的工业二维码定位方法
技术领域
1.本发明涉及人工智能技术领域,特别涉及一种基于yolov5的工业二维码定位方法。


背景技术:

2.人工智能是研究开发能够模拟、延伸和扩展人类智能的理论、方法、技术及应用系统的一门新的技术科学,研究目的是促使智能机器会听(语音识别、机器翻译等)、会看(图像识别、文字识别等)、会说(语音合成、人机对话等)、会思考(人机对弈、定理证明等)、会学习(机器学习、知识表示等)、会行动(机器人、自动驾驶汽车等)。现有的二维码定位是在低资源的芯片上实现的二维码定位,采用的模型简单、训练策略和评价策略单一,使二维码定位的准确度较低;现有的二维码定位方法采用粗定位之后进行精定位的两阶段定位方法,不能达到端到端的定位效果,不能满足工业级的需求。


技术实现要素:

3.本技术提供了一种基于yolov5的工业二维码定位方法,旨在解决上述背景技术中,现有技术的缺陷所带来的技术问题中的至少一种。
4.为解决上述技术问题,本发明的技术方案如下:
5.本发明提供一种基于yolov5的工业二维码定位方法,包括:
6.s1:采集包含二维码图片的照片,对照片进行预处理,得到处理后二维码图片;
7.s2:利用标签生成器,为处理后的二维码图片生成对应的标签;
8.s3:对标签中的二维码图片进行数据增强处理,获得增强后的图片的数据集;
9.s4:在qrbox_yolov5工业二维码定位器中,利用数据增强后的图片对构建的qrbox_yolov5s神经网络进行训练生成权重并测试,将测试效果最好的训练权重作为训练好的qrbox_yolov5工业二维码定位器;
10.s5:将待识别的二维码图片数据输入qrbox_yolov5工业二维码定位器,对待定位的二维码进行实时推理,获得定位结果。
11.优选地,所述步骤s1中,采集包含二维码图片的照片,具体包括:拍摄二维码图片时工业场景作为图片的背景,模拟实际的工业应用场景进行拍摄,根据实际的工业应用场景读取的二维码图片时的角度和距离拍摄;根据实际应用时摄像头像素,选择拍摄的相机的像素;根据实际应用时二维码种类和工业场景的多样性,在多场景下拍摄多种二维码图片;使用常规的方法对二维码进行识别,清除掉即使定位成功也无法识别的二维码图片;拍摄二维码照片数量在1000到10000之间。
12.只有前期选取的工业二维码图片是符合工业场景实际情况的,最后对二维码定位时才会更准确。
13.优选地,所述步骤s2中,给图片生成对应的标签的具体步骤为:
14.s2.1:编写一个标签生成器,一张图片生成一个标签文件,一个标签文件包含图中
所有的二维码信息,可以在图片中画旋转矩形框,并计算矩形框相对图片的四个顶点坐标;
15.s2.2:在标签生成器中对图片中的二维码画框,并将矩形框的四个顶点坐标转化为矩形框相对于整张图片的宽高w和h,中心点坐标x和y以及两个参数m和n。
16.s2.3:对宽高w和h,中心点坐标x和y以及与角度相关的两个参数m和n进行归一化处理。
17.优选地,所述步骤s2.1中,编写一个标签生成器,一张图片生成一个标签文件,一个标签文件包含图中所有的二维码信息,可以在图片中画旋转矩形框,具体包括:标签文件为txt文本格式,一个标签文件包含图中所有的二维码信息,每个二维码信息占一行,每个矩形框代表一个二维码,每个二维码信息包含有7个参数,第一个参数是二维码的种类,不同的类别用不同的数字表示;第二和第三个参数是二维码矩形框的中心点坐标,用x和y表示;第四个和第五个参数是二维码的宽高,用w和h表示;第六个和第七个参数是m和n。
18.生成的标签关系到整个二维码定位器。标签中一个二维码由7个参数表示,分别是类别,二维码中心点在图中的坐标,二维码的宽高,与二维码旋转角度相关的m和n。精确的标签信息对更加准确地预测二维码的信息很重要。
19.优选地,所述步骤s2.2中,在标签生成器中将矩形框的四个顶点坐标转化为矩形框相对于整张图片二维码中心点坐标x和y,二维码宽高w和h,两个与角度相关的参数m和n,具体转化方法:以图片正右方为x轴正方向,正下方为y轴正方向。找到矩形最下面的一个点,以此点向x轴正方向衍生出一条虚线,这条虚线与矩形的一条边形成夹角。记录矩形的这条边为w,与之相连的另一条边即为h,记录这条边的两个顶点的坐标,左边的点(x1,y1)和右边的点(x2,y2),m=x2-x1,n=y2-y1。
20.四个顶点坐标转为6个参数,x和y,w和h,m和n两两之间紧密性很强,对预测的精准性有很大提高,定位会更准确。
21.优选地,所述步骤s2.3中,对宽高w和h,中心点坐标x和y以及两个参数m和n进行归一化处理,具体包括:w、x、m分别除以图片宽度,h、y、n分别处以图片高度。
22.归一化处理后的参数不会在训练时因梯度下降过大,跳过优解,提高训练准确度。
23.优选地,所述步骤s3中,对二维码图片进行处理,获得处理后的数据集的具体步骤为:
24.s3.1:图中背景部分不动,旋转二维码,保存操作之前和之后的图片;
25.s3.2:图中背景部分不动,平移二维码,保存操作之前和之后的图片;
26.s3.3:给新合成的图片生成对应的标签,并作为数据集;
27.s3.4:把数据集按3:1分成训练集和测试集。
28.优选地,所述步骤s3.1中,图中背景不动,旋转二维码,具体包括:记录二维码的中心点在图片中的坐标;剪切掉图片中的二维码并保存切后的纯二维码图片和切后背景图,对切后背景图中切掉二维码后空白的部分使用泊松融合使其与背景图片一致,生成一张只有背景的切后背景图片;使切掉的二维码旋转随机角度,通过二维码中心点对应的原图片的坐标,把旋转后的二维码粘贴到背景图中。
29.对二维码做旋转数据增强,增加若干张增强训练图像,增加训练数据的规模和复杂度,提高角度相关信息预测的准确性。
30.优选地,所述步骤s3.2中,图中背景不动,平移二维码,具体包括:剪切掉图片中的
二维码并保存切后的纯二维码图片和切后背景图,对切后背景图中切掉二维码后空白的部分使用泊松融合使其与背景图片一致,生成一张只有背景的切后背景图片;使切掉的二维码在背景图中上下左右平移一段距离且不移出图片。
31.对二维码做平移数据增强,增加若干张增强训练图像,增加训练数据的规模和复杂度,提高中心点坐标预测的准确性。
32.优选地,所述步骤s3.3中,给新合成的图片生成对应的标签。
33.给数据增强后的图片生成标签,扩充数据集,增加训练数据的规模和复杂度,提高中心点坐标预测的准确性。
34.优选地,所述步骤s3.4中,把数据集按3:1分成训练集和测试集。
35.数据集划分必须合理,3:1分成训练集和测试集的合理划分方式使得训练和测试的效果更有说服力。
36.优选地,所述步骤s5中,将待识别的二维码图片数据输入qrbox_yolov5工业二维码定位器,对待定位的二维码进行实时推理,获得定位结果。
37.与现有技术相比,本发明技术方案的有益效果是:
38.本发明首先对工业二维码图片进行处理,将处理后的数据集作为训练集和测试集,增加了数据的规模和复杂度,有助于训练时提高qrbox_yolov5s神经网络的准确度;构建的qrbox_yolov5s神经网络属于轻量级网络,速度快;使用新型损失函数和回归预测方式,使用六个相互关联的参数表示二维码的位置信息,可以在工业环境下实现对物体的实时准确识别。
附图说明
39.图1为实施例1所述的一种基于yolov5的工业二维码定位方法;
40.图2为实施例1所述的qrbox_yolov5s神经网络的简略结构图;
41.图3为实施例1所述的qrbox_yolov5工业二维码定位器的结构图。
具体实施方式
42.附图仅用于示例性说明,不能理解为对本专利的限制;
43.为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
44.对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
45.下面结合附图和实施例对本发明的技术方案做进一步的说明。
46.实施例1
47.本发明提供一种基于yolov5的工业二维码定位方法,如图1所示,包括:
48.s1:采集包含二维码图片的照片,对照片进行预处理,得到处理后二维码图片;
49.本实施例中,根据实际应用时二维码种类和工业场景的多样性,在多个工业场景下拍摄多种二维码图片;使用常规的方法对二维码进行定位和识别,清除掉即使定位成功也无法识别的二维码图片;拍摄二维码照片数量为1000张图片。
50.s2:利用标签生成器,为处理后的二维码图片生成对应的标签;
51.包括:
52.s2.1:编写一个标签生成器,一张图片生成一个标签文件,一个标签文件包含图中所有的二维码信息,可以在图片中画旋转矩形框,并计算矩形框相对图片的四个顶点坐标;
53.本实施例中,编写了一个标签生成器,可以给每一张输入的图片生成一个标签文件,标签文件格式为txt文本格式,每个标签文件对应一张图片;标签文件中的每一行代表图片中的一个二维码;一行有7个参数,依次分别是:class,x,y,w,h,m,n,7个参数分别表示二维码的类别,二维码相对于整张图片的中心点坐标,二维码相对于整张图片的宽高,与二维码相对于整张图片的旋转角度。
54.s2.2:在标签生成器中对图片中的二维码画框,并将矩形框的四个顶点坐标转化为矩形框相对于整张图片的宽高w和h,中心点坐标x和y以及与角度相关的两个参数m和n;
55.本实施例中,在标签生成器中每对二维码画一个包围它的最小框,就生成一行标签信息;以图片正右方为x轴正方向,正下方为y轴正方向;找到矩形最下面的一个点,以此点向x轴正方向衍生出一条虚线,这条虚线与矩形的一条边形成夹角;记录矩形的这条边为w,与之相连的另一条边即为h,记录这条边的两个顶点的坐标,左边的点(x1,y1)和右边的点(x2,y2),m=x2-x1,n=y2-y1。
56.s2.3:对宽高w和h,中心点坐标x和y以及与角度相关的两个参数m和n进行归一化处理;
57.本实施例中,归一化处理方式为:w、x、m分别除以图片宽度,h、y、n分别处以图片高度。
58.s3:对标签中的二维码图片进行数据增强处理,获得增强后的图片的数据集;
59.包括:
60.s3.1:图中背景部分不动,旋转二维码,保存操作之前和之后的图片;
61.本实施例中,记录二维码的中心点在图片中的坐标;剪切掉图片中的二维码并保存切后的纯二维码图片、切后背景图及原图,对切后背景图中切掉二维码后空白的部分使用泊松融合使其与背景图片一致,生成一张只有背景的切后背景图片;使切掉的二维码旋转随机角度,通过二维码中心点对应的原图片的坐标,把旋转后的二维码粘贴到背景图中;计算旋转后的二维码的7个参数并保存在标签里;
62.操作进行3次,额外生成三张图;此时共计4000张图和4000个标签文件;
63.s3.2:图中背景部分不动,平移二维码,保存操作之前和之后的图片;
64.本实施例中,剪切掉图片中的二维码并保存切后的纯二维码图片、切后背景图及原图,对切后背景图中切掉二维码后空白的部分使用泊松融合使其与背景图片一致,生成一张只有背景的切后背景图片;使切掉的二维码在背景图中上下左右平移一段距离且不能移出背景图;计算平移后的二维码的7个参数并保存在标签里;
65.操作进行2次,额外生成2张图;此时共计12000张图和12000个标签文件;
66.s3.3:给新合成的图片生成对应的标签,并将其作为数据集。
67.本实施例中,这一步骤已经融合进了前面两步;
68.s3.4:把数据集按3:1分成训练集和测试集;
69.本实施例中,将数据集按照3:1比例随机划分成训练集和测试集。
70.s4:在qrbox_yolov5工业二维码定位器中,利用数据增强后的图片对构建的
qrbox_yolov5s神经网络进行训练生成权重并测试,将测试效果最好的训练权重作为训练好的qrbox_yolov5工业二维码定位器。
71.本实施例中,qrbox_yolov5s神经网络是基于yolov5s网络构建的轻量级神经网络;
72.如图2所示,qrbox_yolov5s神经网络大致划分为四层,输入层,backbone层,neck层,prediction层。
73.s4.1:在数据处理部分已经对数据进行过旋转和平移,在qrbox_yolov5工业二维码定位器中不必再次使用旋转和平移做数据增强,只使用检测器中的剪切和拼接进行数据增强。
74.本实施例中,旋转和平移已经在步骤3做过,且qrbox_yolov5工业二维码定位器是基于yolov5改建的,其中的旋转数据增强不适用于旋转目标,使用后会与平移冲突,不用再做,可使用其他数据增强方式继续扩大数据集规模。
75.s4.2:在qrbox_yolov5s网络中加入注意力机制。
76.本实例中,修改yolov5s.yaml文件,将c3模块修改为添加注意力机制后的模块cbamc3,增强小的二维码目标检测准确度。
77.s4.3:在预测层使用新型损失函数。
78.本实例中,修改loss.py文件,使用新型损失函数,使用loss=smoothl1 (m2 n
2-w2)2作为预测参数的损失函数。
79.s4.4:在回归过程中使用sigmoid函数对m做映射,使用tanh函数对n做映射。
80.本实例中,修改loss.py和yolo.py文件,在参数回归过程中使用sigmoid函数对m做映射,使用tanh函数对n做映射。
81.s4.5:训练时选择batch-size设置为4或2,输入图像大小为32的倍数,且不小于真实图像大小的3倍。
82.本实例中,训练时选择batch-size设置为4,输入图像大小为32的倍数1024。
83.s4.6:利用处理后的图像数据的训练集对构建的qrbox_yolov5s神经网络进行训练。
84.本实例中,使用train.py文件对训练集数据进行训练,获得训练后的权重。
85.s4.7:使用训练出来的权重将测试集输入qrbox_yolov5s神经网络中进行测试。
86.本实例中,使用test.py文件对测试集数据进行测试,测试其的性能。
87.s5:将待识别的二维码图片数据输入qrbox_yolov5工业二维码定位器,对待定位的二维码进行实时推理,获得定位结果。
88.在本实例中,qrbox_yolov5工业二维码定位器是基于yolov5改建的,具有极快的定位速度,且通过新型损失函数等方法提高了定位的准确度;
89.如图3所示,qrbox_yolov5工业二维码定位器主要分为三个模块,数据处理模块,网络训练和测试模块,工业二维码定位模块。在数据处理模块处理好数据,利用处理后的训练集数据在网络训练和测试模块训练,利用训练生成的权重在网络训练和测试模块进行测试,获得测试好的网络权重。
90.在实际操作过程中,安装python3.7及以上版本,用来搭建开发平台;安装jetbrains pycharm 2019.1.1x64,更方便开发;得到测试好的权重后,利用测试好的权重,
通过工业二维码定位模块读取图片,对其中待定位的二维码进行实时精确定位。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献