摘 要:
【目的】为解决水域监控下漂浮物检测效率低、检测模型复杂度高的问题,提出一种基于改善YOLOv3的轻量化漂浮物检测算法。【方法】使用轻量级网络MobileNetv3取代YOLOv3的主干特征提取网络Darknet53以降低模型计算量和参数;构建简化版加权双向特征金字塔网络(Bi-FPN-tiny)以进行多尺度特征的加权融合;利用Focal Loss优化损失函数,加强对于困难样本的学习。为验证所提算法的有效性,建立了PASCAL VOC格式的漂浮物数据集,并进行数据标注和增广。【结果】结果表明:改善后的算法平均精度均值(mAP)达到92.8%,比原算法提高了7.1%;在NVIDIA Quadro P2200显卡下检测速度达到了86 fps/s,高于YOLOv3算法的47 fps/s;模型体积为43.7 MB,仅为初始算法的17.7%。【结论】改善YOLOv3是一种性能优越且轻量化的模型,为在移动端进行实时漂浮物检测提供了新的契机。
关键词:
YOLOv3算法;漂浮物;目标检测;轻量化;特征融合;
作者简介:
任英杰(1995—),男,硕士研究生,研究方向为图像识别、水利工程。
*李传奇(1963—),男,教授,博士,研究方向为防洪减灾、智慧水利。
基金:
山东省自然科学基金(ZR2021ME030);
深圳市可持续发展科技专项项目(KCXFZ20201221173407021);
济南市水务科技项目(JNSWKJ202106);
引用:
任英杰, 李传奇, 王薇, 等. 改善 YOLOv3 的轻量化漂浮物检测算法[J]. 水利水电技术(中英文), 2023, 54(10): 170- 179.
REN Yingjie, LI Chuanqi, WANG Wei, et al. Lightweight floating object detection algorithm based on improved YOLOv3 [J] . Water Resources and Hydropower Engineering, 2023, 54(10): 170- 179.
0 引 言
大范围高清水利视频监控系统在河湖监管保护中发挥着重大作用。在涉河湖区域和无人值守环境中,利用视频监控进行异常事件(如漂浮物)的自动准确检测已成为一个迫切的需求。河流、湖泊、水库等水域中常常出现各种漂浮物,漂浮物的大量聚集会对水体水质及水利工程的安全运行带来不利影响。利用监控视频实现漂浮物目标检测可提升河湖智能化管理水平,但海量的监控视频给数据存储和数据分析带来了极大的挑战。传统方法依靠人工判读视频图像进行漂浮物目标检测,不仅监控工作量巨大,而且检测精度和效率都无法得到保证。因此,及时从海量数据中捕捉关键信息,准确高效地识别和定位漂浮物,对实现河湖智能化管理具有重大意义。
随着目标检测算法的不断发展,基于深度学习的目标检测算法相对于传统检测算法具有更强的鲁棒性和泛化能力。基于深度学习的目标检测算法可分为两类:基于逻辑回归的单阶段目标检测算法和基于候选框区域的双阶段目标检测算法。单阶段检测算法,如YOLO和SSD,将分类任务和定位任务进行合并,可以在一次特征提取后获取目标的位置和类别。因此,单阶段目标检测算法在需要进行快速目标检测的场景中应用广泛,但其检测精度较低。双阶段目标检测算法,如Faster-RCNN和Mask-RCNN,则在图像中生成一系列候选区域,再对候选区域进行分类和回归,从而大大提升了检测精度,但检测速度较慢,难以满足实时检测的任务需求。
早期用于水面漂浮物的检测方法包括背景减法、帧差法和图像分割等。这些目标检测算法主要基于手工设计的特征(Hand-crafted features),这些特征容易受到特征选择、对象形状和背景变化等因素的影响,从而导致检测的鲁棒性和泛化能力较差。近年来,针对不同场景下的漂浮物检测任务,越来越多的学者进行了各种算法的改善研究,以进一步提高漂浮物检测的精度和效率。其中,深度学习方法由于其优良的泛化能力和鲁棒性,在国内外已被应用到水面漂浮物的计算机视觉检测中。
由于国内外对于河湖水环境问题的关注程度不同,国外学者对水面漂浮物的研究相对偏少。李国进等以人工湖水面漂浮物为素材,对Faster-RCNN和YOLOv3目标检测算法进行改善,将基于边界框的定位替换为基于像素点的定位,提高了算法的识别和定位精度。刘伟等通过互联网抓图建立漂浮物数据集,提出了一种基于Mask-RCNN的水面漂浮物识别方法,与基于HOG特征的传统目标检测算法相比,准确率和召回率分别提高了16%和13.8%。陈娜等人提出了一种基于智能视频监控系统的河湖四乱巡检技术方案,将面向小目标的多尺度 Faster-RCNN 检测算法与视频监控系统集成应用。LIN等提出了一种改善的YOLOv5s(FMA-YOLOv5s)算法,通过在主干网络的末端引入特征图注意力(feature-map attention)来增强网络特征提取能力。ZHANG等对Faster-RCNN目标检测算法进行改善,通过融合不同层次的特征信息提高水面漂浮物检测精度,改善算法的平均精度(mAP)为83.7%,检测速度为13帧/s。在背景复杂、光照变化等复杂真实环境下,漂浮物的精准检测一直是一个亟需解决的难点。目前的漂浮物检测算法虽然带来了必定程度的精度提升,但由于所涉及的深度网络模型参数过多,模型不够轻量化,需要大量的存储空间和运行资源来完成任务。因此,移动端运行规模较大的深度网络模型面临困难,迫切需要对基于深度学习的目标检测模型进行轻量化处理。
为平衡检测精度、速度和网络复杂度,学者们提出了一系列轻量化卷积神经网络模型,其核心在于设计更为高效的卷积方式,在少量牺牲检测精度的情况下加速模型收敛。目标检测算法的发展趋势是通过构建更深、更宽、更复杂的网络结构来提高检测精度,但这一般需要牺牲检测速度和增加网络复杂度。
本文提出了一种轻量化目标检测算法,通过改善YOLOv3算法,用于视频监控下漂浮物检测任务。该算法在保持较高检测精度的同时,减少模型计算量,降低模型资源占用。
本文算法的主要改善如下:(1)使用轻量级网络MobileNetv3替换YOLOv3的主干特征提取网络DarkNet-53,引入深度可分离卷积来大幅度降低模型的参数量和计算量;(2)构建简化版加权双向金字塔结构(Bi-FPN-tiny)[20]对不同尺度的特征进行加权融合,以有效提高多尺度漂浮物的检测效果;(3)通过引入Focal Loss损失函数对原始算法的损失函数进行优化,提高算法对于困难样本的挖掘能力,从而进一步提高目标检测精度。
1 YOLOv3算法
相较于主流的双阶段检测算法,YOLOv3算法具有明显的实时性优势。该算法将目标检测问题转化为单一的回归问题,无需生成候选区域,直接在图像网格中回归目标的位置和大小,从而生成最终的检测结果。2018年,REDMON等在YOLO及YOLOv2的基础上提出了YOLOv3,采用残差单元和跳跃连接构建全卷积网络DarkNet-53作为基础特征提取网络,以解决网络加深带来的梯度消失和梯度爆炸问题。该算法还设计了多尺度预测结构,对不同维度的特征信息进行融合,以提高多尺度目标的检测精度。YOLOv3网络结构如图1所示,输入图片经过主干网络下采样后,在最后3个阶段分别输出13×13、26×26、52×52三种不同尺度的特征图。在预测端,YOLOv3将输入图像按照特征图尺寸划分为S×S个网格,每个单元格负责预测落入其中心的待检目标。每个单元格将输出多个预测框以及每个预测框的置信度和所属类别的概率,最终通过非极大抑制确定目标的位置。

图1 YOLOv3网络结构
YOLOv5是YOLO系列算法的最新版本,由Ultralytics公司在2020年发布。尽管YOLOv5在网络结构和训练策略上进行了改善,但在实际应用中,YOLOv3已经被广泛验证,具有更为稳定和可靠的性能。因此,本文选择改善YOLOv3进行漂浮物目标检测。
虽然YOLOv3在MSCOCO、PASCAL VOC等大型公开数据集上表现出色,但在基于视频监控平台的漂浮物目标检测等实际检测任务中,仍存在以下不足之处:(1)分析YOLOv3的全卷积网络结构,发现其包含了一系列的标准卷积、上采样、残差单元等基础模块。但随着网络的加深,导致网络参数量和计算开销急剧增加,对于搭载并运行该算法的平台硬件要求较高。因此,该算法的模型复杂度仍需要进一步改善,以适应更为轻量化的硬件平台。(2)在监控画面下,漂浮物的尺度变化较大,YOLOv3的多尺度预测方式在提取特征的鲁棒性上较差,尤其对于小尺度的漂浮物目标识别效果不理想。(3)漂浮物目标检测面临着曝光、遮挡等诸多背景干扰,在不同光线条件下检测目标特征差异悬殊。不过,YOLOv3对于困难样本的挖掘能力不足,导致漏检、误检情况严重。因此,该算法的进一步改善依旧具有重大意义。
2 改善的YOLOv3算法
本文对YOLOv3算法进行了三方面的改善,分别为采用轻量化的MobileNetv3主干网络、构建简化版的加权双向特征金字塔结构(Bi-FPN-tiny)、引入Focal Loss函数。通过这些改善,改善后的算法在检测精度、速度和复杂度三方面取得了有效权衡。
2.1 轻量型特征提取网络设计
MobileNetv3网络采用深度可分离卷积取代标准卷积,以降低模型的参数量和计算量,卷积方式如图2所示。

图2 卷积方式
深度可分离卷积包括逐通道卷积(Depthwise Convolution)和逐点卷积 (Pointwise Convolution)两个步骤,前者使用单通道滤波器对每个输入通道进行卷积,后者使用N个1×1滤波器整合输出特征图。尽管深度可分离卷积整体效果与标准卷积类似,但计算量和模型参数量都大幅减少。
在卷积核尺寸为DK×DK、输入特征图尺寸为DF×DF、输入和输出通道数分别为M和N的情况下,当步长为1且存在padding时,标准卷积的计算量为

而深度可分离卷积的计算量为

两者相互比较,可得计算量缩小为原来的

可以看出,改变卷积方式可以极大地减少模型的计算量。一般情况下,MobileNetv3采用的卷积核尺寸为3×3,这意味着改善后的模型计算量只有原始模型计算量的1/9~1/8。除此之外,MobileNetv3还综合了轻量级Squeeze and Excitation注意力机制以及低计算开销的hard-Swish激活函数,进一步降低了网络的计算量。
2.2 加权双向特征金字塔
加权双向特征金字塔是一种网络结构,用于从输入图像中提取特征,并能够输出不同分辨率的特征图。在YOLOv3算法中,传统的特征金字塔网络结构(FPN)被用来实现多尺度目标检测,但是FPN结构本身受到单向信息流的限制,无法区分不同贡献的输入特征。为解决这些问题,本文引入了跨尺度连接和加权特征融合方式,在传统FPN基础上添加了一条自下而上的连接通道,实现了双向特征传递。同时,通过去除一些贡献级别低的连接通道和在贡献级别高的连接处建立额外的横向连接,进一步提高了特征提取的准确性。
该结构输出三种不同尺度(Feat1、Feat2、Feat3)的特征图,简化版加权双向金字塔(BiFPN-tiny)结构如图3所示。

图3 轻量化特征金字塔设计
以Feat2特征图为例,其融合过程如下所述

式中,Featin22in、Feattd22td、Featout22out分别表明自上而下第二种尺度所对应的输入特征、中间特征和输出特征;Featin33in为第三种尺度对应的输入特征;ε是用于保证数值稳定的极小值;ωi是对应的自动学习权重;Resize操作一般是上采样或下采样操作。
BiFPN-tiny在权重选择方面采用了快速归一化融合(Fast-Normalized Fusion)策略,根据TAN等的研究结果, 相比于常用的Softmax函数,Fast-Normalized Fusion在类似精度下能够实现约30%的速度提升。Fast-Normalized Fusion的计算公式为

式中,i、j为特征融合节点的输入特征图数量,i=j;Ii为输入特征图张量;ε是用于避免分母为零的常数;ωi、ωj为对应输入特征图的权重,初始权重介于0与1之间。
2.3 Focal Loss损失函数
在监控画面下的漂浮物目标检测任务中,需要将检测的水面漂浮物作为前景,其他部分视为背景。不过,由于正负样本不均衡和前景、背景复杂度不均衡的问题,这项任务变得超级困难。为了解决这些挑战,研究人员一般采用一种名为Focal Loss的损失函数。Focal Loss通过调整正负样本的权重来解决正负样本不均衡的问题,并通过降低易分样本的权重来解决前景和背景复杂度不均衡的问题。
如图4所示,图4(a)中的漂浮物目标(标注框内)由于光线条件差、背景干扰多、拍摄距离远,导致占有像素少且特征不明显,属于前景和背景都复杂的困难样本;图4(b)中的漂浮物目标(标注框内)由于光线条件良好、背景简单、拍摄距离近,特征明显且占有较多像素,属于易分辨的样本。在这种情况下,虽然单阶段目标检测算法YOLOv3检测速度快,但是受到样本不均衡的影响较大,特别是对小目标检测效果不理想,导致检测精度无法得到进一步提升。

图4 困难样本与简单样本示例
原始的YOLOv3算法的总损失函数由分类损失、位置损失和置信度损失三部分组成,函数公式为

式中,LYOLOv3为原始算法的总损失,LYOLOv3是通过交叉熵函数与均方差函数计算的位置损失,lconf、lclass分别为交叉熵函数计算的置信度损失和分类损失。
为了解决样本不均衡问题,本文使用了LIN等人提出的Focal Loss函数,以替换原始算法中的交叉熵(Cross Entropy)函数。Focal Loss通过降低易分类样本的权重,使模型更加关注难分类样本的学习。Focal loss (FL)的公式为

式中,pt是不同类别的分类概率。α是一个用来调整正负样本数量失衡的权重系数,可以使模型更关注少数类样本的学习;γ是一个调节难易样本不均衡问题的超参数,通过调整γ的值,可以让模型更加关注难以分类的样本。试验发现,当α=0.2和γ=2时,Focal loss函数效果最佳。在具体应用时,应根据实际情况进行超参数的优化和调整。

图5 改善后的YOLOv3网络结构
3 材料与试验
3.1 漂浮物数据集
数据集是评估目标检测算法性能的基础,其质量和规模对模型的拟合和泛化能力产生重大影响。本研究在山东省范围内采集了漂浮物样本,以构建可靠的漂浮物数据集。为提高目标检测算法的泛化能力,样本采集兼顾光线条件、拍摄距离/角度、成像背景和样本种类等因素,部分样本的图片如图6所示。

图6 复杂背景下的漂浮物样本图像
共采集了7 300张漂浮物样本RGB图像,像素均在200万以上,分为“FLOTAGE-PLANT”和“FLOTAGE-PLASTIC”两类。采用开源标注工具Labelimg对样本图片进行了人工标注,数据集格式为PASCAL VOC,标注文件以XML格式保存,包含对应图像的路径、标注名称和边框坐标等信息。按照8∶1∶1的比例随机划分为训练集、验证集和测试集。
3.2 深度学习开发环境
本研究在Win10系统下建立了一个深度学习开发环境,用于漂浮物检测模型的训练和推理。该环境集成了所需的各种python库,并引入PyTorch深度学习框架。同时,配置了CUDA以获得GPU加速的便利,使用的GPU型号为NVIDIA Quadro P2200。
3.3 参数设置
本研究采用Pascal VOC格式的漂浮物数据集,并对原始数据集进行筛选,选取了2 000张高质量的样本用于漂浮物检测模型的训练和测试。
为提高训练速度和模型性能,漂浮物检测模型的训练采用了迁移学习策略,引入大型数据集ImageNet预训练权重。采用了冻结训练方式以达到最佳的训练效果,其中freeze-epoch为50。参数优化过程基于随机梯度下降法进行,初始学习率设置为0.01,最终学习率设置为0.000 5,动量参数为0.937。为进一步提高模型性能,使用StepLR优化器进行学习率调整,调整间隔step_size为1,调整倍数gamma为0.94。在冻结阶段,基于单NVIDIA Quadro P2200显卡的Batch size设置为8,解冻阶段则被调整为4,以达到最佳的训练效果。
4 试验结果与分析
4.1 性能评估指标
本文使用平均精度均值(mAP)、每秒传输帧数(FPS)和模型存储大小作为评价指标,以评估改善算法的性能。一般采用准确率P(precision)、召回率R(recall)、精度均值AP(average precision)及漂浮物的平均精度均值mAP(mean average precision)作为模型精度评价指标。AP只适用于单个类别的检测任务,而mAP适用于多个类别的检测任务。一般情况下mAP数值越高,目标识别效果越好。准确率、召回率、精度均值以及平均精度均值计算公式为

式中,N表明漂浮物目标种类数量;TP表明漂浮物被正确检测出来的数量;FP表明非漂浮物被错误检出为漂浮物的数量;FN表明没有被检测出来的漂浮物数量。
4.2 试验结果
模型训练结果如图7所示,其中模型损失函数包括三种:位置(box) 损失、置信度(obj)损失以及分类(cls)损失,可以看出损失函数在迭代约250个轮次(epoch)后达到收敛。

图7 损失函数的收敛曲线
4.2.1 本文算法与YOLOv3性能对比
为了验证改善YOLOv3算法的实际检测效果,进行了水面漂浮物的监控视频检测,并将改善YOLOv3算法与YOLOv3算法进行性能比较。通过表1可以看出,相较于原YOLOv3算法,改善后的YOLOv3算法在检测精度和检测速度都有了大幅度的提升。具体而言,YOLOv3算法的平均精度均值(mAP)为85.7%,而改善YOLOv3算法的mAP值提升至92.8%,提升了7.1%;改善YOLOv3算法在保证精度的情况下,帧率可以达到86 FPS,是YOLOv3算法帧率的2.2倍。对于实际应用中的漂浮物目标检测而言,检测速度的提升具有极强的现实意义。图8展示了改善后的YOLO v3算法在复杂背景下检测水面漂浮物的实际效果。从图8中可以看出,改善YOLOv3算法具有更高的漂浮物识别精度,能够有效减少因背景干扰、不同光照条件和漂浮物尺寸较小等因素造成的错检、漏检情况。


图8 漂浮物目标检测对比
4.2.2 与其它经典算法对比
为了全面评估本文改善的YOLOv3算法性能,进行了改善的YOLOv3算法与Faster-RCNN、YOLOv5、RetinaNet和SSD检测算法的对比试验,试验结果如表2所列。由表2可知,两阶段Faster R-CNN算法的平均精度均值(mAP)达到86.4%,但检测速度仅为12FPS。相比之下,单阶段的RetinaNet、SSD和YOLO算法具有更快的检测速度。改善的YOLOv3 算法具有更高的平均检测速度,可达到86FPS,并且检测精度提高到92.8%,接近于YOLOv5的检测精度。从模型大小来看, 改善YOLOv3的模型体积为43.7 M, 不到YOLOv5、SSD等算法的1/2。基于这些试验结果,本文开发的目标检测模型适用于移动端应用, 并且能够降低存储成本。

要了解影响识别算法计算速度的因素,需要思考算法类别、模型大小、激活函数和硬件设备等多个方面。不同的算法类别采用的技术和架构不同,因此计算速度会有所不同;模型大小会直接影响计算量和内存占用,模型越大则计算速度越慢;激活函数会影响模型的非线性拟合能力,某些激活函数会增加计算量,从而降低计算速度;硬件设备的不同也会直接影响计算速度,例如GPU和TPU具有更高的并行计算能力和更好的计算性能,可以加速模型的计算过程。
4.3 算法复杂度分析
根据表3的算法复杂度分析,改善的YOLOv3模型体积大小为43.7 M,仅为YOLOv3算法的17.7%,这意味着可以节省更多的的存储空间。改善后的算法训练时间也缩减至初始算法的40%,训练完成的权重文件仅为YOLOv3算法权重文件的21.7%,更小的权重文件意味着更加精巧的网络架构和更为广阔的应用空间。

4.4 消融试验结果分析
为了评估优化策略对算法性能的影响,本文设计了一系列消融试验,试验方案如表4所列。试验结果表明,引入轻量化特征提取网络后,MobileNet-YOLOv3算法在保证较高精度的情况下,检测速度得到了大幅提升,检测帧率达到原始算法的两倍以上。引入轻量化双向金字塔结构进行特征融合之后,与MobileNet-YOLOv3相比,MobileNet-BiFPN-YOLOv3算法的检测精度(mAP)提升了4.2%。改善后的算法对小尺度检测目标的检测性能明显提高,有效改善了以往漏检小目标的情况。引入Focal Loss损失函数后,Improved YOLOv3算法的mAP提高了3.2%,进一步提升了算法对于困难样本的挖掘能力。

5 结 论
本研究提出了一种基于改善YOLOv3的轻量化目标检测算法,能够在移动终端上实现高效准确的检测漂浮物。该算法将Darknet53结构替换为MobileNetv3网络,并引入深度可分离卷积,有效降低了网络的参数量和计算量。通过构建轻量化双向金字塔结构进行特征融合,改善后的算法在多尺度(尤其是小尺度)漂浮物目标的检测方面表现出更强的性能。引入Focal Loss损失函数加强算法对于困难样本挖掘,极大程度上改善了难易样本带来的样本不均衡问题。试验结果表明,改善后的算法检测精度和速度上都得到了显著提升,同时实现了理想检测效率下的模型轻量。因此,该算法在移动端漂浮物检测领域具有广泛的应用前景。
水利水电技术(中英文)
水利部《水利水电技术(中英文)》杂志是中国水利水电行业的综合性技术期刊(月刊),为全国中文核心期刊,面向国内外公开发行。本刊以介绍我国水资源的开发、利用、治理、配置、节约和保护,以及水利水电工程的勘测、设计、施工、运行管理和科学研究等方面的技术经验为主,同时也报道国外的先进技术。期刊主要栏目有:水文水资源、水工建筑、工程施工、工程基础、水力学、机电技术、泥沙研究、水环境与水生态、运行管理、试验研究、工程地质、金属结构、水利经济、水利规划、防汛抗旱、建设管理、新能源、城市水利、农村水利、水土保持、水库移民、水利现代化、国际水利等。



