时间:2024-05-28
贾宇霞,樊帅昌,易晓梅
(1 浙江农林大学信息工程学院,浙江 杭州 311300;2 浙江省林业智能监测与信息技术研究重点实验室,浙江 杭州 311300;3 林业感知技术与智能装备国家林业和草原局重点实验室,浙江 杭州 311300)
现代渔业发展关系到很多新设施、新技术、新机制的应用开发,渔业监测是其中非常重要的部分。为保证鱼类健康生长,从鱼苗育种期间就需要对鱼种进行快速识别和特征信息采集。这些数据同时反映了水下环境参数的变化,能够更好地辅助鱼类养殖、捕捞和鱼道建设等,因此有必要对鱼类进行实时检测识别。随着计算机技术的发展,目前已经建立了许多有效的鱼类识别方法。张志强等[1]提取鱼类图像中的各个颜色分量及长短轴之比作为分类特征,然后运用该特征值建立有关淡水鱼的品种识别模型。Alsmadi等[2]利用Memetic算法优化BP神经网络并进行鱼类识别,该方法能够实现鱼类有毒和无毒的区分。吴一全等[3]采用Krawtchouk矩、灰度共生矩阵获得鱼类的形状和纹理特征组合后,通过蜂群优化多核最小二乘支持向量机,实现高精度鱼类识别。然而这些方法需要鱼体离水后在相对结构化的单一背景下手动提取尺寸、形状、颜色和纹理等特征参数,不仅耗时耗力,而且对鱼类的生长和存活都造成了难以逆转的影响[4]。
近年来,深度学习在物种识别上取得了积极进展,其能够实现自动化的图像特征提取并直接给出预测结果,使得操作过程更加简单,泛化性能更加强大,因而逐渐在农业领域得到应用。相关研究也开始渗透到鱼类识别领域,如:提出一个通过稀疏低秩矩阵分解提取前景,然后利用深度结构结合线性SVM进行鱼类识别的框架[5];使用包含形态学操作、金字塔平移等操作消除背景噪声后,采用卷积神经网络实现鱼类数据集的分类;在训练步骤之前应用图像处理有助于去除图像中的水下障碍物、污垢和非鱼体[6]。以上方法虽然取得了良好的分类效果,然而通过去除背景噪声的方法来定位目标区域,可能对分类产生负面影响,在对图像分割预处理期间可能无意剔除有效轮廓,移除有用的对象背景信息。所以,在突出前景目标的基础上保留原始图像中的部分背景可能是有利的[7]。
为此,通过研究已有的深度神经网络,在降低对数据手动标注的需求下,提出图像显著性增强算法对复杂背景下的鱼类主体进行自动增强,并针对深度学习训练参数多、训练时间长等问题,结合迁移学习方法建立一种简单高效的鱼类分类模型。
1.1.1 Fish4Knowledge数据集
Fish4Knowledge数据集[8]是从水下实况视频中截取的鱼类画面,部分鱼类样本图像如图1所示。该数据集包含 23 种鱼类27 370 张图像,不同种类的图像数量差异巨大,其中,单个顶级物种约占图像的44%,排名前15的物种对应于97%的图像。按照文献[5]中的设置,将该数据集以5∶1∶1的比例划分为训练集、验证集和测试集。考虑到训练集中数据不均衡现象易对模型训练结果造成偏差[9],所以,对于训练集中数量小于300的种类,采取水平翻转、垂直翻转、90°旋转、180°旋转、270°旋转等5种数据增强方法来扩充数据集,最后统一将图像缩放到224×224像素用于后续试验。
图1 Fish4Knowledge鱼类示例图片Fig.1 Fish samples of Fish4Knowledge
1.1.2 Fish30Image数据集
Fish30Image数据集是通过网络爬取和自主拍摄相结合的方式构建的鱼类图像数据集。经人工筛选剔除其中无关、重复及非RGB格式的图像数据后,该数据集最终获得30类共4 737张鱼类有效图片,部分鱼类样本图像如图2所示。其中最多的一类包含469张图像,最少的一类只有45张图像。为了避免深度学习因数据量太少而出现过拟合现象,Fish30Image数据集采用数据增强的方法,主要通过亮度调节、镜像、随机裁剪、随机旋转变换、叠加噪声等操作实现10倍的数据扩充。由于图像数量较少,所以试验中只设置训练集和测试集,训练集和测试集分别占据数据集的4/5和1/5。
图2 Fish30Image示例图片Fig.2 Fish samples of Fish30Image
1.2.1 显著性检测
图像分类中目标区域的定位对提升精确度有一定帮助,所以对目标进行显著性检测引起了众多国内外学者的兴趣。研究人员根据人的视觉注意机制将显著性检测算法分为两种:基于数据驱动的自底向上方法和基于任务驱动的自顶向下方法。其中,前者主要利用颜色、形状、深度等底层线索直接进行显著性模型构建,因其形成过程快速,且不需要训练过程和特定的先验知识而得到广泛应用,常见方法有LC[10]、HFT[11]、RC[12]等。LC算法运算速度快,但该方法忽略了除颜色外的其他信息,会将噪声误判为显著性区域;HFT算法利用高斯滤波器进行平滑操作来抑制背景区域,存在无法处理全分辨率图像,且检测到的显著性信息有缺失的问题;RC算法能够在全分辨率图像上进行检测,但因过分强调局部特征,所以不会完整地高亮突显整个物体。
与上述方法相比较,全频域显著性检测方法FT(Frequency-tuned)算法[13]在 LAB 空间中利用颜色和亮度特征来估计中央周边差对比度[14],并采用多个带通滤波器组合的方法滤除高频噪声信息得到图像显著值。其能够突出区域中最大的显著物体,得到显著目标的整体轮廓,同时生成的显著图分辨率与原图相同且计算速度较快,因而能够更加高效精确地检测鱼类目标。FT算法显著值计算公式可表示为:
SPT(x,y)=‖Iu-IG(x,y)‖
(1)
式中:Iu为图像在LAB 空间的像素算术平均值;IG为高斯滤波后的像素特征值。式(1)计算图像中所有像素特征值与平均值之间的欧氏距离。
1.2.2 显著性增强
原始图像经FT算法获取的显著图提供了鱼类目标的潜在区域,在此基础上对显著图进行自适应阈值计算得到二值显著图,并将其作为GrabCut 算法的初始区域对鱼类目标进行全自动图像分割,最后将分割图与原始图像进行线性融合,得到鱼类区域和背景区域对比度更加鲜明的图像。其中GrabCut是一种交互式图像分割算法,用户框选目标区域后,默认将框外像素全部当成背景对高斯混合模型进行目标对象和背景建模。进而通过反复迭代来更新模型参数,调整候选区域中每一像素的目标、背景归属,从而实现前背景的精准分割。
GrabCut算法发展了经典交互式图割方法。首先,利用三通道的高斯混合模型代替单通道模型来描述目标对象和背景像素的分布,充分运用图像的颜色信息和反差信息;其次,使用迭代方法实现能量函数最小化,使得图像分割更精确;最后,非完全标记功能简化交互过程。以显著性图作为GrabCut的输入,既能避免画框的人力资源消耗,又能改善鱼类区域的分割效果。图3展示了显著性增强的主要步骤。
图3 显著性增强主要步骤Fig.3 Main steps of significant enhancement
1.2.1 残差模型
在深度学习图像识别分类中,相较于浅层神经网络,深层网络由于其高维的非线性操作,可有效提取更多的特征。但随着网络结构的加深,模型在训练过程中容易出现梯度消失或梯度爆炸现象,导致网络难以收敛。然而,残差网络(ResNet)中残差模块的引入,可有效解决上述问题。残差模块如图4所示,如果设第1个残差单元的输入为xl,输出为xl+1,则残差单元的结构可以表示为:
xl+1=xl+F(xl)
(2)
式中:F(xl)为残差处理模块,是一个由卷积层、批量标准化(BN)和线性整流函数(ReLU)组成的模块。图中捷径的设置,一方面使得训练时底层残差得以向上反馈;另一方面,两条路径的融合可以得到更有效的特征。
为了进一步提高残差网络性能,He等[15]提出一个预激活的残差块(图5)。该残差块在传统残差结构的基础上将BN和ReLU操作挪到了卷积操作之前,同时去掉主干单元和跳跃连接相加后需要经过的激活函数,因而加强了对模型的正则化,使得网络更易于优化。
ResNet是一个由很多残差块堆叠的模块化架构,这种堆叠多层的方式可有效地从输入数据中提取特征,因此,可以在许多分类应用中实现高精度。本研究采用残差块的预激活形式堆叠网络,并且选择ResNet_50[16]作为网络模型。
图4 传统残差结构Fig.4 Traditional residual structure
图5 预激活残差结构Fig.5 Pre-activated residual structure
1.2.2 基于Adam的残差迁移学习
迁移学习是指运用已有的源领域知识对相关的目标领域问题进行求解的一种方法[17]。AlexNet[18]、VggNet[19]、ResNet等深度神经网络已在大型公开图像数据集 ImageNet 上进行了充分训练,学习到了图像分类识别所需的大量特征[20]。由于大部分知识存在相关性,所以通过迁移学习方法将ResNet_50预训练模型运用到鱼类识别中,在网络训练中初始化权重参数,进而优化模型的学习效率并减少过拟合的可能。试验中模型训练得越久,离最优值越近,因此在训练过程中随着迭代的继续应逐步降低学习率。本研究运用指数衰减法对学习率进行更新。指数衰减法的学习率更新式为:
(3)
式中:lr为衰减过后的学习率;lr0为初始学习率;dr为衰减率;gs为当前的迭代轮数;ds为衰减步长。
在训练过程中采用多类别交叉熵计算分类损失。为提高调参效率,使模型在训练集上的训练能力达到最大,采用自适应矩阵估计算法(Adam)实现模型优化,权重和偏置更新。Adam[21]集合了RMSProp[22]和AdaGrad[23]算法最优的性能,是一种自适应学习率的梯度更新法,可有效减少出现局部最优解的情况,而且内存需求低、计算效率高。
图6所示,首先使用显著性增强方法对输入图像中的前景鱼类目标定位分割,并将其融入原始图像中,得到前景和背景对比度更加鲜明的鱼类图像。然后将得到的图像集输入基于迁移学习的残差网络模型中进行训练,通过Adam算法优化模型权重,更新超参数的值,直至经过softmax分类器后达到理想的准确率。
试验在Windows10 64位操作系统训练上运行,服务器配置为Intel(R) Core(TM) i7-6700 CPU @ 3.4GHz处理器和NVIDIA GeForce GTX 745显卡。其中,神经网络的搭建、训练以及测试均利用 Python语言调用开源机器学习库TensorFlow[24]实现。
基于迁移学习的卷积神经网络在训练过程中,输入图像的学习率、批处理量和参数微调的范围都会影响模型最终的检测效果,因此在训练卷积神经网络之前,需要选择合适的参数,以达到较好的训练结果。为了在短时间内找到残差迁移学习所需参数,试验只对模型末端层进行相关训练得到理想的学习率和批处理量值,并通过迁移学习微调网络层对比试验,得到最适合的参数调整范围。使用 top-1准确率(即识别结果与图像原始标签一致的准确率[25])评估模型精度。模型初始训练学习率为0.1,衰减参数为0.5,迭代次数为10 000步,批处理量为8,激活函数为ReLU。
图6 基于显著性增强和迁移学习的鱼类识别Fig.6 Fish recognition based on significant enhancement and transfer learning
为使研究结果与已有鱼类识别方法更具对比性,试验首先在公用Fish4Knowledg数据集上训练、调整、测试模型,再通过Fish30Image数据集进一步验证模型效果。其中,Fish4Knowledge数据集采用验证集和测试集的平均准确率作为分类准确率,Fish30Image数据集采用5折交叉验证方式获取分类准确率。表1为两个数据集中训练集、验证集、测试集的设置。由于两个数据集的图片数量差异较大,所以本试验按照训练集比例设置不同的迭代步数,选择Fish4Knowledge数据集迭代10 000步的训练结果和Fish30Image数据集迭代14 250步的训练结果进行比较。
表1 训练集、验证集和测试集的设置Tab.1 Training,validation and test sets
学习率控制梯度下降的步长,不同的学习率对于模型收敛、识别准确度差异影响较大。为了优化试验结果,分析本试验中学习率与分类结果之间的关系,在默认参数设置下对不同学习率模型进行试验。模型在训练过程中损失值随迭代次数的变化情况如图7所示。
图7 不同学习率对损失值的影响Fig.7 Effect of different learning rates on total loss
由图7可知,更高的学习率可以实现更快的收敛。初始学习率为0.001,0.01的模型收敛缓慢,0.2的学习率可以实现快速收敛,但最终的损失值偏高。这是因为太高的学习率可能会错过最优解,降低识别准确率[26]。而学习率处于 0.1时能够取得比较好的结果,所以后续试验初始学习率均设置为 0.1。
训练深度神经网络时,由于样本数据量巨大,一般会分批从数据集中抽取少量的图像计算平均值,然后根据平均值更新权重值。抽取图像的数量即为批处理量(batch),批处理量的大小影响模型的性能和准确率。较大的批处理量可提高梯度的精度,但是较小的批处理量有利于收敛,因此要选择合适的批处理量。
图8为初始学习率为0.1时不同批处理量对模型优化过程的影响。可以看出,批处理量越大,损失值性能越好,批处理量为64的模型损失值最小。然而由于配置有限,批处理量为64时会出现内存溢出现象,所以本试验选取损失值性能与64相近的32作为批处理量。
图8 不同批处理量对损失值的影响Fig.8 Effect of different batches on total loss
为进一步提高准确率,需要对模型进行微调操作,逐步开放全连接层之前的卷积层。试验中使用ResNet-N代表参数微调的范围,N表示将ResNet_50预训练模型第N层与其之后的参数利用试验训练集进行微调训练,并将其余低层网络参数全部冻结。除conv1层外,其中每一层都是一组残差块。图9曲线展示了模型的识别精度随微调层数的变化趋势。
试验表明,随着微调层数的增加,模型的识别准确率整体呈上升趋势,且在ResNet-conv3_1时识别准确率达到最高。说明预训练模型的conv1层和conv2层已具备良好的基础特征提取能力。因此,本文后续迁移模型采取固定低2层网络参数,微调高层的训练方式。
图9 ResNet-N分类精度Fig.9 Classification accuracy of ResNet-N
本方法在Fish4Knowledge和Fish30Image两个数据集上训练集与测试集Loss值随迭代次数的变化曲线如图10所示。可以看出训练集和测试集的走势基本一致,并且图10(a)在迭代2 500 次、图10(b)在迭代7 124次时Loss 值基本都已稳定,因此可以判断模型没有发生过拟合。
本模型与未使用迁移学习的全新学习模型在Fish4Knowledge数据集和Fish30Image数据集上的损失值变化情况如图11所示。由图可知,相同的参数配置下,本文方法对于加速网络收敛和提高分类性能具有明显的促进作用。全新学习模式下,损失值在训练阶段后期才逐渐趋于稳定,且迭代完成后的损失值依旧很大。使用本文模型后,训练初始阶段网络便迅速收敛,Fish4Knowledge数据集和Fish30Image数据集分别经过约2 500步和7 124步时,模型的损失值已达到稳定状态,获得了极低的损失值。这在很大程度上节省了训练时间,同时,鱼类识别结果的可靠性也得到保证。
图10 训练集和测试集的Loss值变化曲线Fig.10 Changes in loss for training set and test set
图11 模型全新学习和迁移学习对比Fig.11 Comparison between model new learning and transfer learning
本研究也探讨了与图像识别相关的深度神经网络ResNet-50、ResNet-101、ResNet-152和Inception V3在鱼类图像上的分类性能,上述模型在两个数据集上的识别准确率和检测时间见表2。由表可知,4种模型中,ResNet-50的平均检测时间最短,比其他3种模型节省至少4.48 s。本方法在ResNet-50的基础上进行了改进,所以识别精度有了大幅度提高,相比上述4种模型,识别准确率至少提升4.98%。通过试验发现,图像显著性增强方法的平均耗时仅为0.18 s,模型分类的平均检测时间为6.35 s,由此可以发现,使用此方法不会对检测时间造成负担。所以本模型在分类精度和检测时间方面依旧具有很大优势。
表2 数据集上不同模型的分类结果Tab.2 Classification results of different models on data sets
由于水中的噪声和光度的频繁变化,从水下相机捕获的图像中评估鱼的种类通常具有挑战性。相关文献提出了基于水下鱼类的识别方法,其中,在标准鱼类数据集Fish4Knowledge上的研究已有不少成果。Huang等[27]提出一种平衡保证优化树的水下鱼类识别方法,识别率达到95%;Huang等[28]使用拒绝选项与平衡强制优化树来识别鱼类,获得97.50%的准确率;Qin等[5]利用空间金字塔和SVM分类器等构建的5层深度神经网络方法进行鱼种分类,识别精度为98.64%;Chuang等[29]提出一种由完全无监督特征学习技术和一个容错分类组成的水下鱼类识别框架,识别准确率为97.70%。本文方法的识别精度比上述4种方法分别提高了4.64%、1.00%、2.14%和1.94%。
本研究利用数据驱动思维,将人工智能方法应用于鱼类识别,直接分析提取自然场景下的鱼类图像信息,突破了大多数研究方法要求鱼类图像背景单一的前提,并且避免了鱼类识别中人工提取特征主观性不足的问题。文中视觉注意机制的引入,能够以更高的对比度突出鱼类区域,抑制背景区域。同时,通过迁移学习初始化卷积网络权重的训练方式,既节约训练时间,又保持较高的准确率。多个数据集的试验结果表明,本文提出的模型识别结果稳定,且在公开的Fish4Knowledge鱼类数据集上,识别准确率比目前最好算法DeepFish有所提高。
本研究仅对部分鱼进行了识别试验,要建立系统有效的鱼类识别模型,就要求鱼类识别分类器有更强大的训练数据作为基础,因此,今后应继续拓展鱼的研究种类,补充更多数据构建大规模的鱼类数据集来进一步完善网络模型,以实现更多类别的区分。虽然对自然环境下的鱼类进行了识别,但同当前绝大部分的鱼类研究工作类似,局限于解决单个鱼类主体的识别问题,对鱼类重叠、遮挡情况鲜有考虑。然而自然场景中的鱼类难免会有相互重叠和被他物遮挡的情况,其准确率仍需进一步研究。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!