APP下载

基于先验知识的香烟防伪数字串识别

2019-12-12

计算机应用与软件 2019年12期
关键词:防伪矩形像素

彭 召 丁 晓 刘 哲 陈 衡 刘 凯

1(西安交大通大学软件学院 陕西 西安 710048)2(陕西师范大学计算机科学学院 陕西 西安 710062)

0 引 言

数字串识别是字符识别领域一个重要的分支,已经广泛应用于票据表单系统[1]、仪表识别系统[2]、运动员号码牌识别系统[3],银行卡号识别系统[4]。本文研究的是烟草防伪数字串识别。本文的识别方法对于烟草公司调研市场烟草伪品率具有重要意义。

目前,对于字符串识别一般有整体识别和分割识别两种思路[5-6]。整体识别法适合于有具体含义的词汇或有一定关联的词汇间的识别。例如停车牌“Stop”、火警标识“119”等。本文中的防伪数字是由没有关联的数字组成,每个数字间不能组成具有某种意义的词汇,因此整体识别不适合本文中防伪数字的识别。目前主流的分割识别方法有结构特征法和结合识别法[6-7]两种。结构特征法基于对投影、轮廓等特征的分析,通过分析结构的特征进行分割。结构特征法对于分割点的依赖严重,由于本文中部分防伪码数字图片具有背景复杂的特点,这对于依靠投影和轮廓提取分割点具有极大的干扰。故这种方法不适合本文防伪数字串识别。结合识别法,根据识别的结果,辅助分析分割结果,对每种结果做置信度排名,选取置信度高分割的作为分割结果。但这种方法对于数字关联性不强没有联系的防伪码数字串识别效果不佳。

鉴于本文中防伪数字串的子串没有具体含义,因此本文采用分割识别的识别方法。由于分割识别方法中两种传统方法对于本文中防伪数字识别均不合适,故本文针对香烟防伪数字串实际情况提出一种全新的分割识别方法。

目前很多数字串识别方法将数字规定在一个方格再做分割识别。这种方法虽然一定程度上提高了分割质量,但是增加了人的手工参与,比较繁琐,并且脱离了实际社会需求。本文提供的分割方法,不需要人工干预,输入图片在一定范围探测得到最终结果。当只用深度学习算法识别时,对于背景复杂图片,识别往往不理想。本文采用了深度学习算法并充分结合了先验知识,有利于排除很多识别错误的情况。本文先使用定位算法定位数字大概位置,然后在一定范围内进行探测,这种方法比单纯整张图片识别更能排除背景干扰。实验表明,本文在香烟防伪码数据集上取得了良好的效果,能很好地应用于香烟数字的识别。

1 算法设计

本文先将图片送入Faster RCNN网络[8]定位,估计出数字串所在区域的最小外接矩形。然后将矩形进行2×16的均等分割,将分割得到的图片送入分类网络分类,得到32幅图片的分类结果。然后根据32个数字对应位置组合应该满足的先验条件判断在此处位置进行分割得到数字是否正确。如果满足先验条件,则把这32幅图片识别结果作为最终结果。如果不满足则在一定范围内调整外接矩形的左上角坐标和分割得到的小矩形的长宽,得到新的外接矩形。然后重复分割和识别的过程,直到找到满足先验条件要求的外接矩形和识别结果,并把识别结果作为最终结果。具体流程图如图1所示。

图1 系统流程图

1.1 数字串所在区域定位

目标检测算法旨在识别出图片中物体所属的类别,并把某个类别所在的区域用最小外接矩形表示出来。经过多年发展,深度学习为基础的目标检测算法经历了RCNN[9]、SPP-net[10]、Fast RCNN[11]、Faster RCNN等算法。Faster RCNN算法从前几种算法发展而来,具有单张图片测试时间短、模型训练时间短、计算量小、定位精度高等优点。因此本文选取Faster RCNN算法作为本文的目标检测定位算法。具体的网络结构如图2所示(基础网络以VGG16网络[12]为例)。

图2 Faster RCNN网络结构图

Faster RCNN算法主要由四个模块组成:

1) 基础网络:本部分网络目的是提取特征,为后续的RPN网络和ROI pooling层做准备。这部分网络一般为VGG16网络或者ZF网络,可以根据自己实际需求更换基础网络。本文使用VGG16网络作为基础网络。基础网络得到的特征图将被送入RPN网络和ROI pooling层共享。

2) RPN网络:基础网络输出的特征图被送入RPN层并在特征图上建立多个窗口,每个窗口生成若干个候选框anchor。Anchor有1∶1、1∶2、2∶1三种不同的比例。特征图中每个像素点对应一个anchor中心。将窗口对应的低维向量送到不同的网络分别做分类和回归。本文中边框回归判断的是候选框是否属于香烟防伪数字串区域,输出是一个概率值。本文将阈值设置为0.7,将概率大于0.7的候选框留下认为是防伪数字串所在区域,小于0.7的舍弃。RPN网络边框回归计算公式如下:

(1)

式中:xa、ya、wa、ha表示anchor框的中心点坐标和框的宽、高;(x,y)表示预测框中心点坐标;w和h为预测框的宽和高;(x*,y*)表示真实区域框的坐标;t表示回归框做变换的预测值;t*表示框做变换的真实值。

RPN网络整体损失函数为:

(2)

式中:pi是第i个候选框是防伪数字串的概率。式(2)前半部分表示分类,后半部分表示回归。

3) ROI pooling层:本层将RPN层的输出和特征提取的特征图同时输入,并在RPN候选框和特征图上做一个映射,将尺寸统一以方便后续全连接网络。

4) 回归与分类:ROI pooling层的特征图送入全连接层完成回归和分类。其中,分类的损失函数为:

(3)

回归损失函数为:

(4)

式中:R表示Smooth L1函数。

1.2 数字串分割

本文防伪数字串由0~9之间的数字组成,共两行,每行16个数字。数字间距相同,长宽比为2.70。如图3所示。在上节中,我们通过目标检测算法Faster RCNN算法已经估计出了防伪数字串所在区域的最小外接矩形,即:根据最小外接矩形的四个顶点,将矩形所在区域划分成2×16的32个矩形区域,每个矩形区域长宽相同。

图3 图片示例

1.3 单个数字识别

图像分类技术经过多年发展,由开始的传统图像分类到支持向量机,再到卷积神经网络,已经日趋成熟。目前卷积神经网络、残差网络等网络在图像分类上效果较好,因此,本文对比了现在的诸多网络,最终选取更适合本文样本的分类网络。

考虑到本文图片数量较少并为了得到良好的分类器,本文在分类网络中加入了空间变换网络[13],对图片进行一个空间变换,有效地提高了分类的精度。一般情况,卷积神经网络虽然可以有很好的分类效果,但是当图片具有空间多样性的时候,分类效果往往不太理想。空间变换网络不需要额外的标注,可以插入到任意卷积的后面,且可以根据分类任务对图片进行空间变换。当图片模糊,有倾斜角度或者其他空间不变性问题时候,可以有效提高分类效果。

1.4 调整矩形参数

本文中的32个数字满足下面的先验条件。第一行中第1位表示年份,本文中图片是同一年的,第2、3位表示月份,第4、5位表示日期,第6到14位是随机数字。第15、16两位是1到50间的编号。第二排第1到4位表示香烟编号。5到16位表示随机数字。因此先验条件规则为:第一行中第1个数字是7,第2~3位数字组成的两位数在1~12之间。第4~5位数字组成的两位数在1~30之间。第15~16位组成的数字在1~50之间;第二行前四位数字,是某种烟固定的数字标识,固定为某四位数,例如本文中即1100或者1101。

本文以当前矩形框为基准,将当前矩形框左上角坐标和矩形框分割后得到的小矩形框的宽度在一定范围内调整,小矩形框的长度可以通过宽度和高宽比计算得到。将得到的矩形框均分为2×16份,送入分类网络识别这32幅图片,探测满足以上规则的矩形。将探测得到的满足以上规则的矩形框作为最终识别结果。当以上规则均满足后把探测得到的结果作为最终定位结果。由于在一定范围探测矩形框的左上角坐标和分割的小矩形的长宽,范围太小可能不包含满足要求的矩形,范围太大计算量也随之增大。为了选取出合适的范围,本文对样本的groundtruth和Faster RCNN算法实际检测出来的框的长宽和左上角坐标位置进行了统计,最终选出了合适的范围。当在一定范围调整矩形长宽和矩形框左上角坐标时候,可以逐个像素调整,也可以每隔几个像素调整。逐个像素调整效果更好,但是计算量太大。每跳跃几个像素调整计算量小,效果较差。本文对于跳跃几个像素检测更合适在时间和准确率上进行权衡,最终选择了适合本文的跳跃像素个数。

由于Faster RCNN算法画出来的框大体和groundtruth框位置和形状相差不大,只有少部分图片效果不佳,相差较大。因此每次探测时候以算法定位到的框开始,将坐标先变大几个像素,如果不满足要求,再调小相同的像素。对于长宽也是类似的处理。这种调整方法可以一定程度降低探测的时间。

2 实验结果分析

2.1 定位和图像分类数据集与实验设定

本文第一阶段Faster RCNN网络的基础网络使用VGG16,第三阶段的分类网络也使用VGG16网络,这两处VGG16网络的初始权重均来自ImageNet。本文所涉及的所有实验均使用gpu,且型号为GTX 1080。本文实验代码均基于keras框架。实验环境Python 2.7.13,keras 2.0.9,tensorflow1.4.10,Ubantu 14.04。本文图片由烟草公司从市场批量采集香烟样本拍摄而成。图片大小均为1 280×960。图片水平分辨率和竖直分辨率均为96 dpi。原始图片均未加噪声。

在第一阶段Faster RCNN定位中,为了获得良好的模型,本文使用320幅图片,并对图片进行了四种增强方式:椒盐噪声、高斯噪声、变暗、变亮。得到320×4=1 280幅图片,再对这1 280幅图片做放大缩小操作,分别让图片长宽同时变为以前0.8、0.9、1.1、1.2倍。因此共有1 280×5=6 400幅图片参与训练验证。最终得到模型。本文中将6 400幅图片按照train:test=7∶3的比例进行训练与验证。

对于第三阶段单幅数字图片分类,为了获得良好的分类模型,本文从数据集中挑选出约162幅原始图片通过手动截屏方式标注,从图片中截取每幅图上的数字。每幅图片上截取32个单个数字图片,共截取出162×32=5 184幅单个数字图片,除去截图过程中发现的明显不符合要求的数字图片,剩余5 063幅。由于每个数字在图片中出现的频率不同,因此截取到的数字数量存在很大的差异。例如截取数量最多的是数字0,有1 158幅。最少的是数字9,只有225幅。由于数据之间存在分布不均匀的情况,如果某类数字训练样本过多,可能导致最后学习到此类数字特征过多,而其他类别数字特征过少。因此训练数据最好数量差别不要太大。因此本文对最少数字9进行了挑选,将205幅作为最后的数据。按照跟205幅差别不太多的原则,从每类别数字中挑选一定数量的数字作为样本。然后按照大概8∶2的比例随机分配训练集和验证集。最终训练数据1 696幅,验证数据424幅。总共数据集 2 120幅。本文使用VGG16作为分类网络,训练时候学习率设定为0.000 1。另选22幅原始图片作为测试集,人工截取每个数字所在区域,由此得到22×32=704幅图片作为测试集。

2.2 定位与图像分类效果

本文另选取22幅原始图片进行第一阶段定位的测试,定位得到的效果图和groundtruth的对比图如图4所示。定位精度越高,则定位得到的矩形框的左上角坐标和矩形长宽与groundtruth差别越小,因此可以在更小的范围内调整这些参数,减少了计算量。定位精度大小用目标检测领域通用评价指标IOU表示,IOU表示定位框与groundtruth框的交集和并集的比值。本文测量22幅图片IOU,得到其平均IOU为0.872。

图4 定位效果

在第三阶段分类中,经过实验挑选网络,最终使用VGG16作为分类网络,具体挑选网络实验在下节中叙述。本文采用VGG16作为分类网络,学习率为0.000 1,没有数据增强时候训练得到模型。此模型验证集上的图片最佳识别率为0.918 2时,测试集为0.842 3。

2.3 图像分类的参数的影响

2.3.1分类网络

现存分类网络很多,同一分类网络可能在某一数据集效果理想而在另外数据集上效果较差。因此为了找出适合本文的分类网络,本文在Resnet50[14]、VGG16、VGG19[15]、InceptionV3[16]等分类网络上进行了实验。最终选择出VGG16作为本文第三阶段的分类网络。这四种网络所使用的初始权重均来自ImageNet项目,且均把图片数据尺寸统一到224×224然后送到多个网络进行分类。分类结果如表1所示。

表1 分类网络效果对比

实验结果表明,不同的分类网络对本文单个数字图片的分类效果不同。其中:InceptionV3网络在验证集和测试集上的表现最差,VGG16网络在验证集和测试集上表现最好。这说明VGG16网络是对本文数据集最合适的分类识别网络。因此本文选择VGG16网络作为最终分类识别网络。

2.3.2数据增强

对于第二阶段图像分类,由于本文数据较少,因此考虑数据增强来提高精度。在VGG16网络上进行实验,结果表明数据增强能提高一定的精度。首先本文由于图片尺寸最终都统一到224×224,因此放大缩小数据增强对本文没有作用,实验结果也验证了这一猜想。本文对图片同时做了随机上下翻转,发现验证集数据精度反而下降了0.16,因为6和9上下翻转后将无法识别,因此本文没有采用上下翻转的数据增强方式。由于本文中数字多为水平,倾斜角度较少,因此暂不考虑使用旋转的数据增强方式。本文仅采用了随机水平翻转的数据增强方式。实验结果表明水平翻转数据增强对实验结果有一定提高。实验结果如表2所示。

表2 数据增强与空间变换对比

实验结果表明通过水平翻转的数据增强后,VGG16的在验证集和测试集上的分类效果均有0.01左右的提高。这说明随机水平翻转的数据增强方式能提升图片分类效果,因此本文采用随机水平翻转的数据增强方式。

2.3.3空间变换网络(STN)

在第二阶段图像分类中,本文在VGG16最后一个池化层后加入了空间变换网络。由于最后一个池化层输出的feature map大小为7×7,通过空间变换网络后,输出的feature map大小也设定为7×7,然后送到VGG16接下来的层继续学习。实验结果表明,加入空间变换网络分类效果有较好提高。实验结果如表2所示。

实验结果表明,在VGG16网络后加入STN后,验证集和测试集上的结果均有大概0.03的提高,说明本文的图像数据在有模糊、变形等其他空间问题时加入空间变换网络对实验结果有一定提升。因此本文加入空间变换网络来提升分类效果。本文将2.3.2节中的数据增强和2.3.3节的空间变换网络综合起来,使得验证集和测试集上的效果提升了0.5左右。

2.3.4学习率的影响

在第二阶段图像分类中,为了取得更好的效果,本文对网络学习率进行了调节,以上实验中学习率均为0.000 1,每次扩大或者缩小10倍以确定最好的学习率。本文基于VGG16,做水平随机翻转并加入空间变换网络,调整学习率,在验证集上的精度如下所示。实验结果如表3所示。

表3 学习率对分类效果的影响

学习率过大容易使得损失值爆炸,使得梯度值在最小值附近来回震荡,无法达到最低点;学习率过小收敛过程非常缓慢并且容易过拟合。因此本文挑选合适的学习率对本文图像分类效果具有重大意义。实验表明,学习率为0.000 01时,测试集的精度最高达到0.890 6。因此,本文采用0.000 01作为本文学习率。

基于上述实验结果,本文分类网络采用VGG16网络,同时对数据做了水平翻转的数据增强,并加入了空间变换网络,将学习率调整到0.000 01,最终验证集上最佳精度达到0.978 0,此时测试集精度为0.890 6。此结果只是22幅图片按照groundtruth分割得到的识别率,并不代表最终实验识别率。用groundtruth分割的示意图如图5所示。

(b) 分割示意图5 groundtruth分割示意图

2.4 探测方法与最终结果

本文先使用22幅待测试图片,通过目标检测算法Faster RCNN算法定位,把定位得到的框直接分割然后送入VGG16网络识别,此时的识别率为0.15。说明不使用先验知识,直接定位分割的效果较差。本文对22幅图片进行统计,发现数字串所在区域图片框的数字串左上角坐标(x1,y1)与groundtruth图片框左上角坐标(x1gt,y1gt)之间有一定偏差,通过统计发现|x1-x1gt|<20、|y1-y1gt|<20。每个小矩形宽度偏差|width-widthgt|<2。在一定范围内对图片进行探测,本文设置探测的x1、y1均相隔多个像素探测一次,width相隔1个像素探测一次。通过实验,为了在探测识别时间和识别率结果上达到一个妥协,本文发现左上角坐标4个像素为一个探测单位,宽度1个像素更适合本文。固定外接矩形框左上角坐标x、y,逐像素改变外接矩形分割得到的小矩形的宽度,结果如表4所示。表中:坐标移动像素数代表探测时候外接矩形框左上角坐标x、y移动的像素数单位,比如3代表调整外接矩形框时,调整矩形框左上角坐标x、y时每隔3个像素调整一次。先验知识探测对结果的影响如表5所示(此时的先验知识使用的调整像素幅度为4)。

表4 像素调整对比表

表5 先验知识探测对结果的影响

实验结果表明,调整步幅增大,探测时间减少,精度总体有下降的趋势。为了在时间和精度上做一个权衡,本文最终选择每4个像素调整一次,此时22幅测试图片的最佳识别率为0.80,在速度和精度上都可以很好满足香烟防伪验证的需求。在不使用先验知识探测时候初始识别率仅为0.15,通过加入先验知识在一定范围内探测识别,识别效果有较大提升。

本文将此算法用于香烟企业伪品鉴定,将识别出来的结果送入香烟企业防伪码数据库比对判断香烟真伪。将识别出来有问题的香烟通过人工识别最终确定,大大减少了人工工作量,具有良好的实用价值。

3 结 语

本文结合香烟防伪数字串的实际情况,充分利用了防伪数字串的先验知识,提出了一种新的数字串识别方法。首先定位出数字串大概位置;然后分割识别,通过先验知识判断是否满足条件,如果不满足则继续调整矩形长宽和左上角坐标;最终找到满足要求的外接矩形,并把此时识别结果作为本文鉴定方法的最终结果。实验表明,本文提出的方法对于香烟防伪数字串具有良好的识别效果,很好地满足了防伪数字串识别的要求,具有良好的实用价值。本文算法为商品条码数字识别、仪表数字串识别等类似识别问题提供了良好的新思路。

猜你喜欢

防伪矩形像素
赵运哲作品
像素前线之“幻影”2000
INTEGRITYTM ECO100再生缝纫线引入防伪技术
你知道古代圣旨和纸钞是怎样防伪的吗
两矩形上的全偏差
“像素”仙人掌
化归矩形证直角
从矩形内一点说起
民国时期纸钞上的防伪暗记
高像素不是全部