轻量化卷积神经网络在药片检测分类中的应用
2022-12-08黄开坤
黄开坤,徐 兴
(南华大学机械工程学院,衡阳 421001)
0 引言
药品质量检测是医药领域十分重要且不可缺少的环节,在保障人民健康、社会安全稳定方面起着重要作用。在医药生产领域,人们对药片的品质追求不断提高,药片生产的各个环节都受到严格的管制。药片生产过程中难免出现缺陷次品,严重影响产品质量,在药片包装之前进行有效的剔除,是保证药片品质的关键步骤。
传统人工检测方法效率低,不确定因素影响大。随着技术水平的不断提升,机器视觉检测技术应用于很多行业领域。药物质量检测技术一般包括人工检测、激光检测、机器视觉检测等[1],其中基于机器视觉的医疗检测包括经典传统检测[2-3]和深度学习检测[4-5]。卷积神经网络(CNN)是在图像处理领域优异的神经网络[6],长期以来是图像识别领域的核心算法之一,比传统图像处理算法具有更强大的特征学习能力。在机器视觉缺陷检测应用领域,越来越多的检测方法从经典的图像处理和机器学习转到深度学习[7]。
本文提出改进后的GhostNet 网络模型,对网络模型进行了进一步的压缩,保证网络在取得较高的分类精度的同时达到更少的参数量和计算量,更少的内存占用与计算消耗。在网络模型中引入ECA注意力机制模块,并分别与原始网络、主流轻量化神经网络进行性能对比分析。
1 GhostNet网络
GhostNet 网络是华为2020 年提出的分类网络[8]。该研究提出了一个新的Ghost 模块,通过廉价操作来生成更多的特征图,在压缩网络的同时确保分类准确性,降低模型参数,利用Ghost模块构建Ghost bottleneck 结构,利用Ghost瓶颈结构叠加主干神经网络结构。
1.1 Ghost卷积模块
GhostNet 是以MobileNet 系列为基础的改进的网络结构,从图像特征冗余的角度出发,避免了大量计算量和参数量去生成这些相似特征图,并用一系列简单的线性操作来生成特征图。操作过程如图1所示。
图1 Ghost Module模块
Ghost 模块首先通过普通卷积对输入特征图进行特征浓缩,将输入特征图X∈RC×H×W压缩为M通道的特征图Y´ ∈RH´×W´×M,其中C是输入通道数,卷积运算为
公式*为卷积运算,b为偏置项,f'∈Rc×k×k×m为卷积核大小为k的卷积核,M≤N,保证输出通道数小于输入通道数,对原始特征进行必要的特征浓缩。此过程的参数量P1和计算量F1分别为
保证最后获得N个特征图,对Y´特征图进行简单的线性运算,来生成S个Ghost 特征图。线性操作为图1中的Φ1,Φ2,…,Φk,线性运算为逐层的深度可分离卷积,卷积核大小k',Identity为恒等映射。M次线性运算能够得到M(S- 1)的输出通道数,参数量P2和计算量F2为
总共得到的输出通道数为N=M×S,最终输出即N个特征图。
Ghost Bottleneck 是由Ghost Module 组成的瓶颈结构,参考ResNet 中的基本残差块[9],构成了多个卷积层和残差结构,并用Ghost 模块代替普通卷积模块。Ghost 瓶颈分为两部分,分别是主干部分和残差边部分,结构如图2所示。
图2 Ghost瓶颈结构
图2(a)步长stride=1,包含两个Ghost 模块,首先增加通道数,接下来减少网络通道数并连接到残差路径。图2(b)步长stride=2,在两个Ghost 模块之间加入深度可分离卷积进行特征层的宽高压缩。
1.2 整体网络模块分析
GhostNet 网络主干由Ghost 瓶颈模块叠加而成,借鉴了MobileNetV3[10]的基本结构的优势。网络第一层为16 通道的卷积层,然后由多个瓶颈模块构成,依据输入特征图的大小分为不同的阶段,不同阶段的末位瓶颈模块步长为2,其它步长都为1。最后经过全局平均池化层、卷积层和全连接层对输出进行分类。
在G-bneck 瓶颈模块加入了通道注意力机制(Squeeze-and-Excitation,SE)[11]模块。SE 机制模块网络架构图如图3所示。首先对输入进来的特征层进行全局平均池化,接着通过两次全连接,再进行一次Sigmod 将值固定到0~1 之间,获得输入特征每一个通道的权值,最后将权值乘上原始输入特征层,得到新的加权后的特征图。
图3 SE注意力机制网络架构
2 改进GhostNet网络模型设计
2.1 网络模型的优化
GhostNet 网络模型在公开数据集上进行的测试,类别数量达1000 类,而此药片完整性分类任务数据集为类别数量较小的6类,药片特征并非复杂多样的图案特征,减少输出层的分类数量classes,减半整体网络的通道数。网络模型复杂会造成过拟合风险,去掉网络结构中的重复操作层,进一步减少网络的参数量。添加Dropout 层[12],在神经网络训练过程中,当训练数据量较小,模型复杂度较高时,模型在训练集上的准确率较高,在测试集上的准确率相对较低,出现了过拟合,为了提高模型的泛化能力,在全连接前添加Dropout 层,丢弃一些神经元,减少神经元之间的相互作用,提高网络模型分类精度。
2.2 引入ECANet模块
ECANet 是一个非常轻量级的即插即用模块[13],可以提高神经网络架构的性能,结构如
图4 所示。ECA 模块可以被看作是SE 模块的改进版,SENet采用的降维操作会对通道注意力机制产生负面作用。卷积具有良好的跨通道信息获取能力,轻量ECA 模块是将SE 模块的全连接层替换成卷积核大小为k 的1D 卷积进行学习,避免了降维,有效地实现了跨通道交互。卷积核大小可由通道维数的非线性映射自适应确定,如公式(6)所示。
在通道维数C 给出时,卷积核大小k便可由公式(7)得到:
图4 ECA模块结构图
2.3 优化后的网络模型
优化后的网络结构如表1所示,首先通过第一层Conv2d3x3,将输入特征转换为包含8 个卷积核的标准卷积层,压缩了网络,降低了参数量。中间为一系列的瓶颈层。接着通过全局平均池化层和卷积层将特征图转化为100维特征向量,并进行最终分类。将原网络的SENet替换为轻量化ECANet,保留原网络主要特征提取G-bneck 模块,在全连接层FC 网络之前添加Dropout 层,提升模型的分类准确性。表中Exp表示增大比率,Out表示输出通道数,ECA 为注意力机制模块,Str为步长,cls为分类数量。
表1 改进后的GhostNet网络结构
3 实验方案与结果分析
3.1 实验环境配置
本次实验在Windows10环境下,采用python语言,在pycharm2020.2 版本编程环境下进行,在Anaconda中创建python虚拟环境,python版本为3.8;利用Keras、Pytorch深度学习架构,使用cuda11.4提升模型训练和推理的速度。实验设备为:GPU 为RTX 3090,显存24 G;CPU 为Intel(R)Xeon(R)Silver 4210R CPU@2.40 GHz。
3.2 数据集及模型训练
实验数据集是由工业相机MV-CE120-10UC拍摄所得,根据生产厂商提供的散装药片和相关指导制作残缺药片,药片总共分为6 种类别,包括污染、破损、完好、粗糙、划痕、斑点。药片图像总共为3360 张,每个类别为560 张,部分药片样本如图5所示。
图5 部分药片图样示例
为提高网络模型的泛化能力,避免出现过拟合风险,对数据集进行增强操作,增加数据集数量[14]。增加后的图像共12000 张,将打乱后的数据集分为70%的训练集、15%的验证集和15%的测试集。原始特征图片的大小为800 ×800 × 3。 送入网络图片大小为224 × 224 × 3,初始学习率为0.001,Batch Size大小为32,使用Adam优化器训练,迭代次数(epoch)为50代。
3.3 评价指标
从图像分类评价指标方法出发,对模型的分类精度、运算量、参数量等进行评估。
模型分类精度(Precision),表示预测出来准确结果占所有预测结果的准确率,分类精度越高说明模型预测能力越强。
其中,TP表示正样例中分类为正样例的数量,FP表示标签是负样例中分类为正样例的数目。模型运算量常用FLOPs 来表示,浮点运算量即为计算量,是用来表示模型的计算复杂度。
模型参数量parameters,是用来表示模型内部总的参数量,衡量模型所消耗内存的大小,参数越大所占用的内存就越大。
3.4 模型评估
为了验证改进后的网络模型性能的优异,并与原始网络模型进行性能比较,从药片分类精度、模型参数量、模型运算量方面进行对比,如表2所示。
表2 网络评价指标对比
由实验结果可知,原始网络模型参数约为改进后GhostNet 模型的4.5 倍,计算量约为改进后的3倍,改进后的网络模型精度与原始网络相差仅为0.04%,在大量减少网络模型参数的前提下,保持较高的模型精度。优化后的网络模型在训练过程中的精度和损失曲线如图6所示。
图6 改进后的网络训练曲线
从图6 能够看到网络模型共训练50 代,随着训练次数的增加收敛速度更快,在迭代40 代后曲线上升趋势渐渐平缓,整个过程中未出现过拟合。结果表明,改进后的GhostNet 网络模型具有较高的分类精度。
3.5 不同网络结构对比实验
在相同实验条件下,为了验证改进的网络模型的性能,与主流轻量化神经网络Mobile-NetV、ShuffleNetV2[15]和EfficientNet[16]进行对比实验,结果如表3所示。
表3 不同网络评价指标对比
由实验结果得知,改进后的GhostNet 网络模型的精度高于其它网络,权重模型大小仅为1.8 MB,明显低于其它轻量化网络模型,运算速率也相应提高,计算量和参数量明显降低,说明改进网络模型具有更高的分类精度,更少的参数量和计算量。
4 结语
在药片分类实际应用中,在提高分类精度的同时,保证更低的网络存储空间占用和功能消耗,使得轻量化神经网络模型更容易在移动端或嵌入式设备上存储和计算。实验过程中,采用药片分类数据集对模型进行训练和测试,对数据集增强处理,压缩网络模型通道数,优化网络结构,降低参数量和计算量,引入ECA注意力机制。实验结果表明,改进后的网络模型具有更低的参数量与运算量,模型权重文件仅为1.8MB,能够取得的分类精度为98.85%,参数量和计算量低于原始网络;网络模型分类精度高于其它轻量化神经网络,取得较优的分类性能。