基于迁移学习的并行卷积神经网络牦牛脸识别算法

2021-07-02 00:35陈争涛
计算机应用 2021年5期
关键词:牦牛特征提取卷积

陈争涛,黄 灿,杨 波,赵 立,廖 勇

(1.四川省国有资产投资管理有限责任公司,成都 610031;2.四川省国投现代农牧业产业有限公司,成都 610041;3.成都希盟泰克科技发展有限公司,成都 610041;4.重庆大学微电子与通信工程学院,重庆 400044)

(*通信作者电子邮箱liaoy@cqu.edu.cn)

0 引言

牦牛养殖可以带动高原地区的人们脱贫致富,但是现在的牦牛养殖仍处于传统的模式,养殖效率低,牦牛管理不精准。为了精确地对牦牛身份进行识别,亟须建立一套智能化平台辅助牦牛养殖和管理,因此智能化平台需要具有牦牛脸部识别功能,对牦牛进行监控。

近年来,随着人工智能的快速发展,人工智能的一些关键技术被应用于畜牧业。养殖场为了集中化管理,需要对牲畜的每个个体进行记录以及精确的识别。目前,牲畜身份识别的方法主要为射频识别(Radio Frequency IDentification,RFID)[1]标签方案,这种侵入式的识别方案需要在动物的耳朵上穿孔来佩戴无线射频识别标签,容易引起动物的不适,造成咬标、掉标的情况发生。人脸识别是基于人的脸部特征信息进行身份识别的一种生物识别技术[2],通常采用非侵入式的方法进行监视和识别,与养殖企业的应用场景非常相似[3]。当前,国内外已经有一些研究人员将人脸识别的部分技术应用到牦牛的行为识别[4]上,取得了一些不错的效果。但是,牦牛脸识别又具有其特殊性,牦牛群由于近亲繁殖的原因使得个体间的相似度很高,同时,牦牛脸上的一些毛发也会掩盖其面部特征,给牛脸识别造成了很大的困难。文献[5]中采用卷积神经网络(Convolutional Neural Network,CNN)和长短期记忆(Long Short-Term Memory,LSTM)网络两种深度学习网络对牛个体进行定位和识别,首先采用CNN 提取牛身体的特征,再使用LSTM 网络对个体进行识别,其仿真结果个体的识别率为87%;但是,该算法实施的前提是需要采集每头牦牛的体尺信息来进行识别,并且神经网络泛化能力低,工作繁琐复杂,不适合实际的养殖场环境。文献[6]中采用一种多通道局部二值模式直方图进行特征提取,然后使用支持向量机(Support Vector Machine,SVM)为主分类器对牛进行识别,该算法基于传统的图像识别方式,需要对图片进行多次预处理,算法的复杂度高并且最后所能达到的个体识别的准确度低,最高只有78%。文献[7]中提出了一种双线性卷积神经网络Bilinear-CNN,其在CUB200-2011数据集上可以获得84.1%准确度,该算法通过增加CNN 的层数来提高识别的准确性,随着网络层数的增加提取到的数据特征也就越多,所以网络的准确度也获得提升,但是网络层数的增加会使得网络在训练时出现梯度消失的现象,造成网络训练时间变长。VGG(Visual Geometry Group)模型[8]是由牛津大学视觉几何组参加ImageNet 挑战赛提出的网络,VGG 网络使用多个小型卷积核平滑地扩充网络的深度,使得该网络可以学习更加复杂的模式而不会出现梯度消失的情况,由于卷积核的个数较多,VGG网络的运算复杂度也会急剧上升,在网络训练寻找权重的过程中需要花费大量的时间。在实际的应用中,牦牛脸部数据特征多、网络训练速度很慢,针对这类情况,迁移学习是一种较好的解决方法。迁移学习[9]是一种基于源数据和目标数据、源任务和目标任务之间相似性的机器学习方法,它使用在源数据领域中学习到的知识来解决目标数据领域中的任务,可以有效降低网络的训练时间。

牦牛脸识别具有脸部毛发多、数据特征多且复杂的特点,若采用传统的CNN 进行牦牛脸识别,神经网络的算法复杂度高,网络在训练时需要对多种特征进行处理,训练时间大大加长。因此本文采用迁移学习的方法,在VGG16 网络的基础上结合并行CNN 对牦牛脸进行识别,降低网络的训练时间。使用VGG16 网络是为了利用现有网络的权重达到迁移学习的目的减少训练过程中的耗时,接着使用CNN 对特征进行处理。所提算法的具体步骤如下:首先使用现有的VGG16 网络结构对牦牛脸数据进行迁移学习,初步提取牦牛脸特征信息;接着使用并行的CNN 对牦牛脸特征进行二次提取;最后对提取的特征分类进行牦牛个体识别。本文算法在传统CNN 无法处理牦牛脸部大量数据特征的情况下引入迁移学习降低网络的训练时间,同时在牦牛脸识别上达到较好的精度。实验结果表明,改进的网络的识别准确率可以达到91.2%。

1 数据集的获取和处理

1.1 采集数据

在养殖的牧区采集300 头牦牛的脸部数据用于实验,包括成年牦牛和牦牛崽,两者的数量大致相同。为每一头牦牛拍摄三段视频,分别用于网络模型的训练、验证和测试,其中训练视频的时长为2 min,验证和测试视频的时长都为1 min,视频的分辨率为1 080P,每秒30 帧。拍摄视频的角度以及光照的强度会对网络的泛化能力造成影响,所以视频的拍摄分为正午和傍晚两个时间段完成,并且拍摄的角度不固定。将拍摄的牦牛视频按帧提取图像,分类保存。实验过程中使用的牦牛脸部数据将从保存的图像中获取。

1.2 数据处理

提取的图像中含有大量的背景噪声,会影响牦牛脸识别的效果,与人脸识别方法类似,本文方法是将牦牛脸从图像中截取出来,制作牦牛脸数据集。由于图像数据是从视频中按帧提取的,这些图像可能存在一些问题,如图片模糊、相邻图像之间相似度很高以及不包含或只包含少部分牦牛脸等。因此,需要图像数据进行清洗。首先,通过筛选掉牦牛脸数据不完整和模糊的图片。图像数据相似度高,会造成训练集和测试集样本图像相似,使得网络过拟合,无法判断网络模型的鲁棒性,因此需要通过图形相似度算法,淘汰其中相似度过高的图像。首先,对提取到的牦牛脸图像,利用图像均方误差(Mean Square Error,MSE)和结构相似性(Structural SIMilarity,SSIM)算法[10]来计算相邻图片间的相似程度并做筛选。

MSE的公式如式(1)所示:

只通过MSE 算法不能完全筛选数据集,因此加入了基于结构失真的SSIM 评估方法。SSIM 算法通过两幅图像之间的方差、协方差和平均强度来判断两幅图像是否相似,计算公式如(2)所示:

其中:ux、uy为输入图像的平均值,σx、σy为输入图像的方差,σxy为两幅图像的协方差;c1、c2为常数。S(x,y)的取值范围在0~1,当取值低于0.7时,可以认为两张图片不相似。

经过清洗后的数据集中,每头牦牛的图像有150~200 张。为了提高网络模型的泛化能力,利用垂直翻转、水平翻转、亮度降低、亮度增强等方法对数据集进行增强,其中图像的亮度变化随机选取参数以保证图像的随机性。

2 基于迁移学习的Parallel-CNN 牦牛脸识别算法

2.1 迁移学习

目前在牦牛脸识别领域存在标注数据少的问题,为了充分利用之前标注完成的数据,提出了迁移学习。为了使牦牛数据在迁移学习得到很好的利用,并能在新的领域和任务中发挥作用,本文提出一种将VGG 模型迁移到Parallel-CNN 的算法,具体方法如下:首先冻结并取出VGG 模型中的特征提取层,用于提取初次特征;再与CNN连接进行二次特征提取。

2.2 CNN算法

CNN 是一种具有卷积计算和深度结构的前馈神经网络[11],是深度学习的代表性算法之一。CNN 具有表示学习的能力,可以根据输入信息的层次结构对输入信息进行分类。在全连接神经网络中,相邻两层之间的所有节点互相连接,所以每一层的所有节点组成一列,而卷积神经网络相邻两层之间只有部分节点相连。对于全连接神经网络来说,直接训练牦牛的图像会导致训练参数过多,造成过拟合的问题,而卷积神经网络除了减少需要估计的参数以外,还能很好地提取牦牛脸图像中的特征。

图1为CNN对牦牛脸图像的特征提取可视化示意图。

图1 牦牛脸图像的CNN特征提取可视化示意图Fig.1 Schematic diagram of CNN feature extraction visualization of yak face image

CNN包含了卷积层、池化层与全连接层,每一层又由多个二维向量组成,并且每个向量由多个独立的神经元组成。而其中的核心是卷积层,其思想来源于数学中的卷积运算,如式(3)所示:

其中:x(t-a)表示输入,w(a)为卷积核。离散化后的形式为:

二维形式的卷积为:

2.3 VGG模型

与其他模型不同的是,VGG 网络更注重网络的深度,使用多个小卷积核构成卷积层,从而增加网络深度。与很多其他模型采用大卷积核的模式相比,VGG 网络使用多个3×3 的小卷积核堆可以平滑地扩充网络的深度并使得该模型能够学习更加复杂的模式。本文采用了VGG16模型,如图2所示。

图2 VGG16网络模型Fig.2 VGG16 network model

由图2可知,VGG16模型包含了13个卷积层、5个池化层、3 个全连接层。其中所有的卷积核大小均为3×3,采用3×3 小卷积核的原因是:两个3×3 的堆叠卷积层的有限感受野是5×5;3 个3×3 的堆叠卷积层的感受野是7×7,多个小卷积核构成的卷积层相比大卷积核,具有更强的非线性,能够拟合更复杂的情况。为了保留更多的信息,池化层全部采用2×2 的池化核;最后经过3个全连接层和Softmax层输出每个类别的概率。

2.4 Parallel-CNN牦牛脸识别

研究表明,人类的视觉信息加工主要由两条通路组成:腹侧通路和背侧通路,腹侧通路又称为枕-颞通路,负责对物体产生完整而精细的视知觉;背侧通路又称为枕-顶通路,负责对视觉刺激的空间知觉[12]。基于该思想,本文提出了Parallel-CNN 算法。同时,为了减少训练时间,利用已经训练好的VGG16模型进行迁移学习,算法的结构如图3所示。

图3 Parallel-CNN算法Fig.3 Parallel-CNN algorithm

图3 所示的Parallel-CNN 由两个并行网络组成,该网络包含初次特征提取和二次特征提取两个部分。在分类器运算过程中,任意一个并行网络使得不同维度的特征产生交互,这样能够提取不同的图片特征。因此,通过两个并行网络可以同时捕获输入图像不同特征之间的关系。

Parallel-CNN 算法由六元组组成,以第一个并行网络为例,函数形式为:

其中:V1、V2表示特征提取函数,D为全连接函数,C为卷积函数,P为池化函数,S为Softmax分类函数。

特征提取函数V1(·)通过VGG 模型来完成,V1(·)为特征空间映射,将数据特征空间进行变换:

其中R∈RE×F,V1(·)将输入的图像信息I变换为一个E×F维度的特征;接着通过一个全连接函数D将两个VGG 特征提取函数的输出进行维度变换:

D(·)将E×F维的数据转换为EF× 1维度的数据;C为卷积函数,对VGG的输出数据再次进行特征提取,卷积函数为:

其中:i和j代表矩阵的行和列索引,K为卷积核;P为池化函数,其作用是将每个卷积层的输出汇聚为一个最终的图像特征并去除冗余信息、减少计算量,P的计算公式为:

最后,S为Softmax分类函数,其输出为输入图像各类别的概率,公式为:

3 实验结果及分析

3.1 端对端训练

训练数据包括了300 头牦牛共90 000 张图片,即90 000个数据中一共有300 种类别。其中,数据被划分为训练集、验证集以及测试集,比例为7∶2∶1。在算法的训练阶段使用了训练集和验证集,其中训练集用于更新神经网络的参数,而验证集不参与神经网络权重的调整,起到检测每轮小批次数据的效果,进而监控算法是否过拟合的作用。实验过程中,训练数据经过了在人脸数据集预训练过的VGG16 网络,且在第五层池化层进行截断,实现了初次特征提取;接着进行维度变换,通过第一个全连接网络进行维度变换,激活函数为sigmoid函数,其函数形式为:

维度变换之后,进入多个卷积层和池化层进行二次特征提取,一共包括4 个卷积层和4 个池化层;最后经过第二个全连接网络作为分类器,该全连接网络包含1 个输入层、1 个隐藏层和1个输出层,训练时全连接层的dropout的概率为50%,输入层和隐藏层的激活函数为线性整流函数(Rectified Linear Unit,ReLU)函数,其函数形式为:

输出层采用Softmax 函数;损失函数采用交叉熵损失,其定义如下:

其中:K为类别数;yi为标签,如果类别第i类,则yi=1 时,否则yi=0;pi为神经网络的输出,其含义为类别为i的概率;优化器采用Adam。

本文所使用训练设备的配置为Turing 架构GeForce RTX 2080TI 显卡,Intel Xeon E5-2678 V3 处理器,64 GB 内存;软件运行环境为Ubuntu 20.04操作系统,Python3.7,PyTorch 1.2。

3.2 实验结果

本次实验选取准确率作为目标算法的评价指标。准确率指正确识别图像的数量占整个测试数据集的百分比。训练过程中的算法的准确率和损失值的变化曲线如图4和图5所示,损失值作为一个训练算法时的辅助指标,其用于度量算法的拟合程度,损失值越小,代表算法拟合得越好。

从图4 和图5 可以看出,随着迭代次数的不断增加,算法的准确率在不断提高,损失值在不断降低。在迭代次数达到60 次之后,准确率和损失值都逐渐平稳,并且准确率超过了90%,损失值在0.1 左右。验证集的曲线紧紧跟随训练集的曲线,没有出现过拟合的情况,说明使用了dropout 之后,算法抗过拟合性好。

图5 本文算法损失值变化Fig.5 Loss value change of the proposed algorithm

本次实验采用300 头牦牛9 000 张照片作为测试集来度量算法的训练效果,本文将Parallel-CNN 与VGG16 网络、ResNet-50 网 络[13]、基于主成分分析(Principal Component Analysis,PCA)的Eigenface 算法[14]、紧密连接型卷积网络(Dense Convolutional Network,DenseNet)[15]进行对比。训练时间和测试结果如表1所示。

表1 几种算法的训练时间和测试结果Tab.1 Training time and test results of several algorithms

从表1 可以看出,Parallel-CNN 的性能最优,在测试集上的准确率达到了91.2%。和VGG16 模型比较,二次特征提取使算法的准确率提升了12.9 个百分点,由于Parallel-CNN 算法冻结了VGG16 的所有权重,只训练了二次提升特征提取网络的权重,所以训练时间大幅缩减。另外,与ResNet-50相比,训练时间减少了大约43%,准确率也提升了6.6 个百分点;对比Eigenface,Eigenface 的训练时间比Parallel-CNN 算法减少了33.3%,但可能由于该算法不能较好地识别不同光照角度、强度下图像,准确率下降了18 个百分点。最后对比DenseNet,由于该网络在每一层使用前面层提取的各个特征,增强了特征传播,能取得不错的效果,准确率也比所提算法的低2.6 个百分点,且Parallel-CNN 较其训练时间减少了20%。总体上看,在设计图像的特征表述时,利用迁移学习与并行网络结合将各特征之间的空间位置关系考虑进去,的确能够更加丰富、准确地描述对象,说明多次特征提取建模局部特征的交互能力更强,在描述对象时比单神经网络更具代表性;而且,训练算法时不需要重新训练VGG16 模型的权重,显著降低参数的数量。

4 结语

本文针对牦牛养殖集中化管理中牦牛脸识别存在面部特征数据量大、神经网络训练时间长的问题,提出一种基于迁移学习的Parallel-CNN 算法来识别牦牛脸。该算法通过已训练好的VGG16 模型进行迁移学习,提取得到的牦牛脸图像的初次特征,再将提取到的初次特征输入并行CNN 得到二次提取的特征,最后通过全连接网络进行分类。通过分析与实验表明,该算法与目前常用的几种算法对比,能够有效降低训练时间并且保证较高的准确率。在未来的养殖领域中,应用牦牛脸识别技术可以确保牦牛的身份能够被准确、实时和自动获取,将丰富智能化牦牛管理信息平台功能和应用。

猜你喜欢
牦牛特征提取卷积
同步定位与建图特征提取和匹配算法研究
基于全卷积神经网络的猪背膘厚快速准确测定
赛牦牛(布面油画)
牦牛场的雪组诗
基于图像处理与卷积神经网络的零件识别
Yak of All Trades
美仁大草原的牦牛(外一章)
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
基于MED—MOMEDA的风电齿轮箱复合故障特征提取研究