温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于
BiSeNet
YOL
32
激光
识别
方法
研究
姜思明
计算机与图像技术Computer&Multimedia Technology电子技术与软件工程Electronic Technology&Software Engineering163在全球范围内,我们是最大的烟草生产国,而我们的烟草行业是我们国家最重要的纳税产业。但是,在过去的一年中,我们都会面临着假冒、伪造等问题,给我们造成了几十亿的经济损失1。条烟包装上的 32 位激光码是确定烟草信息的主要途径,可用于查询烟草的真伪鉴别、烟草产地、经销途径等方面。基于此,对条烟盒上的 32 位激光码字符进行识别,不仅能够保障香烟的合法性与烟草激光码的有效性,而且还可以有效提高条烟的核验效率。目前,对条烟盒上的激光码图像的采集通常会存在复杂的图像背景、低质量、目标倾斜、位置不固定的情况,这些问题使得传统的方法难以完成对激光码图像的高效、准确识别任务2。对于此问题,卷积神经网络被广泛地应用于文字区域识别,以实现目标识别的目的。如 Shi 等3结合了 CTPN 和 SSD 的特点后,提从而提出了 SegLink 模型,其具备高效检测多方向、任意长度小文本的能力。Zeheng 等2提出了一种基于神经网络CNN 的卷烟识别方法,缓解图像的不规则和噪声的影响,提取有用的特征进行识别。Redmon 等学者4提出了 YOLO5算法,该算法具有快速检测和高精度的特点,适用于轮廓明显的目标检测。李文龙等6提出的高铁摩擦片编码识别算法使用YOLO_v3和Tesseract5.0相结合,解决了字符区域分割和方向矫正问题,该方法是一种新的方法,可用于对金属表面上的文字进行准确的识别。另外,宫鹏涵7的研究结果也很重要,他采用了一种新颖的 YOLOv5 的思想,对钢印汉字进行了高效的识别。因此,本文提出了一种基于 BiSeNet 和 YOLO_v5s基于 BiSeNet 和 YOLOv5s 的条烟 32 位激光码识别方法研究姜思明1*谭升达1陈冠达1邓东2李康军3(1.广东烟草阳江市有限责任公司 广东省阳江市 529500)(2.大族激光科技产业集团股份有限公司 广东省深圳市 517058)(3.湖南睿图智能科技有限公司 湖南省长沙市 410000)摘要:本文针对条状香烟激光编码在条状香烟中存在的特征提取与定向困难等问题,采用 BiSeNet 与YOLOv5s 相结合的方式,对条状香烟的条状香烟进行了扫描。首先,我们将使用 BiSeNet 神经网络来实现对包含特征的目标的提取,然后,针对目标的偏移,我们将使用透射变换来纠正目标的偏移。然后,对经过灰度化和阈值处理的特征图像进行 YOLOv5s 的特征图像进行特征识别,并利用气泡法对其进行分类,最终完成了对香烟盒子的激光编码的自动识别。实验证明,本文提出的方法能够很好地实现特征点的提取,并且能够很好地克服特征点不能进行方位判断的困难,并且相对于其他方法来说,该方法更加稳健,更加准确。关键词:烟草激光码;BiSeNet;YOLOv5s;透射变换图 1:算法总流程 图 2:条烟盒图计算机与图像技术Computer&Multimedia Technology电子技术与软件工程Electronic Technology&Software Engineering164的条烟 32 位激光码识别方法如图 1 所示。通过 BiSeNet可以准确定位分割 32 位激光码字符区域后再进行透视变换和 90旋转等预处理手段,然后通过 YOLO_v5s 对字符区域进行识别,通过较高的网络精度,可以提高条烟 32 位激光码识别的准确率和实时性,实现条烟激光码位置不确定且字符角度不唯一的情况下,对激光码字符的检测与识别。1 字符区域分割1.1 数据集采集实验数据主要通过相机在现场收集了 2200 张带有32 位激光码的条烟盒图片作为数据集,其中 1760 张是训练集,440 张是测试集,数据如图 2 所示。1.2 BiSeNet网络结构近年来,许多基于 FCN8的方法在图像语义分割方面发展迅速。图像语义划分的重点是要抽取到可区分的特征,它包含了较低层次的特征(例如边缘、条纹等),也包含了较高层次的抽象的特征9。本文通过采用有效的双边分割网络 BiSeNet10对激光 32 位字符区域进行图像分割,总体结构如图 3(a)所示。作者使用了一个具有分支的语境分支网络来进行设计,这个网络采用了残差网络(ResNet)11和全局平均池化来扩大其感受视野。如图 3(b),通过使用 ARM 模块,BiSeNet 网络可以得到全局上下文信息,该方法首先对图像进行整体平均,再通过对注意矢量的求解来指导图像的特征学习。网络共有两个分支,用于提取特征信息。通过特征融合模块(FFM)将这些特征信息进行融合。FFM 模块的设计采用卷积和批标准化12的方式平衡这两种特征的尺度,对两条支路的结果进行融合,然后对其进行整体平均,从而获得一个新的特征矢量。然后,在这个矢量的基础上,计算出一个加权矢量,这一设计类比 SE 模块13。(a)BiSeNet 网络分割总体结构;(b)注意力提炼模块;(c)特征融合模块 图 3:网络框架图 计算机与图像技术Computer&Multimedia Technology电子技术与软件工程Electronic Technology&Software Engineering165通过特征向量对网络特征进行重新分配权重,优化并提高了网络的精度。图 3(c)展示了 FFM 模块的设计。1.3 损失函数BiSENet 采用的损失函数由主要损失函数和两个辅助损失函数组成。主损失函数是用来指导一个完整的网络,而辅助损失函数则用于监督上下文路径的学习。这种损失函数的设计类似于深度监督学习14的方法。同时,所有的损失函数均采用交叉熵损失函数,即 (1)在此式中,pi代表着输出网络数据的预测值。损失函数以及辅助损失函数这两部分共同形成了总损失函数的权重和,即 (2)上式中:选择 K=3,X 和 W 代表 BiSeNet 网络输出和网络的权重,li代表辅助损失函数,i是li的权重系数,在学习过程中,数值为 1。该网络的学习与优化使得主、辅损失函数变得平稳。1.4 网络模型训练在这项研究中,使用了 40243036 像素的三通道RGB 图像作为原始数据,然而由于 GPU 显存大小的限制,网络训练时仅使用了960960像素的图像作为输入。该算法是在 PyTorch 深度神经网络架构的基础上,利用 NVIDIA GeForceGTX1660 运算平台所提供的一个训练平台完成的。在训练过程中,采用 Adam 的优化器,将批数设置为 4 个;为使神经网络的学习效果最好,本文采用了一种学习率衰减策略,该策略是由Chen等人15提出的,用动态调节的方法实现最优,即,其中初始学习率、训练迭代的总次数分别为 0=0.025 和 N=200,=0.9,n 为该轮迭代。1.5 透射变换透视变换,是一种基于透视旋转定理的图像变换方法。这种方法利用了透视中心、像点和目标点在一条直线上的情况,将成影面(透视面)沿着追踪线(透视轴)旋转一定角度,从而实现对原来投影光线束的改变,将图片投影到新的平面从而达到矫正图片的效果。通用的公式如下:图 4:YOLOv5s 网络模型结构 计算机与图像技术Computer&Multimedia Technology电子技术与软件工程Electronic Technology&Software Engineering166其中,(u,v)是原始图像的像素坐标,w 取值为 1,(x=x/z,y=y/z)是透射变换的结果。式(4)的矩阵称为透射变换矩阵。其中:T1、T2、T3分别代表图像的线性变换、图像的平移变换、图像的仿射变换,取 a22=1。2 YOLO_v5s字符识别2.1 YOLOv5s网络结构2020 年,Glenn Jocher 发布了 YOLOv5,这是一种基于 YOLOv4 改进的网络结构。该方法进行目标检测分为三个步骤16:图像规格化/分割、特征提取以及非极大值抑制。YOLOv5 随着网络深度和宽度分为四个版本17:YOLOv5s、YOLOv5m、YOLOv5l 和 YOLOv5x。为了实现高速高精度目标检测,选用最小版本的YOLOv5s,该版本具有小的模型文件大小,且检测速度与精度都很快。YOLOv5s 由输入图像、网络、特征增强和预测模块组成,其中包括 CBL、CSP、Focus 和SPP等小模块18。图4中显示的是YOLOv5s的网络结构。Backbone 作用是对图像进行特征抽取。在设计该模块时,通过减少计算量的方法提高了速度。其中,focus 结构将图像的宽度、高度信息转化到通道数上,在每一个节点上都增大了接收范围,并降低了原有的数据丢失率。另外,CSP1_x 与 CSP2_x 将图像分割成两个子区域,采用层次式的跨期融合方式,在降低计算量的同时,确保了图像的精确度。第三种 SPP 神经网络对感知野进行了更多的扩展,帮助区分背景信息。Neck的特征强化旨在进一步改善图像特征提取的性能。本节中,借鉴了 PANet 的思路,采用了 FPN 与 PAN 相结合的网络架构。首先,使用 FPN 网络实现高层次语义信息的传输;其次,采用PAN网络实现“自下而上”和“自上而下”信息的传递,达到多层次信息有效融合的目的。Prediction 部分继承了 YOLOv3 的 Prediction 结构,利用CIOU_Loss 值来描述目标的面积损耗,该损耗中包含了目标的坐标,分类,置信程度等多方面的预测信息。这些改进使得整个系统可以实现更准确的目标检测和跟踪。每个部分都有不同的功能,共同为整个系统的性能作出了贡献。2.2 输出改进检测到的条烟激光码字符所得结果乱序无法作为辨识条烟激光码编号的依据。因此,为了确保编号与条烟激光码保持一致,需要对检测到的字符位置信息进行有序排列。根据条烟 32 位激光码的字符排列的特点属于上下两行各 16 位排列,本次研究采用冒泡排序法对激光字符进行排序。由于 YOLOv5s 可以获取字符的位置信息和字符类别,并且可以把它们存储在数组之中,为此可以先根据每个字符左上角的纵坐标信息采用冒泡排序的方式进行第一轮排序,然后分别对前 16 位和后 16 位的左上角横坐标信息也采用冒泡法进行二轮重新排序,该算法通过比较数组中相邻的两个坐标数值大小,如果一个坐标的值大于另一个坐标的值,则调换坐标的位置;相反,什么都不做。同时,字符数组也按照相同的顺序进行排序。最终的结果就是一个按照 32 位激光码从上到下、从左到右排列的字符序列以及对应的位置信息,如图 5 所示。3 实验结果与分析3.1 实验环境图 5:字符排序图计算机与图像技术Computer&Multimedia Technology电子技术与软件工程Electronic Technology&Software Engineering167在这项研究中,我们以 PC 为实验平台,以 Intel(R)Core(TM)i7-9700F 处理器,以 NVIDIA GeForceGTX1660图形卡为 GPU 加速器,运行内存容量为 4G。我们选择了 cuda 版本 10.0 作为本次实验的基础,在此基础上,采用了 AnacondaPython3.7 程序设计语言,并选用了 PyCharm 作为整合的开发环境。在对 YOLOv5s 进行的训练中,我们设定了批次大小为 4、重复次数为 150、学习速率为 0.001。3.2 识别精度与速度对比为了准确评估算法的准确率和时间性能,通过对440 张测试图片采用 BiSeNet+CRNN 算法对条烟盒进行检测,将两种方法在准确率、识别时间以及识别速度上进行了比较,所取得的成果列于表 1 中。从表格中可以发现,该方法在精度和实时性方面均优于 BiSeNet 和 CRNN。之所以准确率低,是因为 BiSeNet+CRNN 对残缺字体不能进行精确的检测与识别。因此,本算法能够有比较好的效果,与 YOLOv5s 针对性的训练有很大关系。3.3