APP下载

基于孪生神经网络的牛唇纹识别研究*

2023-03-15郑倩李琦

科技与创新 2023年5期
关键词:池化卷积准确率

郑倩,李琦

(内蒙古科技大学信息工程学院,内蒙古 包头 014010)

近年来,牛的身份识别已被广泛应用于各种场合,有效识别牛个体有助于牛的保险业务的发展,可以解决理赔牛和承保牛是否匹配的问题[1]。传统的图像识别方法主要分为特征提取和分类2 个阶段,一般通过提取颜色、形状和纹理作为图像的特征,基于牛唇纹的牛身份识别主要是提取纹理特征。 2013 年NOⅤIYANTO 等[2]使用SIFT 方法提取特征实现对牛身份的识别。将涂满墨水的牛唇部印在白纸上,所提出的匹配细化技术成功地减少了错误匹配。2015 年AHMED 等[3]提出了一个基于生物特征不变的加速鲁棒特征SURF 的牛唇纹识别系统,目的是使用更少量的特征点来获得最佳精度,缩短了系统完成识别所需的时间。2018 年,KUSAKUNNIRAN 等[4]提出了基于唇纹图像的多通道局部二值模式LBP 牛身份识别方法,利用多通道局部二值模式从唇纹图像中提取特征。目前已有的传统识别方法和基于纹理的特征提取技术无法在无约束环境下进行动物识别[5]。如今基于深度学习的生物特征识别技术在识别物种或动物个体方面获得了更多的关注。KUMAR 等[6]利用深度学习方法,使用卷积神经网络CNN、SDAE 和DBN 分别获得75.98%、88.46%和95.99%的识别准确率,在牛唇纹识别方面得到了较好的效果。用深度卷积神经网络提取牛个体突出特征,与数据库中的特征信息进行对比,从而实现对牛个体的有效识别[7]。深度学习相较于传统方法,可以更加准确地提取特征信息[8]。

大多数图像识别方法是利用分类的方法进行识别,在网络上训练就要确定待分类的类别,这对于类别种类多且每个类别样本数较少的识别来说难以训练出效果好的模型,本文选用孪生神经网络(Siamese Networ)作为基本的网络模型。相对于其他的特征提取算法,此模型在稳定性和识别的准确率方面都有较大的提升。

1 图像采集与预处理

目前还没有公开的牛唇纹图像数据集,所以实验使用自制的数据集,采集自内蒙古自治区的牧场,采集时间分别为2020 年9 月和2021 年6 月,拍摄对象为健康的安格斯牛和西门塔尔牛。实验所需图片应有清晰可见的牛唇纹理,所以要求拍摄过程中牛较为稳定。拍摄时间选择牛在牛架上打耳标前,用3 000 万像素的相机拍摄牛脸图像,并标记好耳标号,将采集好的牛脸图像中的牛唇纹部分裁剪下来保存,建立牛唇纹数据集。裁剪后的图像如图1 所示。

图1 牛唇纹数据集部分图像

实验共采集了200 多头牛的牛唇纹图像,每头牛图像若干张。最终选择174 头牛作为数据集,共计13 734 张图像。

2 牛唇纹识别模型设计

牛唇纹模型的基本结构如图2 所示,孪生神经网络主要是输入2 个需要测试的图像,利用孪生神经网络进行特征提取,通过ⅤGG16 训练得到2 个一维向量,将特征提取后的2 个一维向量相减取绝对值。最后利用全连接层判断2 张图片的相似性。若结果接近1,表示输入进来的图像相似性高;若结果接近0,表示输入进来的图像相似性低。

图2 Siamese-ⅤGG16 模型结构图

2.1 算法介绍

Siamese 网络也叫孪生神经网络,网络主要由2 个相同的模型分支子网络构成,分支网络主要用来训练输入图像的特征信息,再根据特征信息相比较计算出相似度。孪生神经网络有X1和X2这2 个输入,这2个输入使用的是同一个神经网络W,也就是权值共享。利用神经网络将2 个输入映射到新的空间,形成输入,在新的空间可表示为GW(X1)、GW(X2)。通过Loss计算评价2 个输入的相似度。训练孪生网络时,训练参数为2 张输入图像及标签,通过输入图像类型来给定标签值,输入为同一类别时标签记为1,反之记为0。因为孪生神经网络有着特殊的结构,其输入是一组样本数据,可以是2 张同一类别的图片,也可以是2张不同类别的样本,这样可以扩充网络输入的数量。

Siamese 网络模型的分支子网络由ⅤGGNet 组成,ⅤGGNet 模型是由SIMONYAN 等在2014 年提出的,其中ⅤGG16 模型结构包括卷积层、最大池化层和Flatten 层,可以分为5 个卷积Block 部分,每个Block又由卷积层和最大池化层组成,随着卷积层一层层运算,最后一个Block 将输出的特征层平铺成一维数据用于分类。使用(Binary Cross Entropy,BCE)作为损失函数,利用损失函数对输出图像的每个像素进行预测分类,求目标与预测值之间的差距,实现图像识别。

2.2 环境配置

Siamese-ⅤGG16 网络模型的训练是基于深度学习,框架为TensorFlow2 框架,使用Ubundu16.04.1 操作系统,并使用cuDNN 库加速GPU 计算。本文研究的模型是用Python 语言实现的。

2.3 模型训练

首先向孪生神经网络模型输入图像,经过多层网络训练,Conv1-2 包括2 次3×3 卷积网络,1 次2×2最大池化,输出的特征层为64 通道;Conv3-4 包括2次3×3 卷积网络,1 次2×2 最大池化,输出的特征层为128 通道;Conv5-7 包括3 次3×3 卷积网络,1 次2×2 最大池化,输出的特征层为256 通道;Conv8-10包括3 次3×3 卷积网络,1 次2×2 最大池化,输出的特征层为512 通道;Conv11-13 包括3 次3×3 卷积网络,1 次2×2 最大池化,输出的特征层为512 通道。然后对结果进行平铺,最后进行2 次神经元为4 608的全连接层全连接,连接到数据集类别的维度上,用于分类。模型的损失函数采用交叉熵函数,将全连接层加入Dropout 层防止过拟合。Relu 函数作为非线性激活函数,池化方式为平均池化,使用Adam 优化算法优化模型,牛唇纹理图像数据集中训练集占90%、测试集占10%。

本文使用所选用的模型,在自建的牛唇纹图像数据集上,完成了不同Batch_Size 大小、不同学习率情况下的实验,并将对应的实验结果进行分析。

不同学习率下的loss 曲线如图3 所示。不同学习率下的准确率数值如图4 所示。

图3 不同学习率下的loss 曲线图

图4 不同学习率下的准确率数值图

通过实验对比发现,随着Batch_size 增大,训练速度提高,内存占用率增加。当其他参数不变,学习率LR为0.01 时,loss 曲线出现震荡的现象;当LR为0.000 1 时,损失函数减小过快导致过拟合。最终模型参数Batch_size 的大小设置为32,LR设置为1e-3,迭代轮数epoch 为100。在一定的epoch 下,损失降为0.5以下,训练集loss 曲线和验证集loss 曲线都趋于平缓,最后趋于稳定。结果显示,该牛唇纹识别模型能够很好地比较出输入图片的相似性,具有较好的识别率,最终识别准确率为98.9%。

3 结果与分析

根据训练之后的模型,输入2 张图片进行预测,实验效果验证如图5 所示。从图可以看出,同一头牛的不同牛唇纹图像相似度接近于100%;不同头牛的牛唇纹图片相似度低,更接近于0。通过以上实验结果可知,结合这种训练方式,Siamese-ⅤGG16 模型对牛唇纹图片相似性的判断有很好的效果,在牛唇纹识别方面可以获得更高的准确率。

图5 实验效果验证

猜你喜欢

池化卷积准确率
基于Sobel算子的池化算法设计
卷积神经网络中的自适应加权池化
设施蔬菜病害识别中的CNN池化选择
基于3D-Winograd的快速卷积算法设计及FPGA实现
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
2015—2017 年宁夏各天气预报参考产品质量检验分析
从滤波器理解卷积
基于卷积神经网络和池化算法的表情识别研究
高速公路车牌识别标识站准确率验证法