基于SqueezeNet的卷烟小盒外观检测算法在低成本硬件上的实现
2022-03-04刘巍
刘 巍
(红云红河烟草(集团)有限责任公司昆明卷烟厂,云南 昆明 650202)
卷积神经网络算法(CNN)在图像分类、图像分割和目标检测等领域获得广泛应用,但随着性能要求越来越高,效率问题逐渐显现。只有解决CNN效率问题,才能更广泛地应用。目前,使用轻量化模型正是解决此种问题的一种途径,轻量化模型设计在于更高效的网络计算方式,从而使网络参数减少的同时,不损失网络性能。本文采用轻量化SqueezeNet模型作为小包外观识别算法,之后将其部署到树莓派上,实现对小盒的外观检测。
1 背景介绍
1.1 树莓派(Raspberry Pi)
树莓派由Raspberry Pi基金会开发,外形只有信用卡大小。它是一款基于ARM的微型电脑主板,以SD/Micro SD卡为内存硬盘,卡片主板周围布有USB接口和以太网接口,可连接键盘、鼠标和网线,以上部件全部整合在一张仅比信用卡稍大的主板上,具备所有PC的基本功能。
1.2 SqueezeNet卷积神经网络
SqueezeNet是一种轻量化卷积神经网络,由伯克利和斯坦福的研究人员合作发表于ICLR-2017。该算法不同于传统的卷积网络,提出fire module,fire module包含两部分,分别是squeeze层和expand层。squeeze层,就是1*1卷积,其卷积核数要少于上一层feature map数。expand层分别用1*1和3*3卷积,然后合并起来,如图1所示。
图1 fire module模型
输入128个feature map,经过fire module输出后,同样得到128个feature map。使用SqueezeNet算法有效减少神经网络权值参数,还可进行实时计算,减少算法计算时间。
2 数据集
本文所使用的图像数据来自某卷烟厂52#号机FOCKE-FXS机型视觉成像系统,所采图像为近半年的数据,包括缺陷剔除图像与正常图像,其中缺陷剔除图像共587张,正常图像295张,原始图像尺寸大小为451像素×451像素,图像经过尺寸变换,转化为227像素×227像素×3的图像。
小包正面外观缺陷包括商标缺陷与印花缺陷2种,典型缺陷如图2所示。
图2 典型缺陷
3 SqueezeNet卷积神经网络模型
针对小包外观检测,本文设计了一种SqueezeNet卷积神经网络架构,如图3所示。输入的图像数据是227像素×227像素×3的RGB图像,作为网络的输入层。接下来是1层卷积层与池化层,conv1层卷积过滤器大小是3×3×3,卷积过滤器共有64个,卷积步长为2,pool1为池化层,步长为2,进行3×3的最大池化。网络结构中fire2、fire3、fire4、fire5、fire6、fire7、fire8、fire9是fire module层。经过fire2、fire3得到128个特征图,pool3为池化层,步长为2,进行3×3的最大池化;经过fire4、fire5,得到256个特征图,pool5为池化层,步长为2,进行3×3的最大池化;进入fire6、fire7,得到384个特征图,经过fire8、fire9,得到512个特征图;之后通过一个dropout层,dropout参数为50%;conv10与pool10为卷积层与池化层,conv10层卷积过滤器大小为1×1×512,卷积过滤器共有1 000个,pool10步长为1,经过14×14的平均池化;fc层为全连接层,将三维的图像数据转换为一维的数据,便于进行分类。最后1层为输出层,使用softmax函数对小包外观进行分类,得到小包缺陷(defective)与正常(good)2种情况的识别概率。此外,在各卷积层后的激活函数为ReLU激活函数。
图3 SqueezeNet网络结构
4 结果
按照设计的模型结构,在MATLAB中使用神经网络工具箱生成卷积神经网络,学习率设定为0.000 1,训练轮数为800轮,Minibatch取4,即每批次计算4个输入图像,选择交叉熵损失函数作为优化函数,使用训练数据集对小包外观识别的训练结果如图4所示,迭代15 700次以后,模型逐渐趋于稳定,准确率达到97%以上。
图4 训练集迭代识别准确率曲线
训练过程中的损失函数曲线如图5所示,随着迭代的逐渐增加,损失函数逐渐降低并趋于稳定,稳定后的数值保持在0.01以下。
图5 损失函数
用事先分配好的10%随机验证集,在每次迭代完成,计算得到权重值后,使用验证集进行验证,验证数据集与测试数据集基本一致,在迭代15 700次以后,达到稳定。进行15 700次迭代(800轮)后,得到模型最终权重值。之后,重新获得小包外观数据集,对算法进行验证,结果见表1。
表1 数据集识别结果
由表可知,全部数据集识别准确率达到99.66%,效果较好,比常规卷积神经网络识别准确率要高,说明使用的SqueezeNet模型是有效的。
5 在树莓派上实现SqueezeNet算法
5.1 树莓派设置
树莓派操作系统为Raspbian Stretch,要运行SqueezeNet卷积神经网络算法,还需要安装OpenCV、ARM Compute Library两个库。之后,使用MATLAB的cnncodegen函数生成SqueezeNet C++代码,通过编译,产生可执行文件object_recogition。
5.2 树莓派上实现小包外观识别
使用一张印花歪斜的图片,如图6(a)所示,图片识别处理时间为769 ms,图片被识别为缺陷的概率为100.0%,识别为正常的概率为0.0%,图片识别正确。
使用一张印花正常的图片,如图6(b)所示,图片识别处理时间663 ms,图片被识别为正常的概率为97.3%,缺陷的概率为2.7%,图片识别正确。
图6 烟包识别结果
6 结束语
本文采用SqueezeNet卷积神经网络作为小包外观检测的识别算法,经过算法学习与算法验证,取得较好的效果,小包外观检测识别准确率达到99.66%。之后,使用树莓派作为实现硬件,在树莓派系统上编译SqueezeNet算法,生成可执行程序,图像输入树莓派中进行验证,结果显示在树莓派上运行的程序能正确对卷烟小包外观进行识别,具有实际应用价值。