陈任飞,彭 勇,*,吴 剑,欧阳文宇,李 昱,岳廷秀
(1.大连理工大学 水利工程学院,辽宁 大连 116024;2.大连理工大学 人工智能大连研究院,辽宁 大连 116000)
漂浮物会对水质、水面景观、供水、水产和航运等造成不利影响,加强水面漂浮物检测与打捞对水利工程具有重要意义[1]。如谭磊[2]、徐晓晖[3]、Qiao[4]、Hu[5]和Li[6]等在应用过程中发现,传统水面漂浮物检测典型方法普遍存在效率低、精度低[7]等问题,特别是动态水面和漂浮物不规则、图像特征提取相对困难、漂浮物的频繁移动等增加了检测难度[8],难以满足复杂水面场景的大范围漂浮物自动化检测作业的需求[9]。随着人工智能技术的快速发展,基于深度学习的图像识别算法为漂浮物智能识别与定位提供了新的技术支撑[10-12]。目前,基于深度学习的水面漂浮物检测算法沿着两条主线发展:一是以Faster RCNN[13]、CA-Faster R-CNN[14]为代表的基于候选框方式的检测主线,能够有效确保漂浮物检测精度,但检测速度无法满足实时检测需求;二是以YOLO[15]、SSD[16]和Retain-Net[17]为代表的一体化检测算法,检测速度要明显快于前者,但漂浮物检测精度略有下降[18],其中SSD检测算法的准确率和检测速度相对较优,成为当前水面漂浮物目标检测的主流方法[19]。上述检测算法适用于一定范围内且物理环境复杂度相对较低的漂浮物目标检测,但水面漂浮物的识别环境受到大量噪声和环境干扰,使得不同尺度图像特征的提取相对困难。此外,现有漂浮物检测算法结构复杂且模型内存成本高,无法满足低性能检测设备的实时应用需求,难以得到广泛推广应用[20]。
轻量化深度学习模型[21]和动态特征金字塔网络[22]为平衡目标检测精度、效率和计算复杂度提供了新思路。以MobileNet为代表的轻量化深度学习模型通过引入反向残差网络减少参数计算量,并凭借检测速度和模型内存的优势在车辆检测[23]、海珍品识别[24]及水底生物检测领域[25]广泛应用。动态特征金字塔网络通过结合动态门(Dynamic gating)操作原则和自适应选择分支(Adaptively Selected Branch)方法对目标物输出特征进行量化,通过优化计算资源的分配策略实现了目标检测准确性和计算复杂度之间的平衡,提升了动态推理的合理性。目前,动态特征金字塔网络主要应用于降低浮点数运算量(FLOPs),如:在COCO minival上将Faster R-CNN的特征金字塔网络(FPN)替换为inception FPN,平均检测精度提升了1.6%;而引入动态特征金字塔网络后,在保持同等性能的情况下FLOPs减少约40%。当前,水环境检测领域的研究主要集中在提升算法的检测精度,缺乏对漂浮物检测算法的轻量化、精度和效率均衡化问题的全面系统研究,无法实现水面漂浮物的实时精准检测。
本文针对现有目标检测算法精度、效率和复杂水面环境的干扰问题,整合图像去噪、增强处理和深度学习框架,提出了一种基于改进SSD算法的水面漂浮物检测方法。首先,引入稀疏分解的思想对低质量的水面漂浮物图像进行图像降噪和增强处理,以保证预处理后的图像能够提供足够、正确的特征信息,初步降低复杂水面环境的影响;其次,选择结合锚框机制和回归思想的检测器(SSD)作为检测框架,基于轻量级MobileNetV2网络设计了特征提取网络,从而替代VGG16基础网络,同时将动态特征金字塔网络结构引入到特征提取网络中,以确保用于预测的特征图具有适当的分辨率和强语义特征;最后,采用反向残差模块和深度可分离卷积,并应用模型量化误差校正检测网络的卷积层和全连接层,降低反向传播的参数数量和内存成本。
SSD算法作为一体化卷积网络检测方法,采用卷积对不同尺度特征图进行检测,以先验框为基准计算预测偏差,将特征提取、位置回归和分类任务集成到网络中进行训练[26],具备速度快和精度高的优势。该算法以VGG16为基础网络,引入辅助卷积和池化层等结构,将多尺度特征图用于不同尺度目标物检测。
本文将SSD算法作为水面漂浮物检测的基本框架,主要原因在于:1)SSD算法可以直接预测目标物体分类和边界框,有效降低训练难度;2)SSD算法结合了Faster R-CNN算法的锚框机制和YOLO算法的回归思想,进行不同尺度图像特征提取,减少了训练参数数量。因此,SSD检测算法可以在不同尺度图像中达到一定的目标识别精度和速度,提高实时检测性能。但受限于复杂的水面漂浮物检测环境和计算量有限的硬件性能,SSD检测算法的检测精度和速度依然无法满足水面漂浮物实时检测的需求。
传统SSD算法中VGG16基础网络的参数训练依赖于高性能的硬件设备[27],而基于反向残留网络的MobileNetV2-FPN具有参数少和速度快的优势,能够有效解决实际水面漂浮物检测任务中的硬件和检测速度问题[28]。其中,MobileNetV2作为一个轻量化卷积神经网络,在MobileNetV1的基础上加入了线性bottlenecks和反转残差模块,构成了高效的基本模块,进一步减少模型的实际操作数。特征金字塔网络(feature pyramid network,FPN)通过融合低层特征的高分辨率和高层特征的高语义信息,在每个融合后的特征层上进行独立预测,实现了不同尺度的特征融合。虽然FPN进行了多尺度信息的融合,但未解决对同一特征层中的多尺度问题,而动态特征金字塔网络(dynamic feature pyramid network,DyFPN)能够采用自适应选择卷积方法解决该问题,同时在相同的参数量下相较于FPN具有更高的性能。为满足高精度、实时性和轻量化的水面漂浮物检测要求,对SSD算法作出以下改进:1)参考MobileNetV2的网络结构,在MobileNetV2网络预测层中将深度可分离卷积代替传统标准卷积,将其拆分为深度卷积(depthwise convolution,DW)和逐点卷积(poinwise convolution,PW),并将MobileNetV2网络卷积中的多尺度结构通过跨层连接构建DyFPN,重新设计SSD算法中的基础网络;2)采用模型量化方法量化深度分离卷积和标准卷积层的参数,减少参数规模,降低计算复杂度,最大化降低设备运行成本;3)根据实际检测设备的计算能力和水面漂浮物的检测需求,训练出能够满足实际需求的视觉检测模型。改进后的算法框架如图1所示。
图1 改进SSD检测算法的网络结构Fig.1 Network structure of improved SSD detection algorithm
改进的SSD算法由骨干网络(图1(a))和辅助网络(图1(b))组成网络模块。MobileNetV2的核心由1个标准卷积层和17个反向残差模块组成,如图1(c)所示。同时,参考ResNet的残差模块,采用1*1→3*3→1*1的模式,首先,采用PW增加特征通道数,将膨胀系数设置为6,使用DW过滤大量通道的空间信息并提取特征,引入宽度乘数β∈[0,1]和分辨率乘数ρ,优化并减少模型冗余参数;其次,使用PW卷积以减少通道数,通过线性转换形成低维线性瓶颈,将ReLU6代替传统的非线性激活函数ReLU,将最大输出值限制为6。调整后的反向残差模块是由1个1*1的卷积层、1个3*3的DW卷积、批量标准化(Batch normalize,Bn)和Relu6激励函数组成,如图1(d)所示。
骨干网络中的DyFPN融合MobileNetV2网络的输出特征图,在不增加过多参数的情况下,能够有效提高水面漂浮物检测精度。首先,将特征图自上而下进行两次上采样(up-sampling),将上采样结果与自下而上采样产生的特征图进行横向连接并融合;其次,采用3*3卷积层对融合特征图进行卷积操作,动态调整每个不同比例的特征地图的大小,通过融合MobileNetV2网络获取的多尺度特征图来提高水面漂浮物检测精度,如图1(e)所示。
改进后的骨干网络MobileNetV2-DyFPN网络模型如图2所示,每一行描述了一个重复n次并由一个或多个相同模块层组成的序列。图2中,t代表残差块中扩展的维度,c代表特征图输出的维数,s代表卷积操作的步长,n代表当前行卷积操作被重复应用次数。在序列1中以标准卷积层Conv2d进行操作,将卷积核设置为24,以确保完整地提取输入图像的特征信息;在序列2~8中采用瓶颈倒置残差(bottleneck)进行卷积操作;在序列9~12中采用标准卷积Conv2d进行自上而下和自下而上的动态特征金字塔特征提取,构建多个具有不同分辨率和强语义信息的低成本预测特征图,在序列13中采用深度可分离卷积代替传统标准卷积Conv2d进行特征预测。
图2 改进后的MobileNetV2-DyFPN网络模型Fig.2 Improved MobileNetV2-DyFPN network model
辅助网络图1(b)的构建是为了量化深度可分离卷积和传统标准卷积的参数,以降低算法的计算复杂度和内存成本。采用模型量化方法Quantized-CNN对卷积层进行误差量化,将每一层特征图输出的误差进行最小化,并融合前一层量化过程中的误差,将误差量化的最优目标设置为G:
在实际水面漂浮物检测模型量化应用中,以超参数K和V计算水面漂浮物识别效率和精度损失,网络的计算复杂度和内存成本计算方式见表1和2。表1、2中,Cs和Ct分别代表相邻的前层神经元和后层神经元,K和V分别代表空间矩阵和子码字,ds2、dt2和dk2分别代表不同神经元的核宽度。
表1 CNN全连接层和卷积层量化前后计算复杂度Tab.1 Computation of fully connected and convolutional layers of CNN before and after quantization
表2 CNN全连接层和卷积层量化前后内存成本Tab.2 Memory consumption of fully connected and convolutional layers of CNN before and after quantization
为了选择最优的漂浮物检测模型,采用多种评价标准来评估水面漂浮物检测算法的性能,包括准确率P、召回率R、综合评价指数F1和平均精度MAP,具体的计算见式(2)~(5)。
式(2)~(5)中:TPN代表正确的检测结果;FPN代表错误的检测结果;TPN+FPN代表检测框的总数量;FNN代表漏检的结果;TPN+FNN代表真实框的总数量;综合评价指数F1主要是在准确率和召回率不一致时而进行评估的方法;Nc为漂浮物照片总数量;Pc为每一个不同置信阈值下漂浮物的检测精度;c代表目标物种类,本文中的漂浮物指的是漂浮水草(水葫芦),c值为1。平均精度值MAP是所选11个不同置信阈值(召回值)的精度平均值。由于本文的目的是识别漂浮物数量和位置,要有效避免误检,而召回率相对于准确率重要程度更高,综合评价指标F1能够平衡准确率和召回率之间的关系,平均准确率MAP作为性能评价最全面的指标,其重要程度最高。因此,确定性能指标的优先级顺序为MAP>F1>R>P。
利用预测框与真实框的交并比(RIOU)作为判断预测真假的前提,若RIOU大于一定阈值,将删除此类预测框,保留并输出得分最高的预测框,将这一过程称为非最大抑制(NMS)算法。非最大抑制将过滤多余预测框,保证分类网络在卷积核中心分类的准确性[29]。Pascal Voc2010数据集以RIOU=0.5为交并比阈值[30],再根据预测框内类别置信度进行判定:若RIOU>0.5,认为检测结果为真样例;否则,认为是假样例。
首先,通过多种方式构建水面漂浮物图像数据集;其次,采用图像降噪和增强算法对图像进行预处理,提高采集图像的精度;然后通过LabelImg工具对图像数据进行标注,并将其分为测试集、训练集和验证集,同时对改进的SSD算法进行迁移学习训练,采用随机梯度下降算法(SGD)得到最优权重检测模型;最后,将训练好的目标检测模型应用于水面漂浮物的实时检测。
复杂多变的水面环境为采集水面漂浮物图像带来一定的挑战,通过摄像头监控系统获取漂浮物视频,采用视频帧处理获得7 872张漂浮物图像数据。为了进一步提高数据集的多样性,在实验室环境下拍摄2 267张图像数据,并从互联网端下载3 363张图像数据,共采集13 502张漂浮物数据用于模型的训练、验证及测试。
为了降低水面环境对漂浮物图像质量的影响,采用图像降噪算法进行图像预处理,处理过程如图3所示。
图3 图像降噪处理过程Fig.3 Process of image noise reduction processing
通过数据降噪和增强,共获得148 511张漂浮物数据样本图像。同时,按照数据集划分策略[31],将数据集按照7.0∶2.5∶0.5划分为训练集、验证集和测试集,并将数据集转换为TFRecord格式,以提高数据集读取效率。表3为水面漂浮物数据集的统计数据,平均尺寸指边界框的面积在整幅图像中所占的百分比。
表3 水面漂浮物数据集统计Tab.3 Statistic of the floating objects dataset
本文采用的计算设备硬件配置为Inter(R) Xeon(R)E5-2620 CPU和1个NVIDIA RTX3080 GPU,使用Python3 编程语言和TensorFlow深度学习框架构建深度学习模型。针对本文改进的SSD算法,主要对参数Learning rate、Learning rate decay factor、Epoch与Batch size的选择,Learning rate设置了2组备选参数,分别为0.010、0.001;Learning rate decay factor设置了3组备选参数,分别为0.50、0.90、0.99;Batch size设置了3组备选参数,分别为8、16、32;Epoch设置了4组备选参数,分别为5、10、20、40。为验证神经网络中各参数对模型影响的一般规律,设计对比试验,并对比6个方案的检测结果,具体参数设置及检测结果见表4。
表4 不同参数组合对应的检测结果评价Tab.4 Evaluation of test results corresponding to different parameter combinations
对比6项试验模型检测结果发现:在控制Learning rate不变的情况下,当Epoch数值增加,模型使用训练集中的所有样本进行正向和反向传播的迭代次数增加;Batch size增加后一定程度提高了检测精确度。试验1~3中Learning rate设置为0.01,对于模型的梯度下降过程不能较好地收敛到全局最小值;在网络模型训练初始阶段,设置较大的Learning rate有助于模型尽快收敛;但是在训练后期,较大的Learning rate会让梯度下降在权重更新的时候出现波动影响收敛。试验4~6中Learning rate设置为0.001,模型的检测精确度明显提升,在Learning rate decay factor取值0.9时检测精确度最高;若Learning rate decay factor取值过小则不能使模型逃脱局部最小值陷阱,反之容易造成模型跳过局部最小值。基于上述试验得到了模型参数组合,本文将Iteration设置为150 000次,Save interval secs设置为600 s,Weight decay设置为0.000 5,具体参数设置见表5。
表5 模型网络训练参数设置Tab.5 Setting of model network training parameters
网络模型损失函数的变化情况如图4所示。由图4可知,训练损失函数在40 000次迭代内迅速下降,在40 000~60 000次迭代中平缓下降,在60 000次迭代后稳定,之后保持轻微波动。过多的训练会存在过拟合的风险,因此在30 000次迭代后,每20 000次迭代导出权重模型,最终选择其中5个权重模型(11 027.ckpt、38 763.ckpt、49 878.ckpt、87 352.ckpt和102 876.ckpt,编号为1~5)评估和选择最佳的目标检测模型。
图4 网络模型损失函数的变化情况Fig.4 Training loss of improved SSD algorithm
本文5个模型在验证集上对应的性能指标见表6。表6显示:模型1、2和3相较于模型4和5性能较差;对于模型4和5,按照性能指标的优先级选择模型4最优。此外,参考COCO数据集将RIOU设定为0.5。为进一步验证RIOU取值的合理性,将模型4分别在不同的RIOU取值下的准确率、召回率、平均精度和漂浮物误检数量指标进行对比分析。验证集上不同RIOU值下模型的性能水平如图5所示。
表6 验证集上5个权重模型的性能参数Tab.6 Performance parameters of the five weight models on the validation set
图5 验证集上不同RIOU值下模型的性能水平Fig.5 Performance levels of the model under different RIOU values on the validation set
由图5可知:当RIOU设置为0.5时,准确率、召回率和平均精度指标开始呈现下降趋势,漂浮物误检数量呈现显著上升趋势;准确率和召回率分别达到了95.86%和93.64%,而F1值为94.74%,平均精度高达94.26%,验证了改进后的SSD算法网络结构的有效性。
本文在水面漂浮物图像预处理中采用了图像降噪和增强算法,为了分析前后的性能变化,在图像去噪和增强前后分别采用了一组数据集用于训练和测试,结果见表7。由表7可知,模型在图像降噪和增强处理后的性能参数提高约5%,说明预处理有效提高了检测精度。
表7 图像去噪增强前后模型性能参数对比Tab.7 Comparison of performance parameters before and after image denoising and enhancement
为了验证模型对水面漂浮物多尺度检测能力,分别在真实水面环境和实验室环境中检测了不同大小的漂浮物,根据漂浮物的像素面积占图像总像素面积的百分比将漂浮物分为大型(≥25%)、中型(大于5%且小于25%)和小型(≤5%),检测对比结果见表8。
表8 不同种类漂浮物检测参数的统计比较Tab.8 Statistical comparison of detection parameters of different types of floating objects
实验室环境下的检测召回率均高达100%,代表无漏检。在真实水面环境中检测精度下降了约6%,本文采用的DyFPN使每个预测层使用的特征图具有适当的分辨率和强大的语义特征,有效保证了对不同大小漂浮物的检测效果。改进SSD算法的图像识别结果如图6所示。
图6(a)、(c)和(e)均来自测试集,对比识别结果可以发现:在真实水面环境下,图6(d)中漂浮水草的尺寸较小且分散,识别率达到0.988和0.936;当漂浮水草的尺寸增加至图6(b)时,检测精度达到0.806和0.996;当检测区域出现多种且不规则的水草时,改进SSD算法在图6(f)中可以有效识别区域内所有的漂浮水草,但检测精度略低于图6(b)和(d),说明复杂检测环境和漂浮物的不规则变化影响检测精度。
为了进一步验证改进SSD算法的性能,本文选择VGG16、ResNet50、MobileNet 3种网络模型作为SSD算法的特征提取网络,同时利用训练集对上述3种特征提取网络模型进行了对比,并在验证集上验证了不同特征提取网络、模型量化和DW卷积在水面漂浮物检测精度、速度和内存成本等方面的性能,具体结果见表9。
由表9可知:SSD模型采用VGG16和ResNet50作为特征提取网络后,检测精度较低,均低于90%;但ResNet50由于采用了残差结构从而加强了对漂浮物特征的学习,其检测精度要高于VGG16,但该模型由于采用复杂的网络结构造成计算量和内存成本较大。当使用宽度乘数为1和输入分辨率为300的MobileNetV1和MobileNetV2时,检测效率提升了约50%,参数计算量和内存成本分别减少到39.1亿次和29.11 MB,但检测精度降低。MobileNetV2由于采用了残差倒置瓶颈结构的内存推理机制和线性瓶颈,其检测性能在各个方面都优于MobileNetV1。当使用宽度乘数为0.75和分辨率为300的MobileNetV2-DyFPN时,检测精度提高到95.19%,相较于MobileNetV2提高了6.06%,但计算量、参数数量和运算时间由于网络结构复杂而小幅增加,说明MobileNetV2-DyFPN作为SSD算法的特征提取网络能够实现高检测精度和轻量化检测模型的目标。当引入模型量化方法后,GPU和CPU运行速度提高了约4倍,参数数量和内存成本压缩了约4倍,识别准确率仅降低了1.43%,因此改进后的SSD算法能够有效实现检测精度和效率的平衡。当引入DW卷积和降低输入分辨率后,该模型精度达到94.26%,说明在低分辨率图像上保持了良好的检测效果,更接近自动打捞设备的硬件性能和实际需求。整体而言,VGG16作为传统SSD算法的特征提取网络,网络参数量大且模型内存容量大,检测效率和精度较低;引入残差结构的ResNet50加深了特征提取网络,精度提升但网络结构复杂,检测效率低;加入轻量化MobileNetV2的SSD算法,得益于倒置瓶颈结构和线性瓶颈的优势,提升了检测效率,但检测精度降低;在引入MobileNetV2-DyFPN后,SSD算法通过采用自适应选择卷积方法在不增加参数的前提下提升了MobileNetV2的检测精度;在骨干网络MobileNetV2-DyFPN的基础上加入模型量化和DW卷积,通过加速卷积层计算和压缩全连接层的参数,大幅度降低了模型的计算量和模型内存。
结合浙江德清智慧水利项目中实际的水面漂浮物检测任务,检测设备的计算和存储承载能力仅达到20亿次FLOPs和4 GB,为实验室场景下的1/8,摄像头的分辨率为640×480;而实际检测环境下由于天气、光照的影响会降低图像分辨率,对低分辨率输入图像、低性能设备和快速检测的需求更为迫切。因此,基于以上实验结果分析,改进的SSD检测模型具有精度高、体积小、效率高的特点,可以满足水面漂浮物检测的实际需求。
为了再进一步验证改进SSD算法的稳健性,与YOLOV3、Faster RCNN和HOG+SVM模型进行对比,各模型在测试集上的性能参数见表10。由表10可知:改进后的SSD算法在水面漂浮物检测精度和Faster RCNN处于同一水平,而检测速度在GPU支持下约是YOLOV3的2倍,并在运算复杂度、参数数量和内存成本方面都优于其他3类检测模型;传统的HOG+SVM模型检测效果最差,在水面漂浮物检测中存在较多误检和漏检,检测速度最低,说明传统的分类识别方法对水面漂浮物检测对象和环境要求较高,缺乏鲁棒性。综合检测精度、速度、模型内存和鲁棒性来看,改进的SSD算法能够有效用于检测水面漂浮物并准确引导打捞工作工作。
表10 测试集上不同检测模型性能对比Tab.10 Comparison of detection parameters of different methods
本文改进了深度学习SSD算法的基本框架,通过引入轻量化MobileNetV2特征提取网络,在预测层中将深度可分离卷积取代标准卷积,在特征提取层采用动态特征金字塔网络架构,以MobileNetV2-Dy-FPN代替VGG16作为骨干网络,将模型量化方法作为辅助网络,建立了水面漂浮物检测模型,并采用图像降噪和增强算法对原始图像数据集进行预处理;通过对改进SSD算法的训练与验证,以多种性能指标评价模型检测效果。实例应用结果表明,改进后的SSD算法确保了不同分辨率的特征图可以有效检测出目标漂浮物,检测精度达到95.86%,在GPU下检测效率达到64.23 FPS,检测性能满足水面漂浮物实际精度要求。同时,通过模型量化将模型内存成本控制在6.27 MB,有效节约计算资源,满足漂浮物的实时检测需求,具有较高的鲁棒性和泛化能力。
复杂的水面环境对漂浮物检测有重要影响,如在检测附着和遮挡面积大的小目标漂浮物时,检测效果并不理想。同时,拍摄角度与光照等因素也会导致图像误差,会对算法提出更高的要求。未来将从漂浮物图像采集环境和改进图像识别算法等方向进一步研究,以增强算法的实用性和适用性。