引入注意力机制的蚕茧识别算法
2020-02-05陈国栋
陈国栋
(苏州大学,江苏 苏州 215000)
市场上,大多数的蚕茧识别方法还是利用传统的人工识别方式,不仅识别结果会受主观因素的影响,还浪费大量的人力和物力。因此,针对该问题提出了利用Faster R-CNN框架进行自动识别。由于蚕茧尺寸较小,各类别之间的形态特征的差异与颜色特征的差异不明显,Faster R-CNN[1]使用的vgg16特征提取网络在提取蚕茧特征过程中,利用池化操作来减小特征图尺寸,以扩大感受野,导致部分特征丢失。本研究在Faster R-CNN模型的基础上,引入模仿人类视觉注意力原理的注意力机制模块,增加有效通道权重,使关键通道得到更多的注意力,同时引入空洞卷积代替下采样过程中的pooling操作,能够有效地避免细节丢失,提高模型对蚕茧类别的识别能力。
注意力机制最早应用在机器视觉领域,本质上是模仿人类观察物体的注意力。注意力机制分为空间注意力机制和通道注意力机制。空间注意力由Google DeepMind[2]提出的Spatial Transformer Network,用于输入特征向量的变形完成预处理操作,使得样本更容易学习特征。相比于该方法的一步完成目标的变换调整,Dynamic Capacity Networks[3]采用两个子网络,一个用于全图处理,另一个用于对感兴趣区域的处理,进而获得更高的精度。通道注意力由HU J[4]等在2017届ImageNet分类比赛中提出,通过对不同通道进行建模,分配权重,使得有效通道获得更多权重,无效通道抑制权重,进而提高模型精度。该方法作为一种通用设计思想,可被用于现有的任何网络。此后,SKNet[5]方法将这样的通道加权思想和Inception中的多分支网络结构相结合,实现性能的提升。CBAM(Convolutional Block Attention Module)一文将这两种注意力机制相融合,同时使用两种注意力机制,提升网络精度。徐城极等[6]以及张海涛等[7]分别将注意力模块加入到yolov3和SSD目标检测模型中,在VOC2007上的测试结果分别提升到了81.9%和79.7%。本研究针对Faster R-CNN框架短板以及结合蚕茧形态、颜色等特点,提出Attention Faster R-CNN蚕茧检测算法,加入注意力机制模块以及引入空洞卷积,弥补特征提取过程中特征丢失造成的缺陷,提高对蚕茧的检测率。
1 相关工作
1.1 Faster R-CNN检测模型
Faster R-CNN是基于卷积神经网络的目标检测框架,经过R-CNN、Fast R-CNN前两代检测框架的积淀,抛弃了传统的滑动窗口生成检测框的方法,直接使用 Region Proposal Networks生成检测框,在检测精度和检测速度上有了很大的提升,常用来对物体进行识别和定位。本研究利用Faster R-CNN框架并引入注意力机制改善对蚕茧的识别和定位效果。
1.2 注意力机制
视觉注意力机制是人类的一种视觉神经机制。从生物学角度的注意力机制延申到机器视觉领域,从复杂的信息中,将注意力投入最有效的目标区域内。
在对图片进行卷积后,会得到一个特征向量,特征向量的维度就是通道数,也等于卷积核的个数。当卷积核的个数为1 024时,得到通道数为1 024的特征图。但不是每一个通道得到的信息都是有效的信息,也会有大量的无用信息。所以,需要将注意力放在有效信息的通道上,主要的思路就是增大有效通道的权重,减小无效通道的权重,如公式(1)所示。
Fmax、Favgc分别表示对特征图的最大池化和平均池化。σ为Sigmoid激活函数。共享网络是由一个隐藏层和多层感知机(Multilayer Perceptron,MLP)组成,w0使用Relu作为激活函数。
空间注意力机制的实现同样使用了最大池化以及平均池化,使用concat连接,再使用7×7的卷积提取特征,用Sigmoid函数对权重进行归一化,如公式(2)所示。
2 Attention Faster R-CNN
2.1 引入空洞卷积的改进网络
特征提取网络vgg16在提取过程中,经过4次池化操作进行下采样,减小特征图尺寸以及增加感受野,在池化过程中造成细节的丢失,用空洞卷积代替池化操作,在增加感受野的同时,还能避免特征信息的丢失。普通的卷积公式为:
其中,I(x,y)是卷积前的图像在点(x,y)上的值,k(s,t)是一个卷积核,大小为m×n。
空洞卷积公式为:
l为膨胀因子,将提取特征过程中4次池化操作替换成l=2,Stride=2,卷积核大小为2×2,边界模式选择“same”的空洞卷积,使得下采样的过程既可以增加感受野,也可以避免细节丢失。
2.2 基于通道注意力机制的改进网络
区域生成网络(Region Proposal Network,RPN)的引入使得Faster R-CNN的精度提高,但是在特征提取阶段使用的vgg16特征提取网络提取的特征有细节丢失的问题,通道注意力机制有利于重要部分的特征表达能力。全局池化操作是一种特殊的池化操作,将特征图上的像素点相加求平均值,有利于主要部分的特征增强。注意力机制分为3个部分:squeeze、excitation、attention。本研究对vgg16输出的特征X进行全局池化操作,得到各通道信息,公式如下:
其中,(i,j)表示的是在大小为H×W的特征图上的横纵坐标分别为i和j的点,将通道内的每一个特征值相加再平均,后使用Relu和sigmoid激活函数进行激活,激励函数如下:
再进行加权处理,公式为:
x为特征提取网络输出的特征图,该项使不同通道乘以不同的权重,使关键的通道得到更多的注意。最后将x '代替原有的vgg16输出的特征图输入到检测网络。
3 实验准备
本研究采用Googlecolab作为实验平台,深度学习框架为keras2.1.3,底层tengsorflow1.3.1-gpu。数据集为蚕茧数据集,一共含有2 000张标注照片,包含7类蚕茧图片,分别为下烂茧、束腰茧、薄皮茧、油印茧、柴印茧、尖头茧、异形茧。
采集蚕茧数据集时,不同的角度、光照、拍摄距离、拍摄背景都对实验结果有着很大的影响,当光照强度为50 Lux、0°拍摄,即垂直对蚕茧进行图像采集时,蚕茧图像质量最好[8]。分别对7类蚕茧进行拍照采集数据,每张照片中3~5个相同或不同类型蚕茧。当拍摄完成后,利用labeling标注工具,对每张照片中的蚕茧位置及蚕茧类别进行标注。蚕茧照片的采集在模拟识别环境中进行。蚕茧位于黑色传送带表面,由于灰尘、杂屑等影响因素,会发生漏检、错误识别等情况。之后,利用opencv库中的高斯函数对摄取图片进行高斯滤波去噪处理。
本实验在预训练权重上进行训练,可以帮助模型加快收敛速度,并且不影响实验结果。从表1的实验结果可以看出,改进后各个类别蚕茧的识别率都有所上升。
表1 类别概率
为了直观地看出训练结果,给出了蚕茧数据集部分实验结果,如图1所示。图1中(a)(b)为Faster R-CNN模型检测结果,(c)(d)为Attention Faster R-CNN模型的检测结果。从检测结果可以看出,(a)(b)出现了漏检,(a)图中出现误检。本研究提出的模型无误检和漏检,与传统的模型相比更加精确,提高了算法的鲁棒性,但两个模型对尖头茧检测能力较低。
4 实验结果
(1)相比于Faster R-CNN训练过程,Attention Faster R-CNN的RPN网络的收敛速度加快,total loss减小。
(2)测试结果表明,在蚕茧测试集mAP由75.8%提升到78.2%,准确度有所提高。从实验结果图可以看出,漏检误检率降低,定位效果以及分类效果明显提升。
(3)由于注意力模块的引入以及使用空洞卷积代替池化操作,模型参数个数增加了2.63×105个,使得算法更加复杂,导致检测速度有所下降,单张图片检测时长增加了10 ms。
5 结语
根据当前蚕茧检测的短板,提出了使用Fa st e r R-CNN目标检测算法,针对蚕茧图片特点以及Faster R-CNN算法弊端,提出了改进的Attention Faster R-CNN目标检测算法。该算法通过加入注意力机制以及引入空洞卷积替换pooling操作,减少提取特征过程中特征丢失造成的影响,并利用蚕茧测试集进行测试,使得平均mAP提升2.5%。
本研究所提方法的优势在于能够针对蚕茧的尺寸特点减少提取过程中的特征丢失。通过注意力机制模块增加有效通道权重,使得网络获得更多有效的信息,对于蚕茧类的小物体的检测具有重要意义。但是,网络参数量的增加导致速度减慢,减少参数量是未来工作的主要方向。