APP下载

基于ResNet50网络的十种鱼类图像分类识别研究

2019-02-12王文成蒋慧乔倩祝捍皓郑红

农村经济与科技 2019年19期
关键词:深度学习

王文成 蒋慧 乔倩 祝捍皓 郑红

[摘要]鱼类识别在渔业资源研究、鱼类知识科普、水产养殖加工、鱼类稀有物种保护等领域有着广泛的应用前景。为了准确对采集的图像进行分类识别,提出一种基于Keras深度学习框架的鱼类图像识别算法,以ResNet50为基础网络框架,使用混淆矩阵优化分类器对图像的自动分类模型。利用该模型对10种鱼类进行分类识别,结果显示正确识别率达到了93.33%。

[关键词]深度学习;ResNet50网络;混淆矩阵;Keras框架;鱼类图像识别

[中图分类号]TP391.41 [文献标识码]A

21世纪计算机技术迅速发展,人工智能渗透到各个领域。 机器视觉是人工智能领域的一个重要分支,它主要用于模仿人类视觉功能的机器,通过对目标图像进行特征提取并加以分析理解,最终实现目标的分类识别。目前机器视觉技术已经被用到多字体汉字识别、中药饮片图像识别、车标识别算法研究等领域。鱼类识别在渔业资源研究、鱼类知识科普、水产养殖加工、鱼类稀有物种保护、等领域有着广泛的应用前景。近年来,国内外学者针对基于机器视觉技术在鱼类分类识别上的应用进行了诸多的研究,分类识别的方法涉及到基于特征值、相关系数法、分级分类法、支持向量机、神经网络等方法。

C.Spampinato等通过利用灰度直方图的统计矩提取的纹理特征平均正确识别率约为92%。杜伟东等利用基于支持向量机结合声散射数据决策层融合方法,对鱼类进行图像分类识别,准确率在 90%以上。张俊龙等提出基于一种深度学习的海底观测视频中鱼类识别方法,首先利用背景差分法过滤掉不包含鱼类的图片,对海洋鱼类识别准确率的幅度提升了23%。

从已报道的研究结果中可以了解到,在各项分类方法中,特征值识别算法简单、易于操作,但是识别率不高;相关系数识别,算法简洁,识别准确率也较高,但应用范围窄;分级分类算法运算量太大;支持向量机算法灵活多变,识别率很高,但是存在对大规模训练样本难以实施、而且需要手动选择特征值问题;相比较来说卷积神经网络(Convolutional Neural Network, CNN)具备自主学习能力,鲁棒性比较好。但CNN需要获取大量的训练数据,随着神经网络层数的增加,计算复杂度提高,训练模型的周期增长。随着网络的深入,训练集准确度出现降低现象,影响识别效果和准确性。

基于上述分析,本文提出一种基于Keras深度学习框架的鱼类图像识别算法,使用混淆矩阵(Confusion matrix)清晰的输出识别数量,softmax概率分类器输出识别的准确率,对巴鲣鱼、大菱鲆、颌针鱼、黑鲷鱼、黄鳍鲷、金钱鱼、鲈鱼、绿鳍鱼、银鲳鱼、鲻鱼10种鱼进行分类 和识别进行探索研究。

1技术路线

Y.Lecun等人提出最初将深度学习应用在目标识别中。在CNN的深度结构中,每个模块包含卷积层和池化层,这些模块是逐个堆叠。卷积层共享权重,池化层通过对卷积层的输出进行采样来降低下一层的数据速率。因此,图像可以用作直接输入,繁琐的特征提取过程得以消除。

1.1 ResNet结构图

在CNN的深度结构中,随着网络层的深入,会出现梯度耗散和梯度爆炸问题,导致训练集准确率下降。这一问题可以通过残差网络解决,使得网络的性能在深度增加的同时也得以提升。图1为残差块结构图,其中ResNet包含了两种映射:一种是身份映射,是指图1中的曲线,另一种是残差映射,指的是除了“曲线”之外的部分,所以最终输出为,身份映射,顾名思义,是指自身,它是x的公式,残差映射是指“差”,即x,y所以残差指的是F(x)。

1.2 ResNet50网络模型

ResNet50中包含了49个卷积层和1个全连阶层,其中,第二至第五阶段中的ID BLOCK x2代表的是两个不改变尺寸的残差块,CONV BLOCK代表的是添加尺度的残差块,每个残差块包含三个卷积层,因此有1 + 3×(3+4+6+3) = 49个卷积层,结构如图2所示。

图2中的CONV是卷积操作的卷积层,Batch Norm是批量正则化处理,Relu是激活函数,MAX POOL表示最大池化操作,AVG POOL表示全局平均池化层操作,stage1到stage5表示殘差块。输入数据的大小为256 × 256 × 3,由于ResNet50神经网络输入数据大小为224 × 224 × 3,所以需要在输入数据前面进行图像预处理,把大小不规格数据的裁剪成指定的大小的数据,进行归一化处理,针对整个训练集图片,每个通道平均减去训练集的通道平均值。经过残差块的连续卷积运算后,图像像素矩阵的通道数量越来越深,然后通过Flatten图层将图像像素Matrix的大小更改为batch_size×2048。最后,图像像素矩阵大小输入到完整连接层FC[14],相应的类别概率由softmax分类器输出。

1.3    softmax分类器和混淆矩阵

分类问题中使用的softmax函数可以用下面的式(1)表示。

exp(x)是以自然常数e为底的指数函数。假如等式(1)在输出层中有m个神经元,并且第t个神经元的输出是,如等式(1)所示,softmax函数的分子是输入变量的指数函数,分母是所有输入变量的指数函数的和。然而,在计算机上运行上述方程存在一定的缺陷,这就是溢出问题。softmax函数的实现是执行指数函数,但此时指数函数的值很容易变得很大。所以softmax函数的实现可以像(2)这样进行改进,这里的C可以使用任何值,但为了防止溢出,通常使用输入变量的最大值。

混淆矩阵是除了ROC(Receiver Operating Characteristic)曲线和AUC(Area Under Curve)之外的另一个判断分类好坏程度的方法。

以下有几个概念需要先说明:

TP(True Positive): 真实为0,预测也为0

FN(False Negative): 真实为0,预测为1

FP(False Positive): 真实为1,预测为0

TN(True Negative): 真实为1,预测也为1

precision=:预测为0的准确率;

sensitivity=recall=:真实为0的准确率;

f1score = 2* precision* recall / precision + recall

2    实验

2.1    实验平台

实验平台是Keras,一个基于Python语言的深度学习框架。硬件环境为Inter(R) Xeon(R) Silver 4116 CPU @ 2.10GHz,使用Windows Server 2012 R2 Datacenter服务器,基础配置为Anaconda,Python3.7版本,Python终端进行了OpenCV、Keras环境的搭建。

2.2    选用的数据集

本文采用的数据集是自己手动在网络上收集的图片和部分自己拍摄所得,有10种鱼类,共有图片908张,10种鱼类图片如图3所示。分别为巴鲣鱼、大菱鲆、颌针鱼、黑鲷鱼、黄鳍鲷、金钱鱼、鲈鱼、绿鳍鱼、银鲳鱼、鲻鱼,按训练集807

验证集101分层采样,并且采取相同的预处理操作,以保证验证和测试结果的准确性最后将数据分成大小为相同的的批次,方便后续模型的训练。

2.3实验结果分析

在多分类任务中,不适合使用PR曲线和ROC曲线来进行指标评价,但我们仍可以通过混淆矩阵来进行处理。可以通过matplotlib的matshow()函数,分类结果的好坏能直接显示出来,图4展示了混淆矩阵的结果。

通过图4我们可以直观的看出各种鱼的数量,分别为颌针鱼62、鲻鱼135、金钱鱼90、大菱鲆113、银鲳鱼84、黑鲷鱼105、鲈鱼101、黄鳍鲷93、绿鳍鱼75、巴鲣鱼32,通过以上数据绘制统计表1。

表1显示了误差数据的图像结果,将混淆矩阵的每个值除以相应类别中的图像总数。计算出10种鱼的f1score分比为颌针鱼1.00、鲻鱼0.985、金钱鱼1.00、大菱鲆1.00、银鲳鱼1.00、黑鲷鱼1.00、鲈鱼0.99、黄鳍鲷0.877、绿鳍鱼0.987、巴鲣鱼1.00,通过f1score可以看出分类指标很好。

神经网络中超参数的取值对模型的性能有很大的影响.实验中设定学习率为固定的值0.0001,批次大小为4,训练集数据807,验证集数据101,梯度参数更新方法采用SGD+momentum,迭代次数6000次,ResNet50模型经过30epoch训练,在训练集上的准确率在99%以上,在验证集上正确率为93.33%,模型训练到20epoch时,训练集上的误差几乎降至为零,验证集上的误差也降到了0.2以下,验证集上的平均误差为0.28,说明该模型收敛速度较快,识别精度高,验证集上的准确率较高,误差比较低。并且模型在验证集上的误差比训练机上的误差低,说明很好的抑制了过拟合,对图像识别效果较好,ResNet50模型在训练集和验证集上的准确率、误差如图5所示。

3 结语

本文从深度学习的角度出发,利用卷积神经网络在计算机视觉中的优势,提出了一种基于Keras深度学习框架的鱼类图像识别算法,以及使用混淆矩阵实现分类识别精确度。ResNet50卷积神经网络包含卷积层、批规范层、池化层、全连接层以及softmax层,采用SGD+momentum优化算法对模型参数進行更新。该模型能够抑制过拟合,收敛速度较快,训练时间较短,残余网络解决了深度网络训练艰难的问题,提高了性能。模型平均准确率为93.33%,模型具有较高的识别精度和鲁棒性。该模型不仅可以应用在鱼类图像分类识别中,也可以用于其他动物的图像分类识别,比如鸟类。

虽然ResNet50模型达到预期的分类识别效果,但是,由于本文采用的数据集是自己手动在网络上收集的图片和部分自己拍摄所得,背景干扰强度不是很大,而且数据集数量不是很多,以后需要增加更多的图片数量进行训练、验证,在强背景干扰情况下做出更高的识别精度。

[参考文献]

[1] Chai W J,Wang L M.Recognition of Chinese characters using deep convolutional neural network[J].Journal of Image and Graphics,2018,23(3):0410-0417.

[2] 孙鑫,钱会南.基于深度卷积网络的中药饮片图像识别[J].世界科学技术-中医药现代化,2017,19(2):218-222.

[3] 陈小娥, 杨薇薇.基于深度学习的车标识别算法的研究与实现[J].长春工程学院学报(自然科学版),2017,18(2):117-120.

[4] 基于机器视觉的大黄鱼形态参数快速检测方法[J].集成技术, 2014(5):45-51.

[5] 涂兵, 王锦萍, 王思成,等.基于背部轮廓相关系数算法的淡水鱼种类识别研究[J].计算机工程与应用,2016,52(16):162-166.

[6] Hu J,Li D,Duan Q,et al. Fish species classification by color, texture and multi-class support vector machine using computer vision[J]. Computers and Electronics in Agriculture,2012,88(none):133-140.

[7] 李彦冬, 郝宗波, 雷航. 卷积神经网络研究综述[J]. 计算机应用, 2016, 36(9):2508-2515.

[8] 杜伟东,李海森,魏玉阔,等.基于SVM的决策融合鱼类识别方法[J]. 哈尔滨工程大学学报,2015(5):623-627.

[9] 张俊龙,曾国荪,覃如. 基于深度学习的海底观测视频中鱼类的识别方法[J]. 计算机应用,2019,39(2):72-77.

[10] Lécun Y, Bottou L,Bengio Y,et al. Gradient-based learning applied to document recognition[J].Proceedings of the IEEE,1998, 86(11):2278-2324.

[11] 王恒,李霞,刘晓芳,等.基于ResNet50网络的乳腺癌病理图像分类研究[J].中国计量大学学报,2019,30(1):72-77.

[12] 林明旺. 深度学习在鱼类图像识别与分类中的应用[J]. 数字技术与应用, 2017(4):96-97.

猜你喜欢

深度学习
从合坐走向合学:浅议新学习模式的构建
面向大数据远程开放实验平台构建研究
基于自动智能分类器的图书馆乱架图书检测
搭建深度学习的三级阶梯
有体验的学习才是有意义的学习
电子商务中基于深度学习的虚假交易识别研究
利用网络技术促进学生深度学习的几大策略
MOOC与翻转课堂融合的深度学习场域建构
大数据技术在反恐怖主义中的应用展望
深度学习算法应用于岩石图像处理的可行性研究