CN117151138A - 一种破损码的生成方法、装置及计算机设备 - Google Patents
一种破损码的生成方法、装置及计算机设备 Download PDFInfo
- Publication number
- CN117151138A CN117151138A CN202311063056.7A CN202311063056A CN117151138A CN 117151138 A CN117151138 A CN 117151138A CN 202311063056 A CN202311063056 A CN 202311063056A CN 117151138 A CN117151138 A CN 117151138A
- Authority
- CN
- China
- Prior art keywords
- damage
- damaged
- dimensional code
- image
- original
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 86
- 238000003860 storage Methods 0.000 claims description 9
- 238000004458 analytical method Methods 0.000 abstract description 21
- 238000005516 engineering process Methods 0.000 abstract description 14
- 230000000694 effects Effects 0.000 abstract description 9
- 238000001514 detection method Methods 0.000 description 67
- 238000012549 training Methods 0.000 description 42
- 230000006870 function Effects 0.000 description 34
- 238000010586 diagram Methods 0.000 description 27
- 239000003086 colorant Substances 0.000 description 23
- 238000012545 processing Methods 0.000 description 21
- 238000012795 verification Methods 0.000 description 19
- 238000004364 calculation method Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 13
- 238000011156 evaluation Methods 0.000 description 12
- 238000000605 extraction Methods 0.000 description 11
- 238000012360 testing method Methods 0.000 description 11
- 230000004913 activation Effects 0.000 description 9
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000009826 distribution Methods 0.000 description 6
- 238000013528 artificial neural network Methods 0.000 description 5
- 230000008014 freezing Effects 0.000 description 5
- 238000007710 freezing Methods 0.000 description 5
- 238000005286 illumination Methods 0.000 description 5
- 230000001629 suppression Effects 0.000 description 5
- 238000012423 maintenance Methods 0.000 description 4
- 238000010606 normalization Methods 0.000 description 4
- 238000010257 thawing Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000011109 contamination Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000005299 abrasion Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000009776 industrial production Methods 0.000 description 2
- 210000002569 neuron Anatomy 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000011056 performance test Methods 0.000 description 2
- 238000011176 pooling Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000031068 symbiosis, encompassing mutualism through parasitism Effects 0.000 description 2
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 1
- ORILYTVJVMAKLC-UHFFFAOYSA-N Adamantane Natural products C1C(C2)CC3CC1CC2C3 ORILYTVJVMAKLC-UHFFFAOYSA-N 0.000 description 1
- 238000012935 Averaging Methods 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013145 classification model Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 238000005336 cracking Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000008034 disappearance Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000000691 measurement method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
- G06K7/1404—Methods for optical code recognition
- G06K7/146—Methods for optical code recognition the method including quality enhancement steps
- G06K7/1491—Methods for optical code recognition the method including quality enhancement steps the method including a reconstruction step, e.g. stitching two pieces of bar code together to derive the full bar code
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Health & Medical Sciences (AREA)
- Electromagnetism (AREA)
- General Health & Medical Sciences (AREA)
- Toxicology (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Analysis (AREA)
Abstract
本申请涉及破损码技术领域,具体涉及一种破损码的生成方法、装置及计算机设备;方法包括获取原始二维码图像;获取原始二维码图像的破损信息;根据破损信息,生成原始二维码图像对应的破损掩膜图像;根据破损掩膜图像的破损区域的各个像素值,获取原始二维码图像对应的破损图像;上述方案可以根据实际需要对破损信息进行设置,从而生成大量的破损掩膜图像,得到大量破损情况不同的破损图像。在AGV针对破损二维码进行识别分析时,以本申请生成的破损图像作为破损率识别模型的样本数据,可以保证破损率识别模型的样本数据来源的稳定性、破损率识别模型的识别效果的准确性和高效性,从而使得AGV针对破损二维码的识别分析更加准确。
Description
技术领域
本申请涉及破损码技术领域,具体涉及一种破损码的生成方法、装置及计算机设备。
背景技术
近年来随着工业生产自动化程度的发展,移动机器人(Automated GuidedVehicle,AGV)技术的出现使工业生产发生了根本性的变化。
目前,在室内定位中,二维码(Quick Response code,QR code)识别技术因其操作简便、价格低、精度高等优点常在SLAM技术(即时定位与地图构建)中被使用。即,在关键点位贴上二维码并指明世界坐标下的绝对位姿,为视觉定位提供可靠的定位标签,根据这些定位标签将地图更新回初始导航坐标下。然而,由于贴于地面的二维码经常受到AGV轮子或行人的摩擦,长时间运行后容易出现破损、模糊的情况,导致AGV位姿信息容易出现偏差。此时,就需要使得AGV能够针对破损二维码进行识别分析,而在AGV对破损二维码进行识别分析的过程中,对破损二维码的有效生成是破损二维码识别分析的基础与关键。
因此,为了保证AGV针对破损二维码的识别分析更加准确,亟需一种高效的破损码的生成方法。
发明内容
有鉴于此,本申请实施例提供了一种破损码的生成方法、装置及计算机设备,以保证AGV针对破损二维码的识别分析更加准确。
第一方面,本申请实施例提供了一种破损码的生成方法,所述方法包括:
获取原始二维码图像;
获取所述原始二维码图像的破损信息;所述破损信息包括破损率、破损区域及破损颜色中的至少一者;
根据所述破损信息,生成所述原始二维码图像对应的破损掩膜图像;
根据所述破损掩膜图像的破损区域的各个像素值,获取所述原始二维码图像对应的破损图像。
根据上述技术手段,本申请实施例实现了二维码破损掩膜生成和原始图像的掩膜处理,能够在不同角度、距离和光照条件下都可靠地进行识别和定位;把破损掩膜图像的破损区域的计算结果作为新的像素值来替换原有像素值,可以实现对图像的改变和优化,从而生成破损图像;在AGV针对破损二维码进行识别分析时,保证了识别结果更加准确和高效。
结合第一方面,在一种实施方式中,生成多张原始二维码图像;所述原始二维码图像包括编码信息及图形信息;所述原始二维码图像用于指示位置信息。
根据上述技术手段,该原始二维码图像为完整清晰的二维码图像,AGV在行驶过程中可以根据该原始二维码图像中的位置信息确定当前的行驶位置,从而调整位姿。
结合第一方面,在一种实施方式中,根据所述破损信息,从初始掩膜图像中确定出起始破损点,并将所述起始破损点加入目标破损数组中;所述初始掩膜图像为白色背景的图像;
不断获取所述起始破损点的邻居像素点,并将所述邻居像素点加入所述目标破损数组中,直至目标破损数组中的元素个数满足目标条件;
根据所述初始掩膜图像及所述目标破损数组,构建所述原始二维码图像对应的破损掩膜图像;所述目标破损数组指示破损区域。
根据上述技术手段,根据预设的破损信息,对不同破损区域及不同破损位置的破损掩膜图像进行生成,通过对破损信息的调整,即可生成各个不同的破损掩膜图像,保证破损掩膜图像的丰富数据源,从而在AGV针对破损二维码进行识别分析时,保证了识别结果更加准确和高效。
结合第一方面,在一种实施方式中,在所述从初始掩膜图像中确定出起始破损点之后,将所述起始破损点置黑;
在所述不断获取所述起始破损点的邻居像素点之后,将所述邻居像素点置黑。
根据上述技术手段,通过对起始破损点及邻居像素点的置黑,即可生成各个不同的破损掩膜图像的破损区域,保证破损掩膜图像的丰富数据源与多样性,从而在AGV针对破损二维码进行识别分析时,保证了识别结果更加准确和高效。
结合第一方面,在一种实施方式中,以所述起始破损点为中心,向所述起始破损点的四周不断获取所述起始破损点的邻居像素点,并将所述起始破损点的邻居像素点加入所述目标破损数组中,直至所述目标破损数组中的元素个数满足目标阈值。
根据上述技术手段,根据需要通过对目标破损数组的各个元素的获取,即可生成各个不同的破损掩膜图像的破损区域,保证破损掩膜图像的丰富数据源与多样性,从而在AGV针对破损二维码进行识别分析时,保证了识别结果更加准确和高效。
结合第一方面,在一种实施方式中,依次计算所述破损掩膜图像的破损区域内的各个像素点的加权平均值,并根据所述加权平均值对所述原始二维码图像与所述破损掩膜图像的破损区域中相应区域的像素值进行替换,以获取所述原始二维码图像对应的破损图像。
根据上述技术手段,把破损掩膜图像的破损区域的计算结果作为新的像素值来替换原有像素值,生成破损图像;在AGV针对破损二维码进行识别分析时,保证了识别结果更加准确和高效。
结合第一方面,在一种实施方式中,对所述原始二维码图像及所述原始二维码图像对应的破损掩膜图像两者的每个像素进行按位与运算,将运算结果保存到输出图像中,所述输出图像即为所述原始二维码图像对应的破损图像。
根据上述技术手段,把原始二维码图像及原始二维码图像对应的破损掩膜图像进行按位与运算,根据运算结果可以生成破损图像;在AGV针对破损二维码进行识别分析时,保证了识别结果更加准确和高效。
第二方面,本申请实施例提供了一种破损码的生成装置,所述装置包括:
原始二维码图像获取模块,用于获取原始二维码图像;
破损信息获取模块,用于获取所述原始二维码图像的破损信息;所述破损信息包括破损率、破损区域及破损颜色中的至少一者;
破损掩膜图像获取模块,用于根据所述破损信息,生成所述原始二维码图像对应的破损掩膜图像;
破损图像获取模块,用于根据所述破损掩膜图像的破损区域的各个像素值,获取所述原始二维码图像对应的破损图像。
第三方面,本申请实施例提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现上述的一种破损码的生成方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现上述的一种破损码的生成方法。
本申请提供的技术方案可以包括以下有益效果:
本申请先生成各个原始二维码图像,与各个原始二维码图像的破损信息进行预设;之后根据预设的破损信息,生成各个原始二维码图像对应的破损掩膜图像;不同的破损掩膜图像对应不同的破损信息,如不同的破损率及破损区域;最后根据该破损掩膜图像的破损区域的各个像素值,获取该原始二维码图像对应的破损图像。上述方案可以根据实际需要对破损信息进行设置,从而生成大量的破损掩膜图像,得到大量破损情况不同的破损图像。在AGV针对破损二维码进行识别分析前,以本申请生成的破损图像作为破损率识别模型的样本数据,可以保证破损率识别模型的样本数据来源的稳定性,保证破损率识别模型的识别效果的准确性和高效性,从而使得AGV针对破损二维码的识别分析更加准确;
此外,以本申请生成的破损图像作为破损率识别模型的样本数据,避免了在使用历史破损图像作为破损率识别模型的样本数据时,存在历史破损图像数量不足,以及需要对历史破损图像进行大量预先的识别处理的情况;极大减小了计算量,简化了计算流程。
附图说明
为了更清楚地说明本申请具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据一示例性实施例示出的一种破损码的生成方法的方法流程图。
图2是根据一示例性实施例示出的一种破损码的生成方法的方法流程图。
图3是根据一示例性实施例示出的2号破损区域、不同破损率所生成的破损掩膜图像示意图。
图4是根据一示例性实施例示出的2%破损率、不同破损区域所生成的破损掩膜图像示意图。
图5是根据一示例性实施例示出的掩膜操作示意图。
图6是根据一示例性实施例示出的一种破损二维码的识别方法的方法应用流程图。
图7是根据一示例性实施例示出的8%破损率、0号破损区域、不同污损颜色掩膜图像示意图。
图8是根据一示例性实施例示出的5%破损率、180污损颜色、不同破损区域的破损掩膜图像示意图。
图9是根据一示例性实施例示出的120污损颜色、0号破损区域、不同破损率掩膜图像示意图。
图10是根据一示例性实施例示出的CenterNet目标检测模型的目标预测示意图。
图11是根据一示例性实施例示出的CenterNet目标检测模型的均值平均精度示意图。
图12是根据一示例性实施例示出的不同破损程度二维码对应的识别率曲线示意图。
图13是根据一示例性实施例示出的一种破损码的生成装置的结构方框图。
图14示出了本申请一示例性实施例示出的计算机设备的结构框图。
具体实施方式
下面将结合附图对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应理解,在本申请的实施例中提到的“指示”可以是直接指示,也可以是间接指示,还可以是表示具有关联关系。举例说明,A指示B,可以表示A直接指示B,例如B可以通过A获取;也可以表示A间接指示B,例如A指示C,B可以通过C获取;还可以表示A和B之间具有关联关系。
在本申请实施例的描述中,术语“对应”可表示两者之间具有直接对应或间接对应的关系,也可以表示两者之间具有关联关系,也可以是指示与被指示、配置与被配置等关系。
本申请实施例中,“预定义”可以通过在设备(例如,包括终端设备和网络设备)中预先保存相应的代码、表格或其他可用于指示相关信息的方式来实现,本申请对于其具体的实现方式不做限定。
目前针对异常二维码识别的研究主要有两类。一类是针对异常图像二维码的识别,包括运动模糊、图像旋转、图像失真等情况;另一类是特殊光照下的二维码识别,包括光照不均、复杂光照、反光等情况。为了对破损二维码的破损率进行识别,本申请通过大量的破损二维码进行模型训练,通过训练好的模型对需要识别的破损二维码进行识别;在训练时,大量的破损二维码不易获取,并且由于实际应用场景中可能出现的问题,如磨损、破裂、缺失等情况,并考虑到运动模糊、图像旋转、图像失真、反光等问题的存在,历史破损二维码的收集较为困难。
基于此,本申请提出一种破损码的生成方法;该方法是基于计算机生成的虚拟的破损码,可根据所需要的破损率、破损区域以及二维码数量进行设置,以生成大量的清晰的破损二维码,从而提高模型训练结果的准确性,其适应性更强。
图1是根据一示例性实施例示出的一种破损码的生成方法的方法流程图。该方法由计算机设备执行。如图1所示,该生成方法可以包括如下步骤:
步骤S101、获取原始二维码图像。
在一种可能的实施方式中,由于破损二维码是基于完整的初始二维码的基础上进行损坏得到的,因此,在进行破损二维码的生成前,需要先生成原始二维码图像;该原始二维码图像即为计算机设备生成的初始的完整的、未经过损坏的二维码图像。
步骤S102、获取该原始二维码图像的破损信息;该破损信息包括破损率、破损区域及破损颜色中的至少一者。
在一种可能的实施方式中,在生成的原始二维码图像对应的破损图像前,要基于破损信息进行生成;而该破损信息可根据模型训练需要或实际应用需要进行预设,如破损率为2%,破损区域为2号区域等。
步骤S103、根据该破损信息,生成该原始二维码图像对应的破损掩膜图像。
在一种可能的实施方式中,根据该破损信息,通过计算机设备生成原始二维码图像对应的破损掩膜图像;该破损掩膜图像是为了生成该原始二维码图像对应的破损图像;掩膜图像也就是模板,就是制作一幅和原始图像大小一样的任意一幅图像,用于与原始二维码图像结合对比,以生成原始二维码图像对应的破损图像。
步骤S104、根据该破损掩膜图像的破损区域的各个像素值,获取该原始二维码图像对应的破损图像。
在一种可能的实施方式中,在生成破损掩膜图像后,即可根据破损掩膜图像生成该破损掩膜图像相应的原始二维码图像所对应的破损图像;在破损掩膜图像的基础上生成破损图像时,根据破损掩膜图像的破损区域的各个像素值,将破损掩膜图像与其相应的原始二维码图像结合对比,以生成原始二维码图像对应的破损图像;基于此,本申请可生成各个原始二维码图像分别对应的破损图像;在进行模型训练时,该原始二维码图像及原始二维码图像所对应的破损图像即可作为模型训练的样本数据集。
综上所述,本申请先生成各个原始二维码图像,与各个原始二维码图像的破损信息进行预设;之后根据预设的破损信息,生成各个原始二维码图像对应的破损掩膜图像;不同的破损掩膜图像对应不同的破损信息,如不同的破损率及破损区域;最后根据该破损掩膜图像的破损区域的各个像素值,获取该原始二维码图像对应的破损图像。上述方案可以根据实际需要对破损信息进行设置,从而生成大量的破损掩膜图像,得到大量破损情况不同的破损图像。在AGV针对破损二维码进行识别分析前,以本申请生成的破损图像作为破损率识别模型的样本数据,可以保证破损率识别模型的样本数据来源的稳定性,保证破损率识别模型的识别效果的准确性和高效性,从而使得AGV针对破损二维码的识别分析更加准确;
此外,以本申请生成的破损图像作为破损率识别模型的样本数据,避免了在使用历史破损图像作为破损率识别模型的样本数据时,存在历史破损图像数量不足,以及需要对历史破损图像进行大量预先的识别处理的情况;极大减小了计算量,简化了计算流程。
图2是根据一示例性实施例示出的一种破损码的生成方法的方法流程图。该方法由计算机设备执行。如图2所示,该生成方法可以包括如下步骤:
步骤S201、获取原始二维码图像。
在一种可能的实施方式中,该步骤S201包括:生成多张原始二维码图像;该原始二维码图像包括编码信息及图形信息;该原始二维码图像用于指示位置信息。
进一步的,本申请的原始二维码图像为AprilTag二维码,AprilTag二维码具有更高的实时性、鲁棒性和可靠性。AprilTag二维码相较于相关技术中的QR码具有以下特点:
AprilTag二维码在图像中的定位方式与QR码不同;QR码使用特殊的定位图案来标识二维码的位置和方向,而AprilTag则是通过其内部的黑白图案来实现定位和方向的识别;这种设计使得AprilTag能够在不同角度、距离和光照条件下都可靠地进行识别和定位;
AprilTag二维码的编码方式也不同于QR码;QR码使用一种基于汉明码的错误检测和纠正技术来保证数据传输的可靠性,而AprilTag二维码则采用一种基于哈希函数的压缩编码技术,可以在很小的存储空间内存储更多的信息,同时也可以快速地进行解码操作;
AprilTag二维码还具有逐级分辨率的特点,在远距离或者低分辨率情况下,可以使用更大的标记尺寸来进行识别,这也是相对于QR码的优势之一。
本申请生成全部AprilTag二维码共587张作为原始图像,其大小为100*100像素。
步骤S202、获取该原始二维码图像的破损信息;该破损信息包括破损率、破损区域及破损颜色中的至少一者。
在一种可能的实施方式中,在实际的应用场景中,由于需要对实际二维码图像进行破损率分析,希望能够直接使用输入的二维码图像,快速判断其质量的高低,因此,如何在仅使用输入图像的情况下,实现二维码图像质量的无参考评价,是问题的核心。因此,本申请引入了掩膜操作,基于不同的破损率、破损区域、破损颜色等生成对应掩膜。本申请的破损信息根据实际需要预设。相比一般的二维码识别参考图像,本申请的掩膜图像可以认为是一种伪参考图像,即图像包含的可用性信息几乎可以忽略。对于任意一幅输入图像,可以在没有高质量基准作为参考的情况下,利用伪参考掩膜图像作为比较的基准。与掩膜图像差异越小则可用性质量越低,差异越大则可用性质量越高。这样在后期的预测模型的应用时,就可以在只使用输入二维码图像的情况下进行无参考评估,得到二维码图像的可用性质量表示,从而得到实际二维码的破损率。
步骤S203、根据该破损信息,从初始掩膜图像中确定出起始破损点,并将该起始破损点加入目标破损数组中;该初始掩膜图像为白色背景的图像。
步骤S204、不断获取该起始破损点的邻居像素点,并将该邻居像素点加入该目标破损数组中,直至目标破损数组中的元素个数满足目标条件。
在一种可能的实施方式中,该步骤S204包括:以该起始破损点为中心,向该起始破损点的四周不断获取该起始破损点的邻居像素点,并将该起始破损点的邻居像素点加入该目标破损数组中,直至该目标破损数组中的元素个数满足目标阈值。
在一种可能的实施方式中,在该从初始掩膜图像中确定出起始破损点之后,将该起始破损点置黑;
在该不断获取该起始破损点的邻居像素点之后,将该邻居像素点置黑。
步骤S205、根据该初始掩膜图像及该目标破损数组,构建该原始二维码图像对应的破损掩膜图像;该目标破损数组指示破损区域。
进一步的,由于破损图案往往具有聚集的特性,本申请采用以下方法来构造破损掩膜图像;首先针对100*100像素的白色背景图像(即上述白色背景的初始掩膜图像),其中每一个像素点的RGB值均为(255,255,255),则该白色背景图像共10000像素。
之后,根据破损信息(如预设的破损率或破损区域),随机在白色背景图像上选择其中一个像素点作为起始破损点,将该起始破损点的RGB值设置为黑色(0,0,0),并将其加入black_pixels数组(即上述目标破损数组)。由于该目标破损数组表征了破损区域的大小,根据预设的破损率或破损区域,若该black_pixels数组中的黑色像素点的数量小于目标阈值,则重复以下操作:在black_pixels数组中随机挑选一个像素点(以起始破损点优先,先搜寻起始破损点的邻居像素点,之后再搜寻起始破损点的邻居像素点的邻居像素点),在搜寻的过程中,随机从上、下、左、右四个方向中选择一个邻居像素点,并访问该邻居像素点。如果该邻居像素点不在black_pixels数组中,则将该邻居像素点的RGB值设置为黑色(0,0,0),并将其加入black_pixels数组;如果black_pixels数组元素个数满足目标阈值,则保存此时的图像;如果该邻居像素点已经在black_pixels数组中,则继续以上操作。其中,由于破损率太小意义不大,使破损率达到1%是一个比较合适的范围,因此,在预设破损信息中的破损率时,通常要将破损率设置为1%以上,因此,在设置目标阈值时需保证该black_pixels数组元素个数能整除100。
此外,由于破损二维码的识别具有一定的阈值,当破损率过大时,此二维码已经不再具有破损率计算的实际意义。因此,优选的,本申请设置的黑色像素预设值为2000,即预期最大破损率为20%,破损率间隔为1%;因此,在设置目标阈值时需保证该black_pixels数组元素个数最多不超过2000。
此时请参照图3示出的2号破损区域、不同破损率所生成的破损掩膜图像示意图以及图4示出的2%破损率、不同破损区域所生成的破损掩膜图像示意图;如图3所示,图3展示了该black_pixels数组元素个数从100至1000所生成的破损掩膜图像;即预设的破损率从1%至10%所生成的破损掩膜图像,图3中的“2”指的是“2号破损区域”;图4展示了该black_pixels数组元素个数为200,破损区域从“0号破损区域”至“9号破损区域”所生成的破损掩膜图像;即预设的破损率为2%,破损区域从“0号破损区域”至“9号破损区域”所生成的破损掩膜图像。
步骤S206、根据该破损掩膜图像的破损区域的各个像素值,获取该原始二维码图像对应的破损图像。
在一种可能的实施方式中,该步骤S206包括:依次计算该破损掩膜图像的破损区域内的各个像素点的加权平均值,并根据该加权平均值对该原始二维码图像与该破损掩膜图像的破损区域中相应区域的像素值进行替换,以获取该原始二维码图像对应的破损图像。
进一步的,本申请采用两种方式获取该原始二维码图像对应的破损图像,第一种为一种基于滤波的图像处理方式;它通过使用破损掩膜图像与原始二维码图像中的像素进行逐一运算获得加权平均值或者其他特定的数学统计量,然后把计算得到的结果作为新的像素值来替换原有像素值,从而实现对图像的改变和优化。
在具体应用中,本实施例的掩膜模板(即上述破损掩膜图像)被应用于原始二维码图像时,将掩膜模板的中心与原始二维码图像中心对齐;此时计算掩膜模板破损区域内像素点的加权平均值,并将计算结果作为新的像素值替换原始二维码图像上对应的像素值;这样,破损区域的每一个像素点都会根据其周围像素的不同特征,得到一个新的像素值。实现原始二维码图像的破损掩膜处理,从而得到破损图像。
在一种可能的实施方式中,该步骤S206还包括:对该原始二维码图像及该原始二维码图像对应的破损掩膜图像两者的每个像素进行按位与运算,将运算结果保存到输出图像中,该输出图像即为该原始二维码图像对应的破损图像。
进一步的,第二种获取该原始二维码图像对应的破损图像的方式为基于python语言处理原始二维码图像的掩膜操作,生成破损图像;cv2.bitwise_and()函数是OpenCV库中的一个按位与运算函数;在使用cv2.bitwise_and()函数时,其输入参数是两张待处理的二值化图像,分别为原始二维码图像及破损掩膜图像,cv2.bitwise_and()函数会对这两张二值化图像上的每个像素进行按位与运算,将得到的结果保存到输出图像中。在进行按位与运算时,只有当两个输入的二值化图像上的像素在相同位置的像素值都为255(即二进制数的每一位都为1)时,输出图像上对应位置的像素值才会被置为255,否则置为0。使用cv2.bitwise_and()函数将原始二维码图像及破损掩膜图像相乘,即生成了经过掩膜处理的破损二维码;此时请参照图5示出的掩膜操作示意图;如图5所示,原始二维码图像经过600_10_mask破损掩膜处理后得到了破损图像,其中600代表该破损掩膜有600个破损像素点即6%破损率,10代表该破损掩膜的破损区域为10号。
综上所述,本申请先生成各个原始二维码图像,与各个原始二维码图像的破损信息进行预设;之后根据预设的破损信息,生成各个原始二维码图像对应的破损掩膜图像;不同的破损掩膜图像对应不同的破损信息,如不同的破损率及破损区域;最后根据该破损掩膜图像的破损区域的各个像素值,获取该原始二维码图像对应的破损图像。上述方案可以根据实际需要对破损信息进行设置,从而生成大量的破损掩膜图像,得到大量破损情况不同的破损图像。在AGV针对破损二维码进行识别分析前,以本申请生成的破损图像作为破损率识别模型的样本数据,可以保证破损率识别模型的样本数据来源的稳定性,保证破损率识别模型的识别效果的准确性和高效性,从而使得AGV针对破损二维码的识别分析更加准确;
此外,以本申请生成的破损图像作为破损率识别模型的样本数据,避免了在使用历史破损图像作为破损率识别模型的样本数据时,存在历史破损图像数量不足,以及需要对历史破损图像进行大量预先的识别处理的情况;极大减小了计算量,简化了计算流程。
图6是根据一示例性实施例示出的一种破损二维码的识别方法的方法应用流程图。该方法在实际应用时,以上述图2及图3实施例中的原始二维码图像(AprilTag二维码)以及该原始二维码图像对应的经过掩膜处理的破损图像为样本数据集,对待训练的CenterNet目标检测模型进行训练,并通过训练好的CenterNet目标检测模型实现目标破损二维码的识别;该方法由计算机设备执行。如图6所示,该方法可以包括如下步骤:
步骤S601、获取原始二维码图像。
步骤S602、获取该原始二维码图像的破损信息;该破损信息包括破损率、破损区域及破损颜色中的至少一者。
步骤S603、根据该破损信息,从初始掩膜图像中确定出起始破损点,并将该起始破损点加入目标破损数组中;该初始掩膜图像为白色背景的图像。
步骤S604、不断获取该起始破损点的邻居像素点,并将该邻居像素点加入该目标破损数组中,直至目标破损数组中的元素个数满足目标条件。
步骤S605、根据该初始掩膜图像及该目标破损数组,构建该原始二维码图像对应的破损掩膜图像;该目标破损数组指示破损区域。
步骤S606、根据该破损掩膜图像的破损区域的各个像素值,获取该原始二维码图像对应的破损图像。
其中,上述步骤S601至步骤S606的具体实现方式与如图2所示的实施例中的步骤S201至步骤S206的具体实现方式类似,此处不再赘述。
步骤S607、获取样本数据集;该样本数据集包括二维码图像样本及二维码标签样本。
在一种可能的实施方式中,该二维码图像样本包括原始二维码图像和经过掩膜操作的破损二维码图像;该破损二维码图像包括不同污损颜色、不同破损区域及不同破损率的破损样本;
该二维码标签样本包括二维码的文件名、二维码的文件地址、二维码包含的污损图案类型和位置及二维码的图像大小中的至少一者。
在一种可能的实施方式中,在该获取样本数据集后,根据指定比例,将该样本数据集划分成训练样本集、验证样本集及测试样本集;
根据该破损二维码图像的污损颜色,将该训练样本集分类成多个种类,并记录类型信息。
进一步的,该样本数据集可以为VOC格式样本,包括图像(即上述二维码图像样本)和标签(即上述二维码标签样本)。二维码图像样本即为原始二维码图像(完好无损的AprilTag二维码)和经过掩膜操作的破损二维码图像;该原始二维码图像与该经过掩膜操作的破损二维码图像一一对应。
示例性的,请参照图7示出的8%破损率、0号破损区域、不同污损颜色掩膜图像示意图,本申请的样本数据集,选取了10种二值化后的污损颜色,其RGB值分别为(255,255,255)、(230,230,230)、(210,210,210)、(180,180,180)、(150,150,150)、(120,120,120)、(90,90,90)、(60,60,60)、(30,30,30)、(0,0,0),用于区分不同颜色的污损图像,分别对应图3中的颜色0至255;其中,“0”表示“0号破损区域”;“800”表示破损率为8%,800个破损的黑色像素点;
针对破损区域,请参照图8示出的5%破损率、180污损颜色、不同破损区域的破损掩膜图像示意图;本申请的样本数据集,选取了10种不同的破损区域,由编号0区域到编号9区域。
针对破损率,请参照图9示出的120污损颜色、0号破损区域、不同破损率掩膜图像示意图;本申请的样本数据集,选取了20种不同的破损率,由1%到20%。
上述二维码标签样本可以为xml格式文件,内容主要包括对应二维码的文件名、文件地址、图像大小及包含的污损图案类型和位置。
以下通过简单示例对上述样本数据集的获取内容进行详细说明:
本申请实施例共生成样本1174000份,包括不同原始二维码图像587种,不同破损率20种,不同破损区域10种,不同污损颜色10种,其分布如表1,2,3所示,其中,表1示出了不同破损率的样本分布;表2示出了不同破损区域的样本分布;表3示出了不同污损颜色的样本分布。
表1
表2
破损区域 | 比例 | 样本数 |
0 | 10% | 117400 |
1 | 10% | 117400 |
2 | 10% | 117400 |
3 | 10% | 117400 |
4 | 10% | 117400 |
5 | 10% | 117400 |
6 | 10% | 117400 |
7 | 10% | 117400 |
8 | 10% | 117400 |
9 | 10% | 117400 |
表3
污损颜色 | 比例 | 样本数 |
Stain_0 | 10% | 117400 |
Stain_30 | 10% | 117400 |
Stain_60 | 10% | 117400 |
Stain_90 | 10% | 117400 |
Stain_120 | 10% | 117400 |
Stain_150 | 10% | 117400 |
Stain_180 | 10% | 117400 |
Stain_210 | 10% | 117400 |
Stain_230 | 10% | 117400 |
Stain_255 | 10% | 117400 |
其中随机选择样本数据集的90%作为训练样本集和验证样本集,剩余10%作为测试样本集,即上述的根据指定比例,将该样本数据集划分成训练样本集、验证样本集及测试样本集。其中训练样本集和验证样本集中90%为训练样本集,剩余10%为验证样本集。
根据污损颜色,将所有训练样本集分类成8个种类,分别标号为Stain_30、Stain_60、Stain_90、Stain_120、Stain_150、Stain_180、Stain_210、Stain_230。将类型信息写入voc_classes.txt,以记录类型信息。
按照上述分类方法,根据二维码图像样本及二维码标签样本,将所有样本数据集分为test、train、trainval、val,其中trainval为训练样本集和验证样本集、test为测试样本集、train为训练样本集、val为验证样本集。
步骤S608、将该样本数据集输入至待训练的CenterNet目标检测模型,并对该CenterNet目标检测模型进行训练。
在一种可能的实施方式中,该步骤S608包括:
获取该待训练的CenterNet目标检测模型的训练参数及规格数据;该训练参数及规格数据包括主干特征提取网络、预训练权值、训练图片大小、冻结阶段参数、解冻阶段参数、模型置信度、模型学习率的最大最小值、优化器参数及评估参数中的至少一者;
根据该训练样本集、该训练参数及规格数据,对该CenterNet目标检测模型进行训练。
进一步的,本申请基于CenterNet目标检测模型的破损二维码识别,以下对CenterNet目标检测模型的应用原理进行详细说明:
CenterNet目标检测模型的主干网络:
CenterNet目标检测模型使用多种主干特征网络,主要包括Hourglass Network网络、DLANet网络和Resnet网络,可选的,本实施例使用Resnet作为主干特征提取网络。ResNet50是深度学习中常用的卷积神经网络之一,在其中使用了两种基本块:Conv Block和Identity Block。Conv Block包含三个卷积层,分别是一个1x1卷积层、一个3x3卷积层和另一个1x1卷积层。这三个卷积层的作用是将输入数据进行降维和升维,同时加入非线性激活函数ReLU提高网络的非线性表达能力。在最后一个1x1卷积层之后还有一个BatchNormalization层,对卷积输出的特征图进行标准化操作,有助于提高训练过程中的稳定性和网络的泛化能力。Identity Block也是由三个卷积层组成,不同的是没有降维和升维的功能,即第一个和第三个卷积层的输出通道数与输入通道数相同,而中间的3x3卷积层中的输出通道数则为输入通道数的四倍。Identity Block的作用是在保持特征图尺寸不变的情况下,增强特征的表达力,对网络进行加深和拓宽。同样地,该块之后也包含了一个BatchNormalization层;Conv Block及Identity Block均为残差网络结构。
CenterNet目标检测模型的预测实现:
(1)获取初步特征
当输入的图片是512*512*3时,首先对输入图片执行卷积处理,其中卷积核大小为7*7,步长为2*2,通道数为64。然后对输入图片进行标准化和激活函数处理,再进行一次池化核大小为3*3,步长为2*2的最大池化处理。最后进行多次Conv Block和Identity Block堆叠,即可获得一个16*16*2048的有效特征层。
(2)利用初步特征获得高分辨率特征图
对于上一步获得的Resnet50的最后一个特征层,CenterNet目标检测模型使用类似于金字塔池化的方法,在不同尺度上对低分辨率特征图进行进一步处理和融合,获得一组具有不同尺寸和语义信息的特征图。
然后,CenterNet目标检测模型利用这些特征图来分别对每个对象的位置进行预测,并生成以对象中心为中心点的高斯热图。接下来,其将这些高斯热图与原始的低分辨率特征图进行相加并上采样,此时获得了一个有效特征层,即高分辨率特征图,利用该有效特征层可以获得最终的预测结果。
(3)Center Head从特征获取预测结果
CenterNet目标检测模型中的Center Head是用来从高分辨率特征图中获取目标位置及其大小信息的部分。具体来说,Center Head从高分辨率特征图中提取每个位置的特征,然后通过几个连续的卷积层进行处理,并输出三个矩阵:objectness maps、center-ness maps和regression maps。
其中,objectness maps是一个二值矩阵,用于指示该位置是否存在目标;center-ness maps是一个标量矩阵,用于评估该位置是否为目标的中心点;regression maps是一个二维向量矩阵,用于预测目标中心点到相应边界框左上角的距离和右下角的距离。
在具体实现上,Center Head首先进行一些卷积操作和激活函数处理,并将结果进行split,分为objectness,center-ness和regression三个部分。然后,针对每个部分,Center Head又采用了一些特定的网络结构来进一步提取特征。对于objectness和center-ness部分,Center Head分别使用了一个卷积层和全连接层进行处理;而对于regression部分,则使用了两个卷积层并且为最后一层加入了Sigmoid激活函数来限制结果范围在0和1之间。
最后,Center Head基于生成的objectness maps、center-ness maps和regression maps信息,通过计算预测边界框左上和右下角坐标,并转化到原始图像上,在原图像上得到目标检测的结果。
(4)预测结果解码
在CenterNet目标检测模型中,预测结果解码过程包括两个步骤:非极大值抑制(NMS)和解码,其目的是消除重复检测和将高斯热图转换为边界框。首先,在非极大值抑制(NMS)阶段,对于每个物体中心点,需要保留最大响应的输出,并筛掉其他低置信度的冗余输出。这一步具体实现上,通常采取以下流程:
a)将所有中心点按照objectness scores(对象响应得分)从高到低排序;
b)选择得分最高的中心点,并保留该点形成的目标预测框作为输出结果;
c)移除与选定预测框的IoU(交并比)大于某个给定阈值的所有其他中心点以及它们对应的目标框;
d)重复上述过程,选取得分次高的中心点,并保留该点形成的目标预测框作为输出结果;
e)直到所有中心点被处理完毕,得到所有保留的预测框;
其次,在解码阶段,对于每个被保留的预测框,将高斯热图转换为边界框。具体地,对于保留的每个中心点,可以使用其空间位置和预测的回归偏移量来计算得到边界框。按照该预测方式,对于每种类别,可以得到一组预测框。
CenterNet目标检测模型的训练实现:
(1)真实框处理
在CenterNet目标检测模型中,真实框的处理过程包括以下几个步骤:
1、对于每个训练样本,首先确定实际存在的目标边界框(ground-truth boxes);这可以通过计算真实框与输出热图的IoU(交集/并集)进行实现。如果某个真实边界框与热图的IoU大于某个预设的阈值,则该目标被认为是存在于该位置并进行进一步的处理;
2、在确定哪些目标存在后,需要将这些目标映射到特定的高分辨率特征图上。此时,应用回归模块来计算中心点偏移量和宽高缩放因子,并且将相应的高斯热图与输出一起进行训练来提高模型精度。具体地,将目标中心点坐标映射到特征图坐标系上。然后,对于每个目标,采用高斯函数在特定中心点处生成一个热图,其中高斯函数的方差与目标大小相关;
3、在生成高斯热图后,还需要计算并生成regression targets。具体来说,针对每个目标,需要计算目标中心点到热图格点的偏移量和宽高缩放因子。这些值将被用于训练回归网络。
(2)损失值计算
损失值loss包括热力图loss,reg中心点loss,wh宽高loss。
找到真实框的中心,通过真实框的中心找到其对应的特征点,热力图loss采用Focal loss思想:
其中,Lk表示目标中心点预测的置信度损失,α和β是Focal函数的超参数;可选的,α和β分别为2和4;N是正样本的数量(正样本为预测框与真实框重合度大于目标值),用于进行标准化,是预测值,Yxyc是真实值。
与CornerNet一样,为了消除采样带来的预测坐标结果偏差,CenterNet目标检测模型同时预测输出每个坐标位置的偏移量Offset:
其中,Loff是偏移量回归损失;N是正样本的数量(正样本为预测框与真实框重合度大于目标值);表示预测目标中心坐标,/>表示预测结果的偏移量,/>表示目标经过下采样之后的真实坐标位置,p表示目标在原图的真实坐标位置,R表示下采样倍数。
通过以下公式获取Reg中心点loss和wh宽高loss使用普通L1损失函数:
其中,Lsize是目标宽和高预测结果的回归损失;N是正样本的数量(正样本为预测框与真实框重合度大于目标值),是预测值,Sk是真实值。
通过以下公式获取总的损失值loss值:
Ldet=Lk+λsizeLsize+λoffLoff;
其中,Ldet表示总损失值,Lk表示目标中心点预测的置信度损失,λsize及λoff均为系数,Lsize表示目标宽和高预测结果的回归损失,Loff表示偏移量回归损失。
基于上述原理,本实施例将该样本数据集输入至待训练的CenterNet目标检测模型,并对该CenterNet目标检测模型进行训练。
在训练的过程中,需要对待训练的CenterNet目标检测模型的训练参数及规格数据进行确认,首先,针对主干特征提取网络、预训练权值以及训练图片大小,本实施例使用ResNet50作为主干特征提取网络,使用centernet_resnet50_voc.pth作为预训练权值,训练图片大小为512*512。
其次,针对冻结阶段参数以及解冻阶段参数,本申请将CenterNet目标检测模型的训练过程分为两个阶段,第一阶段为冻结阶段,第二阶段为解冻阶段。在冻结阶段,CenterNet目标检测模型的主干将被冻结,主干特征提取网络不发生改变;由于模型训练的参数较少,此时CenterNet目标检测模型的占用的显存较小,仅对网络进行微调;设置初始训练代数Init_Epoch为0,冻结训练迭代次数Freeze_Epoch为500,Freeze_batch_size为16,学习率Freeze_lr为1e-3。
在解冻阶段,此时CenterNet目标检测模型的主干特征提取网络不被冻结,特征提取网络会发生改变,此时模型训练的参数较多,CenterNet目标检测模型占用的显存较大,网络的所有参数都会发生改变;设置训练迭代总次数UnFreeze_Epoch为1000,UnFreeze_batch_size为8,学习率UnFreeze_lr为1e-4。
针对模型置信度以及模型学习率的最大最小值,CenterNet目标检测模型的置信度设置为0.3,只有得分大于置信度的预测框会被保留下来;非极大抑制所用到的nms_iou大小设置为0.3;CenterNet目标检测模型的最大学习率Init_lr设置为5e-4,CenterNet目标检测模型的最小学习率Min_lr设置为最大学习率的0.01倍。
针对优化器参数,CenterNet目标检测模型使用adam优化器,优化器内部使用到的momentum参数设置为0.9,权值衰减weight_decay设置为0;学习率下降方式lr_decay_type设置为cos。
针对评估参数,CenterNet目标检测模型设置为每10代保存一次权值,每50代进行一次评估,此处评估获得的mAP为验证集的mAP,设置评估参数较为保守,目的是加快评估速度。
步骤S609、获取该CenterNet目标检测模型的激活函数,并根据该激活函数对训练阶段的该CenterNet目标检测模型进行优化。
进一步的,为提升该CenterNet目标检测模型的速度和识别准确率,本实施例使用ResNet网络作为模型主干特征提取网络。ResNet是一种用于图像分类的深度神经网络,能够在不增加网络复杂度的情况下增加网络深度,提高网络模型准确率。
ResNet网络有18、34、50、101和152层等不同深度的网络结构,综合考虑网络深度、浮点运算数量和在ImageNet数据库上的错误率,本实施例采用50层深度神经网络ResNet作为主干网络,作为主干网络提取网络,用以提取二维码的特征。
为利用非线性函数描述神经网络提取的特征,神经网络通过仿射变换后需要紧跟非线性激活函数;神经网络常用的激活函数主要有Sigmoid函数、Tanh函数、ReLU函数、LeakyReLU等;优选的,本实施例使用的CenterNet目标检测算法激活函数为ReLU函数,ReLU函数的表达式如下所示:
y=mCX(0,x);
其中,x表示神经元的输入权重,y表示神经元的实际使用的权重。
该ReLU函数可以有效地解决梯度消失的问题,同时具有快速的收敛速度和高效的计算能力,还可以避免无用信息的干扰,为网络引入了稀疏性,从而进一步提升了计算效率。
步骤S610、根据该样本数据集中的验证样本集,对训练好的CenterNet目标检测模型进行性能评估。
在一种可能的实施方式中,该步骤S610包括:
步骤S6101、通过该训练好的CenterNet目标检测模型对该验证样本集进行目标预测,以获取该验证样本集对应的污损图案;
步骤S6102、根据该污损图案,获取该验证样本集的原始二维码图像上的污损预测框;
步骤S6103、根据该污损预测框及该验证样本集的原始二维码图像上对应的污损真实框,获取该训练好的CenterNet目标检测模型的均值平均精度;
步骤S6104、根据该均值平均精度对该训练好的CenterNet目标检测模型进行性能评估。
在一种可能的实施方式中,该步骤S6103包括:
根据该污损预测框及该验证样本集的原始二维码图像上相应的污损真实框的重合度,获取该训练好的CenterNet目标检测模型对所有类型破损二维码的识别平均精度;
根据识别平均精度,获取该训练好的CenterNet目标检测模型的均值平均精度。
进一步的,以下对CenterNet目标检测模型的性能评估定义进行详细说明:
在机器学习领域,准确率(Accuracy)、召回率(Recall)、精确率(Precision)和F1Score通常被用来评估分类模型的性能:
(1)准确率(Accuracy)
准确率表示分类器正确分类的样本数与总样本数的比值,其计算公式为:
其中,True Postive表示真正例(指模型正确地预测为正例的样本数,即模型预测为正例且真实标签也为正例的样本数);True Negative表示真负例(指模型错误地预测为正例的样本数,即模型预测为正例但真实标签为负例的样本数);False Postive表示假正例(指模型错误地预测为正例的样本数,即模型预测为正例但真实标签为负例的样本数);False Negative表示假负例(指模型错误地预测为负例的样本数,即模型预测为负例但真实标签为正例的样本数)。
当样本数据集的各个类别数量差不多时,使用准确率是一种较好的模型性能度量方法;在某些情况下,例如二分类问题中类别不平衡的情况下,准确率可能不太适用,因为此时只有通过考虑其他性能指标才能更全面地评估模型性能。
(2)召回率(Recall)
召回率也称为查全率,它表示分类器正确预测出来的正类别样本数占所有正实例样本数的比值。其计算公式为:
当要求CenterNet目标检测模型将所有真实正例都判别为正例时,召回率这个指标也较为重要。
(3)精确率(Precision)
精确率表示分类器正确预测出来的正类别样本数占所有预测为正实例样本数的比值。其计算公式为:
(4)F1 Score
F1 Score是精确率和召回率的权衡,是这两个指标的调和平均值,其计算公式为:
通常认为,F1 Score相对于准确率更适用于样本类别不平衡的情况,或者正负样本比例差距较大的情况。
基于此,本申请对训练好的CenterNet目标检测模型进行性能评估,首先对CenterNet目标检测模型进行目标预测:
当CenterNet目标检测模型训练完成后,使用CenterNet目标检测模型的detect_image函数对验证样本集进行目标预测,检测到验证样本集的污损图案后,在原始二维码图像上进行预测框绘制,并以污损预测框的面积除以总面积作为预测破损率;此时,请参照图10示出的CenterNet目标检测模型的目标预测示意图,如图10所示,识别到Stain_60(污损颜色的分类)破损,其置信度为0.79。
可选的,本实施例设置的MINOVERLAP(最小交叠)为0.5,预测置信度confidence设置为0.02;当某一预测框与真实框重合度大于MINOVERLAP时,该预测框被认为是正样本,否则为负样本。此外,预测时使用到的非极大抑制值的大小nms_iou设置为0.5,其值越大表示非极大抑制越不严格;又由于本实施例通过该均值平均精度(mAP,mean averageprecision)对该训练好的CenterNet目标检测模型进行性能评估,因为计算mAP需要获得近乎所有的预测框,上面定义的预测置信度confidence无法随意更改,因此本实施例专门定义一个score_threhold用于代表门限值,进而在计算mAP时找到门限值对应的Recall和Precision值,本实施例设置的门限值score_threhold为0.5。
针对均值平均精度(mAP,mean average precision),当应用于目标检测任务时,mAP通常是评估检测算法优劣的重要指标之一,因此本实施例使用mAP来评估CenterNet目标预测模型在AprilTag二维码破损率识别任务上的性能。
mAP是所有类别平均精度(AP)的平均值。对于每个类别,识别平均精度AP都是一种精确度度量,它考虑了预测和真实标签之间的匹配程度(IoU),因此可以有效地衡量模型检测Accuracy、Recall、Precision等性能。mAP可以通过将所有类别的AP值加起来并除以类别数来进行求解。
整个均值平均精度mAP计算流程,包括获得预测结果、获得真实框、计算VOC_mAP。此时请参照图11示出的CenterNet目标检测模型的均值平均精度示意图。图11是沿用上述示例,通过对117400份样本的评估,得到根据污损颜色分类所得到的8个类型(Stain_30、Stain_60、Stain_90、Stain_120、Stain_150、Stain_180、Stain_210、Stain_230)的识别平均精度AP;最后,取8个类型的识别平均精度AP的平均值,得到CenterNet目标检测模型的均值平均精度mAP为98.95%,说明此CenterNet目标检测模型对于AprilTag二维码破损率识别具有较高的性能。
步骤S611、根据该样本数据集中的测试样本集,对该训练好的CenterNet目标检测模型进行性能测试。
进一步的,上述验证样本集,用于评估训练出的模型效果,决定是否重新训练模型或者选择其他的算法,根据验证样本集的结果选择性能最好的模型;而测试样本集的实现步骤与验证样本集一致,用于对训练好的CenterNet目标检测模型进行性能测试,即测试模型的稳定性、鲁棒性、泛化误差,测试样本集不参与任何模型的建立和准备。
步骤S612、获取待识别的目标破损二维码,并通过训练好的该CenterNet目标检测模型对该目标破损二维码进行识别,以获取该目标破损二维码的破损率。
步骤S613、根据破损率的影响程度、破损区域分布情况、破损颜色及破损识别算法,获取不同破损颜色的二维码破损率阈值、不同破损区域的二维码破损率阈值及AGV定位二维码破损率阈值。
在一种可能的实施方式中,该步骤S613包括:
构建一组包含不同原始二维码图像、不同破损率、不同破损区域、不同破损颜色的数据集;
创建检测器;该检测器用于对该数据集进行识别,以记录该数据集的每个样本的识别结果;
根据该每个样本的识别结果,分别获取不同破损颜色以及不同破损区域的破损率平均值,以获取不同破损颜色的二维码破损率阈值、不同破损区域的二维码破损率阈值;
根据该每个样本的识别结果,获取每个破损率的破损图像的识别率;
根据该每个破损率的破损图像的识别率与相应破损图像的破损率之间的关系曲线,获取AGV定位二维码破损率阈值。
步骤S614、根据该不同破损颜色的二维码破损率阈值、不同破损区域的二维码破损率阈值、该AGV定位二维码破损率阈值及该目标破损二维码的破损率,对该目标破损二维码进行预警及修复。
进一步的,以下对二维码破损率阈值进行详细说明:
二维码破损率阈值是指在识别二维码时,当二维码图像被破损的程度达到一定的阈值时,就会导致二维码识别的失败。这个阈值通常根据不同的应用场景和识别算法的特点而有所不同。当一个二维码被破坏时,可能会导致其部分信息缺失或变形、模糊等问题,从而影响二维码的识别效果。为了提高二维码识别的鲁棒性和可靠性,需要设置合理的破损率阈值,以保证在破损率低于阈值时,能够成功地识别出二维码。
由于二维码本身具有一定的纠错机制,因此一定程度的破损与污损并不会影响二维码的正常工作;但随着二维码破损率的逐渐增加,二维码一定会变为无法被识别的损坏状态;其中二维码损坏无法被识别的最小破损率,就是二维码的破损率阈值。
在实际应用中,二维码破损率阈值的选择通常需要考虑多种因素,如破损率对于二维码识别的影响程度、破损区域分布情况、破损颜色、使用的识别算法的特点等等。有时候,为了获得更高的二维码识别精度,也可以采用多个不同的破损率阈值来处理二维码图像,并将它们的识别结果进行融合,以提高整体的识别效果。
本申请使用二维码破损率阈值用于AGV定位中的二维码破损预警,当AGV识别到二维码已接近破损率阈值时,可以提前预警通知维护人员对二维码进行维护,避免二维码因无法识别导致***无法正常运作。
当破损率阈值设定过低时,维护人员需要频繁地维护二维码,导致人工成本和***检修停滞成本上升。当破损率阈值设定过高时,可能二维码已损坏无法被识别,但此时并未预警,导致***停滞,影响***效率。
基于此,本申请提出了二维码破损率阈值的算法,本申请使用python语言中的pupil_apriltags库来对AprilTag二维码进行识别判断,此库为AprilTag二维码处理函数库;计算步骤包括:
(1)计算不同破损颜色的二维码破损率阈值、不同破损区域的二维码破损率阈值;
为了获取不同破损颜色、不同破损区域的AprilTag二维码破损率阈值,本实施例采取了以下步骤:
1、构建一组包含不同原始二维码、不同破损率、不同破损区域、不同破损颜色标签的数据集。示例性的,本实施例共生成样本1174000份,包括不同原始二维码图像587种,不同破损率20种,不同破损区域10种,不同污损颜色10种;
2、使用apriltag.Detector函数创建一个AprilTag检测器,使用检测器对所有的数据集进行识别,记录每个样本的识别结果;
3、记录不同破损颜色、不同破损区域二维码无法识别的最小破损率,分别求平均值,即可得到不同破损颜色、不同破损区域二维码破损率阈值。
不同破损颜色对应的二维码破损阈值如表4所示:
表4
破损颜色/RGB | 破损率阈值 | 破损颜色/RGB | 破损率阈值 |
(0,0,0) | 17.37% | (150,150,150) | 8.34% |
(30,30,30) | 17.12% | (180,180,180) | 8.23% |
(60,60,60) | 17.31% | (210,210,210) | 8.13% |
(90,90,90) | 17.53% | (230,230,230) | 8.05% |
(120,120,120) | 17.97% | (255,255,255) | 8.01% |
不同破损区域对应的二维码破损率阈值如表5所示:
表5
(2)AGV定位二维码破损率阈值;
为了计算AGV定位中的AprilTag二维码破损率阈值,实现AGV定位中的二维码维护预警,本申请采取了以下计算方法:
1、构建一组包含不同原始二维码、不同破损率、不同破损区域、不同破损颜色标签的数据集。示例性的,本实施例共生成样本1174000份,包括不同原始二维码图像587种,不同破损率20种,不同破损区域10种,不同污损颜色10种;
2、使用apriltag.Detector函数创建一个AprilTag检测器,使用检测器对所有的数据集进行识别,记录每个样本的识别结果;
3、对于每个破损率的破损图像,计算其被正确识别的比例,即可得到该破损程度下的准确率。
4、绘制识别率(准确率)-破损率曲线,并选择一个适当的阈值,使得准确率在该阈值以下时视为无法正确识别该破损率的二维码,此处请参照图12示出的不同破损程度二维码对应的识别率曲线示意图,该识别率(准确率)-破损率曲线的横坐标为破损率,纵坐标为识别率。由图12可知,根据AGV定位中对二维码准确率要求和误识率考虑,综合考虑确定本实施例选取准确率阈值为70%,即识别准确率在70%以下的破损率视为无法准确识别的破损率,因此计算的基于AGV定位技术的破损二维码识别模型需要设定的破损率阈值为7.54%。
综上所述,本申请的核心问题是在二维码的AGV定位技术中,如何识别因破损而无法使用的二维码,并及时判断是否需要进行维护;为了解决这个难题,本申请对二维码识别与检测技术以及AGV定位技术进行深入的总结和分析,提出一种可行的面向AGV定位的破损二维码识别方法,并通过实验验证其高效性和可行性。此外,该方法具有较好的适应性,可以有效地解决磨损、破裂、缺失等实际应用中可能出现的问题。
本申请的研究成果对于基于二维码定位的AGV小车在SLAM即时定位与地图构建技术中提供一种高效、准确的破损二维码识别方案,并具有一定的理论和实践意义。本申请通过实验验证该方法的可行性和高效性。因此,本申请可以为基于二维码定位的AGV小车在SLAM即时定位与地图构建技术中提供高效、准确的破损二维码识别方案。
本申请使用CenterNet目标检测模型作为训练模型,使用ResNet50网络作为模型主干特征提取网络,对经过破损掩膜处理的AprilTag二维码进行训练。
在上述方案中,本申请首先生成全部AprilTag二维码(即原始二维码图像),然后针对不同破损率,不同破损区域,不同污损颜色,生成多种破损掩膜图像;接着使用CenterNet目标检测模型对经过掩膜处理的破损图像进行训练,使用ResNet网络代替原模型中的网络作为模型主干特征提取网络,还对训练完成的CenterNet目标检测模型进行性能评估;最后分别对不同破损颜色、不同破损区域对应的二维码破损阈值与基于AGV定位技术的二维码破损率阈值进行计算。
图13是根据一示例性实施例示出的一种破损码的生成装置的结构方框图。该装置包括:
原始二维码图像获取模块1301,用于获取原始二维码图像;
破损信息获取模块1302,用于获取该原始二维码图像的破损信息;该破损信息包括破损率、破损区域及破损颜色中的至少一者;
破损掩膜图像获取模块1303,用于根据该破损信息,生成该原始二维码图像对应的破损掩膜图像;
破损图像获取模块1304,用于根据该破损掩膜图像的破损区域的各个像素值,获取该原始二维码图像对应的破损图像。
在一种可能的实施方式中,该原始二维码图像获取模块1301,还用于:生成多张原始二维码图像;该原始二维码图像包括编码信息及图形信息;该原始二维码图像用于指示位置信息。
在一种可能的实施方式中,该破损掩膜图像获取模块1303,还用于:
根据该破损信息,从初始掩膜图像中确定出起始破损点,并将该起始破损点加入目标破损数组中;该初始掩膜图像为白色背景的图像;
不断获取该起始破损点的邻居像素点,并将该邻居像素点加入该目标破损数组中,直至目标破损数组中的元素个数满足目标条件;
根据该初始掩膜图像及该目标破损数组,构建该原始二维码图像对应的破损掩膜图像;该目标破损数组指示破损区域。
在一种可能的实施方式中,该装置还用于:
在该从初始掩膜图像中确定出起始破损点之后,将该起始破损点置黑;
在该不断获取该起始破损点的邻居像素点之后,将该邻居像素点置黑。
在一种可能的实施方式中,该破损掩膜图像获取模块1303,还用于:
以该起始破损点为中心,向该起始破损点的四周不断获取该起始破损点的邻居像素点,并将该起始破损点的邻居像素点加入该目标破损数组中,直至该目标破损数组中的元素个数满足目标阈值。
在一种可能的实施方式中,该破损图像获取模块1304,还用于:
依次计算该破损掩膜图像的破损区域内的各个像素点的加权平均值,并根据该加权平均值对该原始二维码图像与该破损掩膜图像的破损区域中相应区域的像素值进行替换,以获取该原始二维码图像对应的破损图像。
在一种可能的实施方式中,该破损掩膜图像获取模块1303,还用于:
对该原始二维码图像及该原始二维码图像对应的破损掩膜图像两者的每个像素进行按位与运算,将运算结果保存到输出图像中,该输出图像即为该原始二维码图像对应的破损图像。
综上所述,本申请先生成各个原始二维码图像,与各个原始二维码图像的破损信息进行预设;之后根据预设的破损信息,生成各个原始二维码图像对应的破损掩膜图像;不同的破损掩膜图像对应不同的破损信息,如不同的破损率及破损区域;最后根据该破损掩膜图像的破损区域的各个像素值,获取该原始二维码图像对应的破损图像。上述方案可以根据实际需要对破损信息进行设置,从而生成大量的破损掩膜图像,得到大量破损情况不同的破损图像。在AGV针对破损二维码进行识别分析前,以本申请生成的破损图像作为破损率识别模型的样本数据,可以保证破损率识别模型的样本数据来源的稳定性,保证破损率识别模型的识别效果的准确性和高效性,从而使得AGV针对破损二维码的识别分析更加准确;
此外,以本申请生成的破损图像作为破损率识别模型的样本数据,避免了在使用历史破损图像作为破损率识别模型的样本数据时,存在历史破损图像数量不足,以及需要对历史破损图像进行大量预先的识别处理的情况;极大减小了计算量,简化了计算流程。
请参阅图14,其是根据本申请一示例性实施例提供的一种计算机设备示意图,所述计算机设备包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,实现上述的一种破损码的生成方法。
其中,处理器可以为中央处理器(Central Processing Unit,CPU)。处理器还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本申请实施方式中的方法对应的程序指令/模块。处理器通过运行存储在存储器中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施方式中的方法。
存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需要的应用程序;存储数据区可存储处理器所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
在一示例性实施例中,还提供了一种计算机可读存储介质,用于存储有至少一条计算机程序,所述至少一条计算机程序由处理器加载并执行以实现上述方法中的全部或部分步骤。例如,该计算机可读存储介质可以是只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)、磁带、软盘和光数据存储设备等。
本领域技术人员在考虑说明书及实践这里公开的申请后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (10)
1.一种破损码的生成方法,其特征在于,所述方法包括:
获取原始二维码图像;
获取所述原始二维码图像的破损信息;所述破损信息包括破损率、破损区域及破损颜色中的至少一者;
根据所述破损信息,生成所述原始二维码图像对应的破损掩膜图像;
根据所述破损掩膜图像的破损区域的各个像素值,获取所述原始二维码图像对应的破损图像。
2.根据权利要求1所述的方法,其特征在于,所述获取原始二维码图像,包括:
生成多张原始二维码图像;所述原始二维码图像包括编码信息及图形信息;所述原始二维码图像用于指示位置信息。
3.根据权利要求1所述的方法,其特征在于,所述根据所述破损信息,生成所述原始二维码图像对应的破损掩膜图像,包括:
根据所述破损信息,从初始掩膜图像中确定出起始破损点,并将所述起始破损点加入目标破损数组中;所述初始掩膜图像为白色背景的图像;
不断获取所述起始破损点的邻居像素点,并将所述邻居像素点加入所述目标破损数组中,直至目标破损数组中的元素个数满足目标条件;
根据所述初始掩膜图像及所述目标破损数组,构建所述原始二维码图像对应的破损掩膜图像;所述目标破损数组指示破损区域。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在所述从初始掩膜图像中确定出起始破损点之后,将所述起始破损点置黑;
在所述不断获取所述起始破损点的邻居像素点之后,将所述邻居像素点置黑。
5.根据权利要求3所述的方法,其特征在于,所述不断获取所述起始破损点的邻居像素点,并将所述邻居像素点加入所述目标破损数组中,直至目标破损数组中的元素个数满足目标条件,包括:
以所述起始破损点为中心,向所述起始破损点的四周不断获取所述起始破损点的邻居像素点,并将所述起始破损点的邻居像素点加入所述目标破损数组中,直至所述目标破损数组中的元素个数满足目标阈值。
6.根据权利要求1至5任一所述的方法,其特征在于,所述根据所述破损掩膜图像的破损区域的各个像素值,获取所述原始二维码图像对应的破损图像,包括:
依次计算所述破损掩膜图像的破损区域内的各个像素点的加权平均值,并根据所述加权平均值对所述原始二维码图像上所述破损掩膜图像的破损区域中相应区域的像素值进行替换,以获取所述原始二维码图像对应的破损图像。
7.根据权利要求1至5任一所述的方法,其特征在于,所述根据所述破损掩膜图像的破损区域的各个像素值,获取所述原始二维码图像对应的破损图像,包括:
对所述原始二维码图像及所述原始二维码图像对应的破损掩膜图像两者的每个像素进行按位与运算,将运算结果保存到输出图像中,所述输出图像即为所述原始二维码图像对应的破损图像。
8.一种破损码的生成装置,其特征在于,所述装置包括:
原始二维码图像获取模块,用于获取原始二维码图像;
破损信息获取模块,用于获取所述原始二维码图像的破损信息;所述破损信息包括破损率、破损区域及破损颜色中的至少一者;
破损掩膜图像获取模块,用于根据所述破损信息,生成所述原始二维码图像对应的破损掩膜图像;
破损图像获取模块,用于根据所述破损掩膜图像的破损区域的各个像素值,获取所述原始二维码图像对应的破损图像。
9.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如权利要求1至7任一所述的一种破损码的生成方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如权利要求1至7任一所述的一种破损码的生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311063056.7A CN117151138A (zh) | 2023-08-22 | 2023-08-22 | 一种破损码的生成方法、装置及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311063056.7A CN117151138A (zh) | 2023-08-22 | 2023-08-22 | 一种破损码的生成方法、装置及计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117151138A true CN117151138A (zh) | 2023-12-01 |
Family
ID=88897948
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311063056.7A Pending CN117151138A (zh) | 2023-08-22 | 2023-08-22 | 一种破损码的生成方法、装置及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117151138A (zh) |
-
2023
- 2023-08-22 CN CN202311063056.7A patent/CN117151138A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108961235B (zh) | 一种基于YOLOv3网络和粒子滤波算法的缺陷绝缘子识别方法 | |
CN109255776B (zh) | 一种输电线路开口销缺损自动识别方法 | |
US11144889B2 (en) | Automatic assessment of damage and repair costs in vehicles | |
CN111696118B (zh) | 动态场景下基于语义分割与图像修复的视觉回环检测方法 | |
CN113435240B (zh) | 一种端到端的表格检测和结构识别方法及*** | |
CN111539330B (zh) | 一种基于双svm多分类器的变电站数显仪表识别方法 | |
CA3136674C (en) | Methods and systems for crack detection using a fully convolutional network | |
CN115995056A (zh) | 一种基于深度学习的桥梁病害自动识别方法 | |
CN113989604A (zh) | 基于端到端深度学习的轮胎dot信息识别方法 | |
CN112308040A (zh) | 一种基于高清图像的河流排污口检测方法及*** | |
CN113158954B (zh) | 交通非现场的基于ai技术的斑马线区域自动检测方法 | |
CN112614094B (zh) | 基于序列状态编码的绝缘子串异常定位识别方法 | |
CN113313678A (zh) | 一种基于多尺度特征融合的***形态学自动分析方法 | |
CN110889418A (zh) | 一种气体轮廓识别方法 | |
CN115527207B (zh) | 基于深度神经网络的列车闸调器控制杆螺母故障检测方法 | |
CN113780040A (zh) | 唇部关键点的定位方法及装置、存储介质、电子设备 | |
CN115346206B (zh) | 基于改进超分辨的深度卷积特征识别的车牌检测方法 | |
CN117151138A (zh) | 一种破损码的生成方法、装置及计算机设备 | |
CN114927236A (zh) | 一种面向多重目标图像的检测方法及*** | |
CN116052020A (zh) | 基于无人机的图像快速解译方法 | |
KR102498322B1 (ko) | 딥러닝 기반의 반도체 디바이스 상태 분류를 위한 장치 및 방법 | |
CN117034980A (zh) | 一种破损二维码的识别方法 | |
CN113269171A (zh) | 车道线检测方法、电子设备及车辆 | |
CN117893934B (zh) | 一种改进的UNet3+网络无人机影像铁路轨道线检测方法与装置 | |
Sowah et al. | Intelligent instrument reader using computer vision and machine learning |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |