基于YOLOv3 的南海典型鱼类水下实时监测研究

2020-11-02 07:59李光昊张莹刘义飞莫浩铭
现代计算机 2020年27期
关键词:曲线图鱼类南海

李光昊,张莹,刘义飞,莫浩铭

(广东海洋大学数学与计算机学院,湛江 524088)

0 引言

水产品中富含天然动物蛋白和多种维生素,日趋得到人们的重视与青睐,水产养殖已成为各国满足高品质水产品产量的重要手段[1]。但是,我国的水产养殖技术总体水平较低,自动化和机械化程度不高,养殖过程中需要人不断的去查看才能知道养殖的实时情况,耗费人力和时间。机器视觉的发展为研究网箱养殖中鱼的行为提供了新手段,可以充分观察和记录鱼活动的情况,并且不会干扰到它们。

在水下鱼类识别方面,大多数基于传统算法的已有方案并不能真正解决水下机器视觉识别难的问题。传统目标检测通常步骤为人工提取目标特征后,将特征用以训练构建好的分类器学习分类规则[2]。这样的传统方法存在弊端:一是提取目标特征十分复杂,使用人工方法要求人对待检测的目标有一定的了解;二是特征提取与分类训练分离,分类训练的效果好坏很大程度上依赖于提取到的特征是否明显;三是可移植性差,非常依赖具体任务,假如待检测的目标出现较大变化,就必须重新进行特征提取与分类训练。

随着机器视觉技术的发展,深度学习成为当前目标检测与识别领域的热门方法,它为提高水产养殖技术和管理的自动化水平提供了一种新的手段[3]。本文提出将YOLOv3 目标检测算法应用于水下鱼类识别。YOLOv3 目标检测算法由Joseph Redmon 和Ali Farhadi于2018 年提出[4],在车辆实时检测、行人检测与定位等方面表现出色,其高性能使得它广泛应用在各行各业。

1 数据来源与处理

1.1 数据采集

我南海海域特有的区系特点,使得鱼类品种丰富多样[5]。本文根据《南海鱼类检索》挑选出十种常见的典型鱼类,首先,并利用爬虫技术获得了4109 张图像,经过人工清洗,去除模糊不清的图像以及不含南海典型鱼类的无关图像后,得到3638 张含有南海典型鱼类的水下图像。其次,使用水下摄像机等设备置入网箱实地拍摄了438 张水下图像,经过人工清洗,去除质量不佳的图像,最终保留387 张实地拍摄水下图像。两种来源的图像合并,共计获得有效图像4025 张。

1.2 数据增广

将南海典型鱼类数据集按照80%:20%的比例划分为训练集和测试集。由于建模并训练权重需要大量的训练数据,同时为了减少由图像变换对南海典型鱼类监测的影响,所以要对训练集进行数据增广,具体操作有顺时针翻转、逆时针翻转、垂直翻转、水平翻转、灰度化五种方法。

图1 图像的增广

2 研究方法

2.1 YYOOLLOOvv3目标检测算法

最初用于目标检测的深度学习方法为R-CNN,然后衍生出了Fast R-CNN[6]以及Faster R-CNN[7],这些方法都将目标检测问题转变为了一个分类问题。为了检测一个物体,这些方法要在一张图片上使用不同尺寸的sliding window 均匀滑动,得到不同尺寸的bounding box 后利用该物体的分类器去评估是否存在该物体,接着通过post-processing 来改善bounding box,以消除重复的检测目标。这样完成一次目标检测需要耗费大量的时间,并且由于每个环节耦合性低,检测性能难以进行优化。

不同于以上方法,YOLO 将目标检测问题当作一个回归问题来处理,通过使用一个神经网络,直接得到一整张图像的一个bounding box 的坐标、box 中所包含的目标物体的置信度以及目标物体的probabilities。其中,bounding box 的宽度和高度是以被检测目标的中心位置相对网格位置的偏移,而网格的坐标值均被归一化。此外,置信度的高低代表着是否包含目标以及包含目标情况下位置的准确性优劣,其定义为:

式中,Pr(Object)表示检测边界框包含目标物体的概率表示目标物体真实bounding box 与网络预测bounding box 的交并比。最后计算每一个网格预测到的类别概率Ci=P(Classi|Object)。

根据理想输出与实际输出,建立损失函数,定义为:

以最小化损失为目标,利用随机梯度下降法对网络进行优化,即可完成YOLO 目标检测网络的训练。

相比于早期YOLO 算法,YOLOv3 目标检测算法的创新点在于使用了DarkNet-53 进行特征提取。DarkNet-53 是基于 YOLOv2、DarkNet-19 以及新型残差网络,通过3×3 和1×1 的卷积层堆叠组成的,其网络结构如图2 所示。Darknet-53 网络不仅在性能上优于DarkNet-19,在检测效率上还优于 ResNet-101 和ResNet-152,其在ImageNet 数据集上的测试结果如表1。

图2 DarkNet-53的结构

表1 ImageNet 数据集测试结果

由于YOLO 的目标检测流程是在一个神经网络内完成,是一个end-to-end 的模型,所以可以优化目标检测性能。

2.2 评价指标

精确率(precision)即正确预测结果占所有预测结果的比例,用于衡量预测结果的精确性。召回率(recall)即正确预测结果占所有正确结果的比例,用于衡量正确预测结果的好坏。

此外,以精确率为纵坐标,召回率为横坐标,可以绘制 P-R(Precision-Recall)曲线,精度均值(Average Precision,AP)即为 P-R 曲线的积分。

同时,交并比(Intersection over Union,IoU)是候选框与人工标记框的交集与并集之比,即检测结果与正确结果的重叠率,也是评测目标检测精确率的重要指标。

3 分析与讨论

3.1 训练过程

本文采用小批量梯度下降法在训练中更新神经网络梯度信息,训练过程中神经网络根据误差通过反向传播进行参数更新,使得损失函数逐渐收敛。

在试验初期,学习率设定为10-3。然而,学习率过低会导致损失函数的变化率偏小,这也就意味着需要花更多的时间进行训练;学习率过高虽然可以加速训练,但是容易造成损失值爆炸的问题。所以本文采用自适应学习率方法(Adaptive Learning Rate)根据训练所处阶段自动更新学习率。

如图3 所示,倘若神经网络不断训练,会导致模型在训练集中的精确度不断上升,在验证集中的精确度不断下降,即出现过拟合现象,这会使得模型泛化性能降低,因此,本文在训练过程中使用了早停法(Early Stopping)。

图3 准确率曲线图

此外,由于YOLOv3 网络结构中存在多尺度训练(Multi-Scale Training)方法,在训练过程中每训练完10批样本后,网络会自动将输入数据的尺寸调整为降采样参数32 的倍数,即输入数据的最小尺寸为320×320,最大尺寸为608×608,再根据输入数据的大小对网络结构进行相应的调整展开下一轮训练,这样训练出来的网络模型可以更好地适应不同尺寸的图片,提高目标检测的精度。

3.2 结果分析

图4 为训练集损失函数值历史曲线图,由图4 可知训练过程中模型通过不断学习使得损失函数值逐渐下降,并最终收敛至[7,8]区间。同时,图5 为验证集损失函数值历史曲线图,由图5 可知在验证集中的损失函数值也是随着训练的进行不断下降,最终收敛于[20,30]之间。而图6 是模型的学习率历史曲线图。由于模型采用自适应学习率方法,所以模型的学习率是动态变化的。由图可知,模型以1×10-4的学习率开始训练,在9×102次训练迭代后将学习率降为1×10-5,最终由于学习率过小使得模型停止训练。

图4 训练集损失函数值历史曲线图

图5 验证集损失函数值历史曲线图

图6 模型的学习率历史曲线图

3.3 检测结果

图7 为南海水下典型鱼类检测结果。算法成功检测出数据中的南海典型鱼类。图7(a)中即使在目标与背景相似的情况下算法依然能准确检测、分类出目标并标注出检测边界框。

图7(b)中出现了多目标,算法在检测边界框重合度高的情况下仍然能准确检测出目标。

图7 算法检测结果

4 结语

本文通过利用深度学习的方法,建立YOLO 目标检测算法,在一定程度上优于传统的水下图像检测算法,达到实时检测南海水下典型鱼类的目的。这是目标检测算法应用的一次颇有意义的尝试,相信将来得到更多的水下资料以及更多的训练时间后,能够进一步提升该南海水下典型鱼类实时检测模型的准确度,从而指导水产养殖业的自动化。

本文使用采集的南海典型鱼类影像资料对YOLOv3 深度神经网络进行权值训练,通过调整算法的超参数获得了不同的性能表现,最终,算法满足水下作业要求的实时性与准确率,表明本文提出的方法具有一定的使用价值。

猜你喜欢
曲线图鱼类南海
南海超级巨无霸——“深海一号”
南海明珠
忍不住想打扰你
鱼类运动会
APsychoanalysisofHoldeninTheCatcherintheRye
高中地理图像图表题解析技巧之管窥
曲线图在高中生物教学中的应用
引发海啸(上)
解答《经济生活》曲线图试题的四大技巧