计算机系统应用  2020, Vol. 29 Issue (7): 222-227   PDF    
基于VGG-16卷积神经网络的海水养殖病害诊断
李海涛1, 王腾1, 王印庚2     
1. 青岛科技大学信息科学与技术学院, 青岛 266061;
2. 中国水产科学研究院 黄海水产研究所, 青岛 266071
摘要:海水养殖生物在养殖过程中会受到各种病害的影响, 病斑特征的差异性非常适合利用图像识别技术做诊断. 基于以上需求, 本文设计了一种基于VGG-16卷积神经网络的海水养殖病害诊断模型, 并采用随机梯度下降算法、防止过拟合技术来改进模型. 实验结果显示, 本研究模型相比其他传统网络模型效果更好, 具有很高的识别精度、鲁棒性和泛化能力, 可以准确快速地进行病害诊断, 具有一定的扩展性和推广价值.
关键词: 海水养殖    病害诊断    卷积神经网络    VGG-16    
Diagnosis of Marine Aquaculture Diseases Based on VGG-16 Convolutional Neural Network
LI Hai-Tao1, WANG Teng1, WANG Yin-Geng2     
1. College of Information Science and Technology, Qingdao University of Science and Technology, Qingdao 266061, China;
2. Yellow Sea Fisheries Research Institute, Chinese Academy of Fishery Sciences, Qingdao 266071, China
Foundation item: Ministry of Agriculture Pilot Project of Aquaculture Digital Agriculture Construction (2017-A2131-130209-K0104-004)
Abstract: Marine aquaculture is affected by a variety of diseases, and the differences in lesion characteristics are very suitable for image recognition. Based on the above requirements, this study designs a marine breeding disease diagnosis model based on VGG-16 convolutional neural network, and uses a stochastic gradient descent algorithm and overfitting prevention technology to improve the model. The experimental results show that this model is better than other traditional network models, and has high recognition accuracy, generalization ability, and robustness. It can accurately and quickly diagnose diseases with certain expansion and promotion value.
Key words: marine aquaculture     disease diagnosis     Convolutional Neural Network (CNN)     VGG-16    

我国海水养殖业规模庞大, 普遍是粗放型的养殖模式, 养殖户仅凭个人经验和盲目投药, 给海水养殖业带来巨大的养殖风险, 使养殖区病害泛滥恶化, 过量投药还会造成药物残留, 带来生态风险. 2019年我国水产行业因病害造成的损失达到450亿元, 病害问题已成为影响我国海水养殖业发展的重大障碍.

早期的海水养殖病害诊断多是根据病症描述得出结论, 叶婵[1]实现了对虾病害防治专家系统, 该系统利用BP神经网络建立了对虾症状文字描述与疾病之间的关系, 但在实际应用中会存在语义理解上的误差, 难以推广. 而海水养殖生物病害受到生物本体免疫力、养殖区水质、致病病原体等多方面影响, 会在病灶形态、轮廓、颜色、位置、纹理等方面产生明显的视觉差异, 病害图像中包含了大量病症信息, 因此非常适合借助图像识别技术进行病害诊断. 宋健[2]基于形状特征实现了鱼病图像诊断, 该方法在分类时具有处理速度快、鲁棒性高、易于实现等优点, 但对于病害图像中所表现出来的全部特征, 这种方法所获取的信息并不多. 随着机器学习的发展, 学者们逐渐开始采用神经网络去获取图像中高纬度的病症特征, Shaveta Malik[3]应用神经网络算法对鱼类病害图片分类, 有效提升了鱼病诊断的效率. 近年, 由牛津大学提出的VGG卷积神经网络模型在图像分类和目标检测任务中表现出优良性能, 本文基于传统的VGG-16网络建立起海水养殖病害诊断模型, 并优化了梯度下降算法, 解决了模型过拟合问题. 该模型可根据病害图像快速准确地诊断出对应病症, 为养殖户提供及时、准确的病害信息, 致力于减少病害造成的损失.

1 研究方法 1.1 VGG-16卷积神经网络

VGG[4]网络是牛津大学计算机视觉组和Google DeepMind公司共同研发出的一种深度卷积网络, 该模型被提出时, 因为它的高效和简洁, 很快成为当时最通用的卷积神经网络模型. 它在图像分类任务中表现出非常好的效果, 而其变形结构VGG-16的表现更加突出, 故而本文采用VGG-16卷积神经网络模型.

VGG-16作为卷积神经网络中分类性能优良的网络模型, 它把卷积层发展为卷积块的概念, 使网络模型拥有更广阔的感受野, 还能降低网络参数; VGG-16通过多次使用ReLU激活函数, 可实现更多的线性变换, 学习能力也更强. VGG-16网络模型含有13个卷积层、5个最大池化层、3个全连接层和1个输出层(Softmax), 其网络模型结构如图1所示.

图 1 VGG-16网络结构

VGG-16网络将3×3卷积核和2×2最大池化层排列组合, 可提取出输入图像中大量细节特征. 3×3卷积核的堆叠组合可以实现和5×5或7×7卷积核相同的效果, 相比单个大尺寸卷积核, 小尺寸卷积核的组合运用可具备更好的非线性特征.

1.2 网络模型优化方法

使用卷积神经网络进行图像分类任务时, 识别精度、仿真速度以及内存消耗是研究的目标, 为进一步提升模型识别准确率、缩减训练时间与资源占用, 因此需要在已有VGG-16网络基础上进行优化.

网络模型优化方法有很多, 可以调整网络深度、修改卷积核尺寸、更改激活函数、优化梯度下降、平衡数据集、降低过拟合、优化迁移学习等等, 其中梯度下降优化算法在卷积神经网络中较为常用. 本文采用了随机梯度下降[5]的优化算法, 它的特点是每当更新权重时还会更新每个样本的梯度, 学习速度快; 相对于其他梯度下降算法, 尤其是在数据冗余的时候, 该算法能更加有效地利用数据信息. 随机梯度下降算法每当更新参数时仅使用一个样本x(i)及其所对应的标签y(i), 梯度运算公式如式(1):

$\theta = \theta - {\rm{\alpha}} \cdot \nabla _{\theta} J\left( {\theta ;{x^{(i)}};{y^{(i)}}} \right)$ (1)

网络模型训练完成后, 需要评估其识别性能和损失值. 本模型中的损失值通过运用对数损失函数计算, 其运算公式如式(2):

$J(\theta ) = - \dfrac{1}{n}\sum\limits_{i = 1}^n {[{y^{(i)}}\log {f_\theta }({x^{(i)}}) + (1 - {y^{(i)}})\log (1 - {f_\theta }({x^{(i)}}))]} $ (2)
1.3 防止过拟合技术

模型在训练集上识别率较高, 而在验证集准确率较低, 即模型的泛化性能不强, 这就是过拟合现象, 卷积神经网络中过拟合现象是一个重要问题. 本文综合运用了多个降低过拟合的方法优化VGG-16模型, 主要包括了Dropout方法、数据集扩增方法、Batch Normalization方法、迁移学习方法.

Dropout方法[6]通过随机地丢弃训练所得的信息, 从而减少模型过拟合. 该方法应用于激活层之后, 每次反向传播时按一定比例对激活层的隐藏节点随机采样, 使得全连接网络具有一定的稀疏化, 从而减轻了不同特征的协同效应; 由于隐含节点都是以一定概率随机出现, 因此两个神经元不会每次都同时出现, 从而减少了神经元之间的共适应关系, 可提高网络的鲁棒性.

卷积神经网络对于不同位置、视角、尺度甚至光照的组合都可以进行稳健的分类, 于是可以利用基本变换对数据集进行有效扩充. 数据集扩增即通过裁剪、旋转、插值、错切等图像变换手段处理原始图片样本集, 不仅获得了更多的训练样本图片, 还通过增加训练时的扰动使模型在更加复杂的环境下也能保持很好的检测精度, 有效解决了深度学习因数据不足造成的模型表达能力差、过度拟合等问题.

随着网络结构深度的增加, 输入数据经过多个中间层运算之后, 数据分布的偏移将越来越大, 样本特征也变得分散, 这会导致神经网络学习速度缓慢甚至难以学习. 为解决上述问题引入的Batch Normalization方法[7]就是在每层输入之前插入一个归一化层, 采用均值标准化的方法规范化VGG-16网络激活函数的输入值, 使输入样本值的均值为0, 方差为1, 即将偏移的分布规范化为标准分布. Batch Normalization方法使得激活输入值落在非线性函数对输入比较敏感的区域, 这样输入的小变化就会使损失函数发生较大的变化, 能大大加快损失函数收敛速度, 提高模型训练精度.

迁移学习[8]是将已经训练好的模型应用到新的任务中, 不仅节省了训练时间, 还缩小了训练数据需求量. 同时由于本次研究所用图像数量少、采集成本高, 数据量难以支撑网络训练, 采用迁移学习方法可以解决图像数据量不足的问题. 利用VGG-16在ImageNet数据集上的预训练模型进行相关知识的迁移, 优化各卷积层和池化层的参数, 在降低过拟合问题的同时还减少了模型训练时间.

2 海水养殖病害诊断模型研究 2.1 训练数据分析

对虾是我国海水养殖业的重要养殖生物, 本文根据对虾病害分类纲要, 选出白斑病、红腿病、红体病、黄鳃病、肠炎、黑斑病6种最常见病害作为研究对象, 另外采集一部分无病害的图样做对照, 构建对虾病害图库, 如表1所示.

表 1 对虾病害图库

本次研究使用的病害数据来源于多个方面: 中国水产科学研究院黄海水产研究所深耕水产养殖病害研究数十年, 收录了数百种水产病害图像, 是本次研究的重要数据来源; 智慧水产云服务平台、水产养殖网等多家权威网站也为本次研究补充了大量图样数据. 为了保障图片库质量, 本文使用的图库均由经验丰富的行业专家整理完成, 各病种示例图片如图2. 各病种的病斑特征如表2所示.

图 2 对虾病害图例

表 2 对虾常见6类病害特征

2.2 模型训练流程与结果分析

本文模型训练和测试均在Tensorflow环境下进行, 模型搭建采用开源框架实现, 硬件设备: 处理器为AMD 2600X, GPU为NVIDIA GTX1080TI. 模型训练和测试流程如下:

1)数据预处理. 通过平移、缩放、旋转、错切等图形变换手段在原始病害图像库上产生更多样的训练样本图片, 一方面可增加训练数据量, 另一方面能够提升模型的泛化能力. 其次, 还需要调整图片的大小, 便于统一注入网络进行训练.

2)输入水产病害图样. 从1)生成的病害图像库中抽取病害图片, 作为训练样本集进行输入.

3)将VGG-16卷积神经网络应用于海水养殖病害诊断, 构建如图3所示的海水养殖病害诊断模型: 输入224像素×224像素×3向量的RGB图像, 首先经过两个卷积层, 两个卷积层的卷积核大小为3×3, 卷积核数量均为64, 滑动步长为1, 经两次卷积+ReLU运算后的尺寸变为224×224×64; 再经过一层最大池化层, 它采用的池化单元尺寸为2×2, 步长为2, 该池化层使尺寸减半, 变为112×112×64; 接着经过两个卷积层, 经128个3×3的卷积核作两次卷积+ReLU运算, 尺寸变为112×112×128; 再经过一层最大池化层, 池化单元尺寸大小为2×2, 步长为2, 输出为56×56×128; 随后经过3个卷积层, 卷积核大小均为3×3, 卷积核数量均为256, 步长为1, 输出均为56×56×256; 再经过最大池化层, 池化单元尺寸大小为2×2, 步长为2, 输出为28×28×256; 接着经过3个卷积层, 卷积核大小均为3×3, 卷积核数量均为512, 步长为1, 输出均为28×28×512; 再经过一层最大池化层, 池化单元尺寸大小为2×2, 步长为2, 输出为14×14×512; 后面经过3个卷积层, 卷积核大小为3×3, 卷积核数量均为512, 步长为1, 输出均为14×14×512; 再经过一层最大池化层, 池化单元尺寸大小为2×2, 步长为2, 输出为7×7×512; 随后经过两个包含4096个隐藏节点的全连接层及ReLU, 最后一层输出层包含7个节点, 对应本次诊断的7种病害诊断结果, 进行Softmax分类.

图 3 海水养殖病害诊断模型

本文提出的病害诊断模型在卷积层均采用3×3尺寸的卷积核, 并由2个或3个卷积核连续排列, 可以获得更大的感受野效果; 卷积核滑动步长为1, 并利用padding边界填充使卷积层前后图像维数不变; 模型中的池化层选用2×2尺寸的池化窗口, 步长为2, 用于降低卷积后的特征图尺寸, 实现少量参数对特征的表示; 全连接层是连续3个全连接的堆叠组合, 通道数分别是4096、4096、7个; 网络末尾是由具有7个标签的Softmax分类器作为输出; 在已有网络基础上采用随机梯度下降算法更新模型参数; 模型在激活函数之前应用批归一化方法, 在全连接层执行Dropout方法, 系数分别为0.7、0.5, 通过Xavier方法对全连接层的参数进行初始化, 并以测试集识别性能作为网络模型的评判依据.

4)模型训练. 加载ImageNet上的VGG-16预训练模型, 通过迁移学习方式优化病害识别模型参数, 主要优化13个卷积层和池化层的参数. 设定动量参数、学习速率和迭代次数, 通过损失函数的迭代, 优化网络各层参数. 本次研究中, 每执行10次迭代训练, 都要在测试集上测试模型准确率, 从Tensorboard中绘制测试集准确率和损失量曲线如图4所示.

5)模型测试. 选择测试数据集进行模型测试, 以检验模型的性能和精确度.

图4(a)展示了网络模型在验证集上的识别准确率变化曲线, 横轴表示迭代训练次数, 纵轴为准确率, 图4(b)为损失量变化曲线, 横轴为迭代次数, 纵轴为损失量. 综合图4(a)图4(b)可知, 当迭代频次较低时, 网络对训练数据的学习不充分, 在验证集的识别准确率也不理想, 随着训练的迭代进行, 图像在验证集的识别准确率持续上升, 且最终稳定在较高水平. 可见, 本文构建的网络模型, 在保持了识别精度的同时具有较强的收敛性能. 本研究所用模型在扩增过的训练集上训练500轮之后, 在验证集上的识别精度达到了90%, 取得了优良的识别性能.

为比较本文研究与其他模型的性能差异, 本次研究将BP神经网络、支持向量机2种浅层网络, 以及AlexNET、GoogLeNET、传统VGG-16NET等3种深层神经网络作为对照模型, 与本研究模型进行对照分析, 结果如表3所示.

图 4 模型训练过程图

表 3 海水养殖病害识别模型测试结果

表3对比可知, AlexNET、GoogLeNET、传统VGG-16NET与本文研究模型共4种深层神经网络模型均大幅优于BP神经网络、支持向量机2种浅层网络. 在深层神经网络中, 由于传统VGG-16NET模型和本研究模型的特征提取是通过3×3尺寸卷积核的堆叠组合, 提取出病害区域内更多非常细小的特征, 因此, 传统VGG-16NET模型和本研究模型优于AlexNET和GoogleNET; 同时, 本研究模型综合采用了随机梯度下降算法和一系列降低过拟合的方法, 在测试集中略优于传统VGG-16NET模型. 由上述对比试验中可知, 本文提出的模型具备更优良的识别能力, 能更好地辨识病害类别.

3 结论

本文构建了一个基于VGG-16的海水养殖病害诊断模型, 使用随机梯度下降算法更新网络权重, 并用数据集扩增、Dropout方法、Batch Normalization方法、迁移学习方法优化了模型, 有效提升了训练效率和模型识别率, 降低了过拟合. 实验结果显示此模型具有很高的识别精度, 具有一定的扩展性和推广价值, 达到了预期目标.

参考文献
[1]
叶婵, 邓长辉, 曹向南, 等. 基于BP神经网络的对虾病害防治专家系统. 大连海洋大学学报, 2015, 30(3): 319-323.
[2]
宋健, 孙学岩. 基于形状特征的鱼病诊断图像检索系统. Proceedings of 2010 International Conference on Circuit and Signal Processing & 2010 Second IITA International Joint Conference on Artificial Intelligence(Volume 2). Shanghai, China. 2010. 265–268.
[3]
Malik S, Kumar T, Sahoo AK. Image processing techniques for identification of fish disease. Proceedings of the 2017 IEEE 2nd International Conference on Signal and Image Processing. Singapore. 2017. 55–59.
[4]
Simonyan K, Zisserman A. Very deep convolutional networks for large-scale image recognition. arXiv: 1409.1556, 2014.
[5]
Bottou L. Large-scale machine learning with stochastic gradient descent. Proceeding of the 19th International Conference on Computational Statistics. Paris, France. 2010. 177−186.
[6]
Srivastava N, Hinton G, Krizhevsky A, et al. Dropout: A simple way to prevent neural networks from overfitting. Journal of Machine Learning Research, 2014, 15(1): 1929-1958.
[7]
Ioffe S, Szegedy C. Batch normalization: Accelerating deep network training by reducing internal covariate shift. arXiv: 1502.03167, 2015.
[8]
Pan SJ, Yang Q. A survey on transfer learning. IEEE Transactions on Knowledge and Data Engineering, 2010, 22(10): 1345-1359. DOI:10.1109/TKDE.2009.191