基于烟盒喷码检测算法的研究
2021-01-29郎贵林
郎贵林
(西华大学 计算机与软件工程学院,四川 成都 610039)
在现如今科技高速发展的社会中,人工智能已经是一个不可避免的话题。在很多工作中人们更希望使用机器来代替人工的工作,员工每天的上班时间有限,所以如果能用机器来代替人工,那么工作效率无疑提高了很多。文献[1]提出使用自动化的机器对香烟产品进行筛选,而且描述了烟盒上喷码的实际意义,由于香烟在我国的监管比较严谨,制定了一些规定来规范香烟的制作和贩卖,烟盒喷码主要是用于相关工作人员查验香烟是否违法。文献[2]使用了传统的图像处理算法来对烟盒的包装进行检测,文献[3]使用的是深度学习的模型对烟盒上的激光喷码进行识别,这些方法都是用的工业相机,而本文是使用手机拍照。
本文主要是针对烟盒上的喷码进行检测,这些烟盒上的两行白色数字喷码则为本文需要检测的字符,这些喷码使用的是油漆打印,油漆分布不均匀,在灯光下还会反光,针对这些难题,本文主要使用了一些目标检测算法对喷码检测进行了相关实验和对比。
1 基于烟盒喷码检测算法的研究
1.1 基于聚类算法的喷码提取
根据烟盒图像是可以看的出一些字符喷码的,这些喷码的颜色固定,一般都为白色,烟盒身的颜色与喷码有一些差异,与烟盒上的中文字符也有很大不同,所以根据这些特征本文通过模糊聚类算法来对图像中的颜色特征进行聚类。经过模糊聚类后截取下来的结果中,聚类算法把背景聚为一类,把前景数字聚为了一类,噪声聚为了一类,但是这些字符都有残缺,而且混有较多噪声,这些都将为下一步的字符分割和字符识别造成干扰。
1.2 基于深度学习算法的喷码检测
由于烟盒喷码的检测难度,结合文献[4]提出了基于尺度可扩展的烟盒喷码检测算法。该算法在ICDAR 2015和ICDAR 2017数据集中的整体表现都比较好,但是该算法的检测速率太慢,在前面的ICDAR 2015数据集中的每秒检测图像的数量为1.6,而在ICDAR 2017中的检测速率还要低。
本文根据尺度可扩展网络算法存在检测图像速率较慢缺点做出了一些改进,为了提高该算法的检测速率,对该网络的结构进行了优化。根据图像在检测过程中所消耗的时间进行了分析,首先残差网络是使用50层,但是卷积的效率比较高,然后在文献[4]中也分析了基于广度优先的扩展算法在时间上占用的量也很小,所以整个模型的大量时间都花费在了特征融合的结构中,由于对不同尺度的特征融合时需要进行双线性插值,所以消耗了大量时间。那么本文在针对这个问题上提出了一个比较轻便的网络结构,如图1。
图1 模型结构图
本文去掉长宽为160且通道为256特征融合层,去掉了长宽为40且通道为1024特征融合层,只剩下另外两层进行融合,连接后得到特征F,如图1。由于最后一层提取的时深层特征,所以是不能够去除,如果去除最后一层那就没有意义。第一层和第三层特征层提取的时比较浅的特征,都是可以由第二层来代替的,所以可以去掉。最后在实验结果中,也表明了留下第二层与最后一层的效率较高。
2 验以及结果分析
2.1 数据集
本文的数据集来自移动手机拍摄,整个图像的分别率为1080p,拍摄的都是条形烟盒表面的字符喷码,整个数据集总共有1000张图片。
2.2 实验环境及训练
本实验是在Ubuntu 18.04系统上进行的,使用的是PyTorch1.2.0的深度学习框架以及CUDA 10.2,在硬件设施上使用的是AMD R5 4600H处理器,NVIDIA GTX1650显卡加速计算。本文的模型总共使用了1000张图片,500张图片用于训练,500张用于测试。在训练前使用了残差网络在官方预训练好的参数,训练中总共迭代了420次。在开始时将学习率设置0.00001,在迭代到200次时将学习率下调为了0.000001,最终损失函数的值下降为了0.4左右。
2.3 评价标准
本文主要是使用了4个指标来评价算法。第一个评价参数是召回率,主要是使用已经检测到字符的图像数量除以参与测试图像的总数,第二个指标是精确率,计算每个检测到的字符图像中检测正确的数量与检测到的图像数量之比,第三个是F值,为精确率和召回率的均横指标,数值上等于精确率的倒数与召回率的倒数之和乘以2,第三个参数检测速率,主要指每秒钟能够处理图像的数量。
2.4 实验结果
在本节中主要是对尺度扩展算法与改进后的算法进行对比,在数据集和实验环境保持不变的情况下进行训练和测试。实验结果如表1。
表1 算法实验数据比较
表1中展现了各个参数的对比,其中尺度可扩展网络算法在召回率、精确率和F值上要比本文算法要高一些,但是最终在检测速率上,本文算法的检测速率要比尺度可扩展网络算法的检测速率却要高出1.1,在如此小的代价中却换来了更高的检测速率。
3 结论
经本文对已有的算法模型进行研究得出,通过对比较耗时较高的结构进行简化处理,对无关紧要的结构进行去除,较大的提升了算法的效率。那么在以后的深度学习算法的研究中,依然需要对一些比较成熟的算法进行优化,主要是为了提高算法的检测速率。