基于深度卷积神经网络的蝇类面部识别
2020-08-05陈彦彤陈伟楠张献中李雨阳王俊生
陈彦彤,陈伟楠,张献中,李雨阳,王俊生
(大连海事大学 信息科学技术学院,辽宁 大连 116026)
1 引 言
随着世界各国之间的贸易交流日益频繁,旅客携带的外来昆虫传入我国境内几率增大,甚至会引发生态环境被破坏等问题。例如2016年1月,一名入境的澳门旅客携带的水果中存在地中海实蝇,该昆虫繁殖能力非常强,一只地中海实蝇雌虫经三代繁殖即可达215亿只,将会对农业生产造成极大经济损失;2018年10月,越南芽庄入境航班旅客携带的芒果果肉中含有的番石榴果实蝇幼虫,导致我国当地果园大面积失收。因此,若无法对外来蝇类昆虫作出及时监测和识别,一旦发生某种昆虫过度繁衍,将造成不可估量的损失。由此可见,对蝇类昆虫物种的高效识别研究刻不容缓。
基于蝇类昆虫识别的传统方法有:基于颜色特征[1]的蝇类昆虫识别,采集图像颜色直方图信息并将所有颜色直方图合并成特征向量作为蝇类昆虫的颜色特征。颜色特征不受图像旋转和平移变化的影响,但没有表达出颜色空间分布的信息,影响识别的准确性。基于纹理特征[2]的蝇类昆虫识别,将整个图像形成一个纹理特征值矩阵,然后将这个矩阵转换成影像。基于空间特征[3]的蝇类昆虫识别,将蝇类昆虫图像投影到特征子空间,利用测度计算未识别图像系数与训练样本系数之间的相似度,应用K最近邻(K-Nearest Neighbor, KNN)算法进行蝇类昆虫识别。虽然传统方法能够实现蝇类昆虫识别,但是传统方法提取的各类特征有局限性,识别精度较低。
随着人工智能的高速发展,深度学习在计算机视觉方向成为最流行的技术方法,尤其是在人脸识别方面取得了显著成果。人脸识别是将静态图像中检测出的人脸图像与数据库中的人脸图像进行对比,从中找出与之匹配人脸的过程,以达到身份识别与鉴定的目的。蝇类昆虫相似度较高,传统方法提取的特征不易区分导致识别困难。但是通过分析发现,从不同蝇类昆虫面部提取的特征向量区别较大,因此可以借鉴深度学习中人脸识别算法对蝇类面部进行识别。
在基于深度学习的人脸识别方法中,Szegedy等提出的GoogLeNet[4]采用多种尺寸的卷积核构成Inception结构,在保持网络稀疏性的前提下提高计算效率,却存在着网络层数较浅的问题,无法提取精确的特征向量。Bong-Nam Kang等于2017年提出了深度卷积神经网络[5](Deep Convolutional Neural Networks, DCNNs),由堆叠的多尺度卷积层块(Multi-scale Convolution Layer Blocks, MCLBs)构成,而MCLBs对Inception结构进行改进,加深卷积层数以呈现多尺度抽象,但是当Inception网络趋向于非常深时,会容易出现梯度消失的问题。He等提出的残差网络(Residual Network, ResNet)采用快捷连接的方式实现特征跨层传递[6],解决深度网络梯度消失这一问题,但在较深的网络层下计算效率仍然较低,同时还存在着特征提取不够精细的问题。
基于上述问题,本文在DCNNs网络的基础上,结合Inception-ResNet网络、Reduction网络、轮廓和具体部位特征细提取相融合这三个部分,从而提出基于深度卷积神经网络的蝇类面部识别研究方法,并命名为蝇类面部卷积神经网络(Fly Facial Convolutional Neural Network,FFCNN)。通过改进卷积神经网络结构来提高蝇类面部识别的准确率,提高计算效率。
2 DCNNs网络
DCNNs网络是由堆叠的多尺度卷积层块构成,以呈现多尺度抽象。为了训练DCNNs网络,使用由标准脸图像、具有相同身份的人脸图像和不同身份的人脸图像组成的训练集,并应用由三重、成对、softmax求和构成的损失函数。
MCLBs是DCNNs网络主要的组成部分,分别由1×1,3×3,5×5卷积和3×3最大池化层组成。由于计算时间在视觉任务中很重要,因此使用1×1卷积作为降维,这使得DCNNs网络能够足够快地训练。将一系列卷积输出串接为一个输出向量,与简单卷积层序列的输出相比,该输出向量中的抽象级别随着层级别的增加而增加。MCLBs中的所有卷积层使用批处理规范化(Batch Normalization, BN)和非线性激活函数(Rectified Linear Units, ReLU)。
在新型训练集上即三重人脸方面,采用T=(IR,IP,IN)即(标准脸,相同身份人脸图像,不同身份人脸图像)作为训练数据集,通过损失函数使具有相同身份的面部之间距离最小化,并使具有不同身份的面部之间距离最大化:
Ltotal=Ltirplet+Lpairs+Lsoftmax,
(1)
其中总的损失函数如式(1)所示,即总的损失函数Ltotal由三重损失函数Ltirplet和成对损失函数Lpairs和softmax损失函数[7]Lsoftmax相加求得:
(2)
三重损失函数如式(2)所示,即F(IR)是IR经过DCNNs映射之后的输出,同理F(IP)是IP经过DCNNs映射之后的输出,F(IN)是IN经过DCNNs映射之后的输出。‖F(IR)-F(IN)‖2是标准脸与不同身份的人脸图像的距离,‖F(IR)-F(IP)‖2是标准脸与相同身份的人脸图像的距离。m是一个边缘限制比例值,是一个常数:
(3)
成对损失函数由式(3)所示,IR和IP均表示三重人脸数据集T中的标准脸和相同身份的人脸图像,成对损失函数Lpairs即为标准脸与相同身份的人脸图像距离之和,使得标准脸图像与相同身份的人脸图像之间距离最小。
而将DCNNs网络应用到蝇类面部发现,经过MCLBs等卷积层图像信息流失较大,提取不到较为精确的特征向量,无法达到较高的识别精度,并且耗时较长。为了提升面部识别的准确率以及降低计算复杂度,可通过改进卷积神经网络[7]的方式来提升网络的性能。
3 基于深度卷积神经网络的蝇类面
部识别
3.1 蝇类面部对齐
由于深度学习方法是将对齐后的面部图像通过深层网络提取面部特征,而现实问题是并不能全部捕捉到对齐的面部照片,因此识别精度不够高。针对这个问题采用多任务卷积神经网络(Multi-task Convolutional Neural Network, MTCNN)网络,而MTCNN网络主要由P-Net、R-Net和O-Net三个部分组成[9],使用全卷积的P-Net在多尺度的待检图像上生成候选框,接着通过R-Net和O-Net来过滤,其总的损失函数如式(4)所示:
(4)
图1 标准卷积Fig.1 Standard convolution
标准卷积如图1所示,输入通道数为M,输出通道数为N,其中(A)表示输入特征映射F尺寸为(DF,DF,M),(B)表示标准卷积K尺寸为(DK,DK,M,N),(C)表示输出特征映射G尺寸为(DG,DG,N),则标准卷积的计算量为DK×DK×M×N×DF×DF。
图2 深度卷积与逐点卷积Fig.2 Depthwise convolution and pointwise convolution
深度可分离卷积由深度卷积和逐点卷积构成,如图2所示,由标准卷积拆分后可得。深度卷积对输入图像的每个通道进行卷积,从而达到滤波的功能。(D)表示深度卷积尺寸(DK,DK,1,M),其输出特征用(E)表示为(DG,DG,M),深度卷积计算量为DK×DK×M×DF×DF。逐点卷积主要通过转换通道,使用1×1卷积将这些特征合并起来,(F)表示逐点卷积尺寸为(1,1,M,N),得到最终输出特征仍用(C)表示为(DG,DG,N)。逐点卷积计算量为M×N×DF×DF。
深度可分离卷积计算量为深度卷积和逐点卷积之和,深度可分离卷积与标准卷积的计算量之比如式(5)所示:
(5)
其中N和DK的数值均大于1,由此可得,深度可分离卷积的计算量比标准卷积的计算量要小。并且在I/O效率和性能不变的情况下,计算量有着明显下降。
在MTCNN网络中,通过框选定位以及识别出5个特征点位置后,再经过仿射变换,即二维坐标到二维坐标之间的线性变换,保持二维图形的“平直性”和“平行性”,如公式(6)所示:
(6)
其中:(tx,ty)表示平移量,而参数ai则反映了图像旋转,缩放等变化。将参数tx,ty,ai(i=1~4)计算出,即可得到两幅图像的坐标变换关系,并实现了面部对齐。裁剪缩放到分辨率为95×95的标准面部图像,如图3所示。
图3 蝇类面部对齐Fig.3 Fly species facial alignment
3.2 蝇类面部的FFCNN网络
本文在DCNNs网络的基础上提出一种新的网络结构FFCCN网络,即通过Inception-Resnet网络、Reduction网络,轮廓与具体部位粗细提取等组合来构建如图4所示。所有卷积层和完全连接层使用ReLU非线性激活函数和BN批处理规范化。平均池化取每个特征图的平均矢量,求出空间信息。由于空间信息由求平均值得出,所以平均池化具有平移不变性。 FFCCN网络的输入是蝇类昆虫3种面部之一,即IR(标准面部),IP(相同昆虫的其他面部图像)或IN(不同昆虫的面部图像)。将提取到的具体部位特征放入损失函数中,使得同种类别昆虫距离更加接近,不同种类别昆虫距离更加疏远。并将轮廓特征与具体部位特征向量相融合为一个特征向量,通过验证其准确率判断识别效果。
首先输入预处理后蝇类面部图像,其次进入轮廓特征粗提取部分如框图Ⅰ所示。该部分通过大量卷积池化能够粗提取出图像的轮廓特征值,并放置于全连接层中,使用辅助分类器判断类别,从而达到减少图像信息损失,使得识别更加全面的目的。同时,网络提取到蝇类面部的具体部位特征如框图Ⅱ所示。此部分主要经过Inception-ResNet网络,在减少图像梯度散失的同时减少计算参数;以及Reduction网络在减少图像信息损失的同时减小图像尺寸,使得提取特征值变得更加精确化。并且在具体部位特征细提取后,通过Bong-Nam Kang等提出的损失函数算法,可以让同种类别的昆虫距离更加接近,不同种类别昆虫距离更加疏远。
图4 网络主框图Fig.4 Main network diagram
图5 Inception-Resnet框图Fig.5 Inception-Resnet diagram
为防止训练过程中的梯度消失问题和提高计算效率,加入Inception-ResNet网络如图5所示。将ResNet残差网络和Inception网络相结合,其中框图Ⅲ表示Inception网络,并用残差连接替代滤波器的连结,将图Ⅲ作为一个整体和剩余部分连接构成ResNet残差网络[11]。首先用1×1卷积升高维度,然后用3×3卷积以最小卷积核最大程度的提取图像信息,最后再用1×1卷积进行降维。可以简化学习目标和难度,在防止梯度散失的同时,更加快速提取特征向量。
图6 Reduction框图Fig.6 Reduction diagram
图6的Reduction网络可以减小图像块尺寸,即每经过一个Reduction网络,特征图的尺寸就会显著减少。由于池化层在下采样的过程会损失过多信息,所以文中采用Reduction网络替代部分池化层来减小特征图的尺寸。其中filter concat 层是一种累积和的叠加,把多个特征直接加在一起;1×1卷积用来减少特征维度;并且此网络加入了3×3深度可分离卷积可以在损失精度不多的情况下大幅度降低参数量。
在图4的网络主框图中,将给定面部图像的特征分别用f1,f2表示,框图Ⅰ中的全连接层提取特征向量为f1;框图Ⅱ中倒数第2个全连接层提取特征向量为f2。将这些特征向量串接成一个特征向量,并利用PCA[12]给它降维至1 024维,通过对数似然比的数值比较来实现面部验证。如公式(7)所示,其中,HI表示类内变化的熵和HE表示类间变化的熵:
(7)
通过联合贝叶斯算法得到数据[13],从而验证输入的两张面部是否为同一个昆虫。因此将面部的轮廓和具体部位特征提取相结合可以更精确地进行面部验证,从而可以了解特征提取程度,进而判断识别的效果。
4 实 验
本实验电脑配置为Intel i7处理器,显卡为NVDIA RTX2080Ti,16 G内存,并基于Caffe深度学习框架的GPU版本实现了所提方法[14]。利用前向网络上的标准反向传播,在动量为0.9、学习率为0.23,批量大小设置为16的情况下,通过随机梯度下降优化来训练所提出的FFCNN网络。从标准差为0.01的零均值高斯分布中提取权重来随机初始化所有的网络层。在数据集上对所提出的FFCNN进行了大约24 000次的迭代训练,训练的epoch为100。本实验共包括数据集、识别过程、准确率及识别时间、ROC(Receiver Operating Characteristic)曲线及LOSS曲线共4个部分。
4.1 数据集
本实验选用由大连海关实验室提供的蝇类昆虫标本作为数据集样本,共选取11种蝇类标本包括叉叶绿蝇、大头金蝇、大洋翠蝇、横带花蝇、沈阳绿蝇、家蝇、厩腐蝇、巨尾阿丽蝇、亮绿蝇、丝光绿蝇、棕尾别麻蝇。选取蝇类标本其颜色形态不易变化且易于拍摄。图像采集设备为尼康(Nikon)COOLPIX A1000数码相机,图像的分辨率为4 608×3 456 pixel,格式为JPG。为区分蝇类相似部分形态,将蝇类的11种样本分别以蝇类面部为中心随机角度拍摄图像,每种蝇类拍摄60张,共拍摄660幅图像。实验室拍摄的部分蝇类原始图像如图7所示。
(a)大洋翠蝇(a)Orthellia pacifica zimin
(b)横带花蝇(b)Anthomyia illocata
(c)巨尾阿丽蝇(c)Aldrichina grahami
(d)丝光绿蝇(d)Lucilia sericata图7 部分蝇类原始图像Fig.7 Original image of some fly species
在数据集制作过程中,为了增加训练的数据量,提高模型的泛化能力,避免数据量过少出现过拟合现象,需要进行数据增强处理,保证每种蝇类的数目相同。通过图像翻转和平移、缩放原始图像的20%、局部模糊等处理,增强图像后的数据集共得到6 420幅样本图像。并随机选取60%的图像,即3 852幅图像用作训练,选择20%的图像,即1 284幅图像作为验证集,剩下20%即1 248幅图像用来测试。
由于MTCNN检测方法对自然环境中光线、图像角度变化更具有鲁棒性,因此本实验使用MTCNN网络对原始图像进行面部定位和特征点检测。通过仿射变换和剪裁缩放得到对齐后统一尺寸为95×95的蝇类面部图像,同时记录对应蝇类的名字作为蝇类面部识别的标签。并展示部分数据集图像如图8所示。
(a)沈阳绿蝇(a)Lucilia Shen Yangensis
(b)棕尾别麻蝇(b)Boettcherisca peregrina
(c)叉叶绿蝇(c)Lucilia caesar
(d)大洋翠蝇(d)Orthellia pacifica zimin
(e)大头金蝇(e)Chrysomyia megacephala
(f)亮绿蝇蝇(f)Lucilia illustris
(g)巨尾阿丽蝇(g)Aldrichina grahami
(h)丝光绿蝇(h)Lucilia
(i)横带花蝇(i)Anthomyia illocata图8 部分数据集图像Fig.8 Partial dataset images
此实验分别验证标准卷积和深度可分离卷积在MTCNN网络中的运行时间是不同的。并记录图7中列举部分蝇类在此网络中平均运行时间,如表1所示。从表1可以看出,应用深度可分离卷积确实可以减少参数量。通过不同卷积运行时间的比例可以看出,在I/O效率和性能不变的情况下,深度可分离卷积比标准卷积计算量降低近8倍。
表1 不同卷积运行时间对比Tab.1 Comparison of different convolution time (ms)
4.2 识别过程
本文使用FFCNN网络进行蝇类面部识别,应用OpenCV调用Caffe模型进行分类,具体过程如图9所示。为测试此网络模型训练效果的优劣,输入测试集非正面的蝇类图像。使用卷积池化粗提取出标准蝇类面部图像的轮廓特征值;同时,使用Inception-ResNet,Reduction网络细提取出具体部位特征值,并将两者的特征值串接为一组特征向量。最终识别结果为叉叶绿蝇的可能性达98.995%,即识别正确并把正确的标签标注在输出图像中。因此,采用轮廓特征粗提取和具体部位特征细提取相结合的方式提取更加丰富的特征信息。与此同时,也验证了FFCNN网络模型的训练效果较好。
图9 蝇类面部图像识别过程Fig.9 Face image recognition of fly
4.3 准确率及识别时间
通过多次随机输入两张蝇类面部图像,进行验证,从而得到各个网络下的准确率如表2所示。因为加入了轮廓与具体部位相结合特征提取和Inception-ResNet结构,不仅更加全面地进行了昆虫特征提取,还减少梯度散失更大程度地保留了特征信息。同时,为了图像尺寸缩减而引入的Reduction网络也在减少特征信息的流失。FFCCN网络的准确率高达到94.03%,准确率最高。而其他几种方法没有应用此轮廓与具体部位相结合特征提取和Inception-ResNet网络以及Reduction网络,所以并没有取得较高的准确率。而验证准确率越高则说明其特征提取的信息越精准,从而证实了此网络的昆虫种类识别效果十分显著。
表2 不同网络的准确率对比
通过对数据集中面部图像测试,并将各种方法进行对比,并将其他用于人脸识别的方法如:将DeepID,DCNNs,ArcFace网络应用在蝇类面部。记录从不同网络输入时,平均每个蝇类面部图像识别所需时间,如图10所示。而且应用Inception-ResNet网络不仅减小梯度散失还同时在Inception的作用下提高计算效率,Reduction网络在减小图像块尺寸时应用深度可分离卷积,减少大量计算参数,从对比可以看出FFCNN网络平均识别一张蝇类面部图像所用时间为27 ms,虽然比近期发表的网络ArcFace网络识别时间要长,但是相对DeepID,DCNNs网络而言,耗时较少,计算效率较高。
图10 不同网络的识别时间对比Fig.10 Identification time comparison of different networks
4.4 ROC曲线及LOSS曲线
若要测试此网络结构的性能,需绘制ROC曲线[17]即感受性曲线。该方法简单直观,通过图示可观察分析方法准确性,并可用肉眼作出判断。其中横坐标为假正类率(False Positive Rate,FPR),纵坐标为真正类率(True Positive Rate,TPR)。其计算公式如式(8)和式(9)所示:
(8)
(9)
其中:FN被判定为负样本,但实际为正样本;FP被判定为正样本,但实际为负样本;TN被判定为负样本,实际也是负样本;TP被判定为正样本,实际也是正样本。ROC曲线将FPR和TPR以图示方法结合在一起,可准确反映学习器性能,是检测准确性的综合代表。并且靠近左上角的ROC曲线所代表的学习器准确性最高。实验结果如图11所示。经过对网络进行改进例如:轮廓与具体部位特征结合提取,加入Inception-ResNet网络以及Reduction网络,可以看出FFCCN网络曲线最靠近左上角,说明FFCNN网络的性能较好,准确率要高于其他网络。
图11 不同网络的ROC曲线Fig.11 ROC curves of different networks
通过对DCNNs网络损失函数的学习并应用在数据集上,可以得出FFCNN网络相应的损失函数的训练曲线如图12所示。可以看出在epoch为0~40时,曲线下降速度比较快,收敛较快;而随着横坐标的增大,epoch为40~100时,曲线越发平缓,收敛较慢,损失函数的值也越发趋近为0。迭代训练次数越多,损失函数值越小,最终趋近于0。
图12 损失函数的训练曲线Fig.12 Training curve of loss function
5 结 论
本文借鉴深度学习在人脸识别中的方法,重点研究基于深度卷积神经网络在蝇类面部识别的应用。同时为解决蝇类面部识别精度较低,计算效率较慢等问题,对面部进行轮廓与具体部位特征细提取相结合,全面的提取特征向量,提升了准确率;将Inception和ResNet网络合理的融合,在防止梯度散失的同时提高了计算效率;应用Reduction网络通过深度可分离卷积使得计算量减小同时大幅度降低参数量。最终使FFCNN网络的准确率达到94.03%,平均识别一张蝇类面部图像所用时间为27 ms。同时,希望对未来的蝇类面部识别研究可以在非监督学习上取得显著进展,使蝇类昆虫识别问题在理论和实践上都得到更好地解决。