CNN与SVM和ResNet相结合的牛脸识别系统模型研究与实现
2022-08-16朱敏玲赵亮亮和首杰
朱敏玲,赵亮亮,和首杰
(北京信息科技大学 计算机学院,北京 100101)
0 引言
随着畜牧养殖业向规模化、信息化、精细化的方向发展,集约化牛场将渐渐取代散户养殖等小规模的养殖模式。在大规模化牛场中要实现对牛个体自动化、信息化的日常精细化管理,实现对每头牛的健康状况追踪以及奶源和肉制品追溯,必须实现质量追溯体系的搭建与完善,而关键又在于对牛个体身份的识别[1]。传统的牛个体身份识别需借助外部工具对身体某部位进行标记或者佩戴标记装置,识别方法具有侵入性,不仅严重影响日常行为,还可能引发全隐患[2]。
从20世纪60年代以来,在物体识别的领域内,人脸识别一直受到众多学术人士的研究和尝试,尤其在计算机领域内视觉处理与图像处理方向和相关的生物学方向激起了研究人员的探讨和兴趣[3]。目前,对于人脸的检测和识别取得了非常大的成功。牛脸较其身体的其他部位具有眼睛、鼻子、嘴等结构及纹理的突出特征,比较适合牛不同身份的标识。当前鉴于人脸识别的技术在很多行业内部获得广泛应用,对牛脸识别技术的发展具有较强的可借鉴空间。Hadad等[4]采用基于分割的分形纹理分析提取牛鼻特征,提出人工神经网络(ANN)和支持向量机(SVM)建立牛分类模型。Kumar等[5]利用加速鲁棒特征(SURF)和局部二值模式(LBP)等纹理特征描述,从不同高斯金字塔平滑级别的牛鼻口图像中提取特征,同时采用融合加权和规则方法对高斯平滑层上的特征描述进行融合,完成对牛分类。姚礼垚等[6]针对传统检测方法在牛脸检测应用方面存在的检测设备易损、检测结果不理想等问题,使用目前有代表性的基于深度网络模型的目标检测方法(SSD,Faster R-CNN和R-FCN)对牛脸检测进行试验对比。蔡骋等[7]指出牛场当中的视频监控图像在实际生产环境下由于摄像机拍摄方位存在不足、太阳光照不均匀、牛场中一些物体遮挡牛脸等一系列问题,首先采用级联式检测器进行定位采集牛脸正面图像,在获取定位到牛脸正面信息时,利用监督式梯度下降算法、局部二值算法和主动外观模型算法,验证了对于牛脸进行特征点检测的可行性和实用性。此类方法的关注点只有牛的正脸方面,导致在前面准备工作量巨大,并且自动采集牛脸数据在实际的实施过程中很难实现。因为人脸具有不同的五官特征,所以对于人脸识别是比较容易[8];而牛脸上面的毛发和颜色分布是不稳定的,并且图像采集的过程是无法控制的,牛没有办法在摄像头前长时间静止,尤其在大自然的环境下,太阳光时刻变化、照相机视角和距离的变化、复杂的背景、牛自身的活动等因素导致图像采集十分困难。采集到不规则的牛脸会对于模型初步训练和最后的识别精度有极大影响。因而与人脸识别相比,牛脸表面特征杂乱性以及各种外部因素的影响,导致对于牛脸的识别技术在实际生活中没有大规模普及。故而,基于CNN在人脸识别上的优势,展开针对牛脸的CNN迁移与改进方法研究有一定的可行性并且也是非常重要的。
1 传统的卷积神经网络
卷积神经网络(CNN)是深度学习的重要算法之一,是卷积计算且具有深度结构的前馈神经网络[9]。卷积神经网络表征学习能力强,能够按其阶层结构对输入信息进行平移不变分类[10]。如图1所示,CNN通常含有输入层、卷积层、池化层、全连接层和Softmax层[11],其中卷积层占最为重要的地位。除此之外,卷积神经网络还有两大重要的特点,分别为局部感知和参数共享[12]。局部感知是每个神经元不与上一层的全部神经元连接而只和其中感受野内的神经元连接,因为这样只能感知到感受野内的部分而并非全局,因此叫做局部感知[13]。之所以这样做是因为小范围内的像素之间联系较大,离得越远的像素之间通常关联越小[14]。权值共享就是对于图像中的每一种特征只通过一个卷积核来进行过滤。如此,网络通过这2个重要的特点来减少参数达到简洁。处理图像问题时,需要考虑到图片的大小规格,例如对一个900×900图像的训练难以实现,所以要想办法减少参数。
图1 典型CNN结构
卷积神经网络中卷积层、池化层和全连接层,每一层都将实现不同的功能,每个连接层代表不同类型数据的线性映射。
1)卷积层(Convolution Layer)
每个卷积核通常都可以理解为一个n×n的小方块,也叫滤波器,这样的一个卷积核在图像矩阵上对卷积核范围内的数字通过一定的运算法则进行压缩。如果是灰度图,只使用二维的卷积核即可。如果图像是彩色图,需要使用的卷积核也从小正方形变成了小正方体。而卷积层就是多个卷积核叠加而形成的。
2)池化层(Pooling)
池化层实现图像特征选择和去除冗余信息。池化层通过相邻区域内对特征图信息提取替换特征图中单个像素点的信息,保留高强度区域,过滤掉低强度区域,将特征矩阵进行压缩,增强特征表示,进而缩小参数矩阵的尺寸,有效地使全连接层中的参数数量减少以保证全连接层拟合正常[15]。
3)全连接层(Fully Connected Layer)
全连接层就是把神经元连接起来,位于 CNN 隐含层的最后,并且其信号传递具有特异性,只将信号传递到全连接层,并将拓扑结构的特征图转换成向量形式输出,通常再加上Softmax[16]。Softmax 函数主要起分类作用,并将多个神经元的输出映射到(0,1)区间范围内,将分类转化为概率比较问题[15-16]。
2 CNN-ResNet-SVM网络模型设计
CNN能够从非常多的样本当中学习到特征表示,具有强大的分类能力,整个网络表达了原始图像像素与类特征之间的映射关系[17]。但是牛脸识别是一个新任务,没有像人脸一样有标准的大规模训练数据集,且现场采集的牛脸数据的质量也不高,因而,设计轻量化的网络结构以及引入其他算法以应对小数据集。SVM支持向量机方法是一种采用结构风险最小化准则的学习方法,其模型本质是特征空间上间隔最大的线性分类器,具有更强大的泛化能力[18]。传统机器学习算法在特征的选择和提取过程中,存在凭借人工经验去设计特征和选取特征的问题,最终会使识别的准确率降低。而基于CNN神经网络提取特征通过网络自动提取特征,解决了SVM等凭借经验去设计和提取特征过程复杂且结果不好的问题[19],而且提取的特征具有平移、倾斜、旋转不变等特点。SVM需要比较少的样本数量就可以达到与CNN一样的识别效果,同时SVM决策分类方法的训练时间长度也比复杂的神经网络训练时间相对少得多,并且预测速度也更快。
为进一步提升收敛速度,以及降低网络深度引起的部分特征丢失和梯度弥散问题,引入残差网络(residual neural network,ResNet)模块环节。即随着网络深度的增加,普通卷积神经网络会出现训练梯度弥散收敛困难而导致网络性能退化的问题,所以提出了残差网络来解决普通卷积神经网络的此类问题。残差网络本质上是在普通卷积神经网络的基础上增加了恒等映射,当网络达到最优状态时,残差网络中的残差映射变为“0”,此时只剩下恒等映射,使网络一直处于最优状态[20]。
通过以上SVM以及残差网络的研究,本文中提出的改进结构如图2所示。网络结构包含3层卷积层、3层最大池化层、1层残差单元层、1层平均池化层和1层SVM分类层。残差网络单元结构如图3所示,该结构是一个3层的网络结构,其中中间卷积层的卷积核大小为3×3,其他2个卷积层的卷积核大小为1×1。残差单元直接将底层信息与高层信息进行融合,将特征映射到网络的深层部分,防止特征减弱或消失。
图2 CNN-ResNet-SVM网络结构
图3 残差网络单元结构
改进的卷积神经网络对图像处理采用更大的感受野,首先通过卷积核大小为 5×5进行卷积运算,提取原始图像的特征,然后分别通过一个5×5和3×3的卷积运算进一步提取图像特征;在进行卷积操作之后再通过一个2×2的池化对特征进行过滤;在进行残差之前先对特征图进行降维操作,输出的维度为64维,经过残差单元之后维度变为128,再经过一个平均池化层;平均池化层在保持旋转、平移、伸缩等情况下减少特征和参数,最后在SVM层依据前面环节所提取的特征进行分类识别。
3 实验与分析
本实验数据来源于四川省宜宾市养殖场所拍摄的图像,总计70头西门塔尔肉牛,原始图像总计2 792张,其中训练使用2 218张,测试使用574张。同时,训练网络的实验环境是:操作系统为Window10 64位,处理器为Intel i7-4770@3.40 GHz,GPU为GTX1080,内存为16 GB,未使用GPU cuda加速。
3.1 训练与结果分析
目前,对于人脸检测和识别已经相当完善,存在着大量可用于实验的公开数据集。人脸各部位的位置及结构稳定,方便进行检测和识别。而牛脸的毛发和纹理变化是不确定的,并且图像采集的过程是无法控制的,牛没有办法在摄像头前长时间静止,尤其在大自然的环境下,太阳光照条件时刻变化、照相机视角和距离的变化、复杂的背景、牛的运动等因素导致图像采集更难。将原始图像进行了数据增强与扩展,将训练测试集扩充到了27 920张。训练总迭代次数共350次,训练时间313.16 s,预测时间2.06 s,识别率达到了95.12%。图4为某次训练过程中损失值与准确率结果,由于现场采集的图像都为客观数据,而不是理想化的数据,其结果曲线值存在一定的波动,但总体来说,随着训练轮次的递增,对于牛脸的识别准确率是显著提升的,同时收敛的速度也在变快。
图4 本文与传统CNN-Softmax模型曲线
通过模型训练过程与结果分析,本文算法将CNN、ResNet和SVM相结合,将单一化的卷积神经网络的结构进行优化,减少了模型的参数数量,同时模型的收敛速度更快并且还有更高的识别精度。卷积神经网络在进行训练之前,要先给出图像及其对应标签,是一种有监督学习模型。在改进的CNN中,在进行SVM分类之前先通过一个平均池化层,将提取的特征向量进行过滤,有助于最后SVM的分类。SVM算法相比较于传统的Softmax通过概率输出来说,可以只通过其中的关键特征数据对最后决策结果进行评估,可以有效剔除部分无关的数据,不用考虑样本中的全部特征数据,具有很好的鲁棒性,对牛脸识别准确率有明显提升。CNN-ResNet-SVM结合的算法将网络提取到的图像特征转为特征向量,最后通过SVM实现对图像的分类。这样结合起来的算法运行时间短、收敛速度快且识别率高。CNN-ResNet-SVM算法本质上是在网络中通过残差结构保证了特征在训练过程中不会减弱,最后用SVM输出分类结果代替了传统神经网络中用Softmax来进行分类的结构。
3.2 卷积层特征提取效果分析
本文的思想是CNN-ResNet-SVM首先通过卷积神经网络提取牛脸特征,经过池化操作过滤特征图信息且保留重要特征;然后通过一个全局平均池化将特征图像全局进行压缩,转换为特征向量的格式,作为SVM的输入,最后由SVM对牛脸图像进行分类决策得到识别结果。同时对各层卷积作用后的结果进行了可视化,如图5所示。图5(a)第1层体现了边缘特征;图5(b)第2层对角、轮廓等进行了展现,本层体现出的效果更接近人类视觉;而图5(c)第3层则更加抽象。
图5 各卷积层特征提取结果可视化图
3.3 识别效果分析
在PC端运用训练好的模型识别效果,如图6所示,在不同光线、不同角度及背景下的识别效果中,当背景有干扰及角度大幅度变化时,识别的错误率会提升,如第1行第1列的角度干扰导致了错误判断。
图6 模型训练后PC端识别结果
同时,将训练好的模型移植到手机端,借助Tensorflow Lite工具设计Android平台的加载模型框架,并设计出图片处理框架,运用手机摄像头拍摄图片或者通过系统相册选择图片加载到 APP 界面,随即就可以在图片下方显示预测结果。用OpenCv对数据集图片进行预处理并用ImageDataGenarator对数据集进行增广,最后通过Android studio对2个框架开发成安卓手机 APP。手机端为华为荣耀款,其主要配置:CPU型号为天玑900;运行内存为8 GB;前摄主摄像素为1 600万;后摄主摄像素为1亿。如图7所示,识别速度最快在128 ms左右,识别率最差95.12%,最好达97.358 2%。
图7 智能牛脸识别系统APP端识别结果
如表1所示,汇总了几个最新的牛身份识别相关方法,本文的算法在准确率上比ANN+SVM、SURF+LBP、SSD模型高,比R-FCN、Faster R-CNN要略低一点;但R-FCN、Faster R-CNN模型参数量大并且运行时间较长,实用性差,同时它们只是实现了牛脸检测发现功能,并未实现牛的身份确认功能。
表1 最新检测结果
经过以上实验验证,CNN-ResNet-SVM 模型的优点在于改进后CNN网络结构中,由于ResNet环节的引入加速了模型收敛速,并保证了进入SVM前的低级与高级抽象特征内容都更丰富;而SVM作为CNN的最后一个环节,不仅能加速判断分析的速度,同时充分利用其具有的最优超平面的特性使得系统的泛化性较传统CNN显著提升。
4 结论
本文调研和分析了牛身份识别现存问题以及计算机技术在人脸识别上取得的方法和成绩,并分析图像方法在自动牛脸识别上的难点问题,在牛脸识别上的算法模型和实现方法上展开了研究。传统的图像机器学习识别算法中,提取优质特征对人工经验的依赖性较大,对于识别问题存在如何提取出有效特征的复杂工程问题,使得实验过程过于繁琐。基于深度学习的神经网络识别算法中,对数据量的要求较高,而且层数越多,预测识别的时间越长,且收敛速度严重减慢。此模型结合了CNN自适应提取特征以及残差网络结构对浅层和深层特征差异增强的能力和传统机器学习中的SVM泛化能力强的特点,通过CNN提取特征可以增强数据的个体差异并保证所提取的特征内容更丰富和准确,最终提高SVM判断识别物体的速度和精度。实验结果证实了基于CNN-ResNet-SVM用于牛脸识别分类的可行性及模型的泛化性能,即使在小样本识别任务中也同样具有优秀的识别精度和快速的实时响应速度。
但是该模型和算法在光照强度与角度变化较大时,识别准确率明显下降,值得继续关注和研究的。在未来的工作中,将进一步研究该模型,从引入噪声训练的角度出发提升模型对于抗干扰的鲁棒性。