基于YOLOv4的水面目标快速检测*

2022-05-11 09:34王治国
舰船电子工程 2022年4期
关键词:卷积水面函数

王治国 王 勇 谭 笑 张 欢

(海军工程大学 武汉 430033)

1 引言

近年来,随着我国海洋经济的不断增长,海上交通要道的地位越来越重要,海洋权益的维护越来越迫切,为加快海洋经济发展,国家提出了南海战略发展思路。水面目标快速检测是在港口监控、渔业监察、海事管理、军事情报分析等领域具有重要的地位和作用[1-4],在计算机视觉领域,目标检测与识别是其重要的任务,运用各种算法实现目标特征表达,完成影像中目标位置确定和类别识别。传统的目标检测是依赖人工设计影像特征,具有较大的局限性,深度学习技术能够自动完成影像特征提取,可以大幅提高检测精度,但检测速度方面往往需要依靠强大的GPU硬件支持才能完成,因此,如何提高影像中目标的检测速度与精度一直是各国学者研究的热点问题。

基于深度学习的目标检测算法主要分为两大类,一类是one-stage检测算法,另一类是two-stage算法。one-stage类检测算法不生成候选框,直接将目标框的检测定位问题转化为回归问题,完成目标检测需要特征提取、目标分类和定位框回归三个步骤,代表性算法有 YOLO 系列算法[5~8]和 SSD[9]算法;two-stage类检测算法采用一定的方法获取待检测目标的候选框并将其作为样本,然后由卷积神经网络完成样本分类,完成目标检测主要有四个步骤:基于卷积神经网络的特征抽取、候选框生成、目标分类和定位框回归,代表性算法有RCNN[10],Fast RCNN[11]、Faster RCNN[12]、Mask RCNN[13]等 。在检测精度方面通常two-stage类算法优于one-stage类算法,在检测速度方面通常后者优于前者。近年来,国内外学者提出了许多目标检测算法,图1为其中典型的算法代表。

2 YOLO算法简介

2.1 YOLO算法基本思想

与采用滑动窗口和RPN网络的方法不同,YOLO算法将目标检测当做是一个回归预测问题,直接得到目标的回归框和属于某一类别的概率。其图像的多尺度特征提取采用卷积神经网络实现,特征融合采用全连接网络层,目标边界框和类别概率由预测网络完成[14]。YOLO算法将影像分为s*s个窗格,每个窗格用于检测一个目标,即检测中心点落在该窗格的某个目标,每个窗格还将预测N个边界框和边界框的置信度。

2.2 YOLO系列算法

YOLO算法从提出到现在,已经有YOLOv1、YOLOv2(YOLO9000)、YOLOv3、YOLOv4等多个版本。YOLOv1算法的网络结构参考GoogLeNet模型,包含卷积层24个和全连接层2个,该网络结构中前20个卷积网络参数是在ImageNet1000 class数据集上预训练得到的,在预训练网络中增加4个卷积层和2个全链接层,并随机初始化权重。

YOLOv2是针对YOLOv1在目标定位不够准确,召回率较低的问题做了相应的改进,改进的策略包括批归一化(Batch Normalization)[15]、高分辨率分类器(High Resolution Classifier)、卷积锚框(Convolutional with Anchor Boxes)、维度聚类(Dimension Clusters)、精细特征图(Fine-Grained Features)、多尺度训练(Multi-scale Training)等,基础网络采用Darknet-19,这些改进大部分都是在借鉴以前相关问题的改进方法基础上综合处理得到的。

YOLOv3采用Darknet53作为基础网络,相对于ResNet152和ResNet101,该网络在计算精度方面差不多,但由于层数较少,因此检测速度更快。YOLOv3采用Darknet53的前52层,大量使用残差的跳层链接,采用卷积中的stride操作完成降采样,而不是使用传统的pooling层操作,降低了池化带来的梯度负面效果。为了增强对小目标的检测效果,采用了上采样和融合层操作等改进策略。

3 YOLOv4网络结构

YOLOv4针对目前大部分高精度目标检测算法实时运行能力差、训练需要多个GPU才能完成的问题,构建了仅在单个GPU上就能训练和实时运行的目标检测算法。该网络采用CSPDarknet53作为基础网络,并在ImageNet上进行预训练得到模型参数,使用SPP、PAN模块实现不同位置特征的融合,最后采用YOLOv3进行预测。YOLOv4的创新主要包括以下四部分。

一是在网络的输入端,对样本采用Mosaic数据增强。Mosaic数据增强对原始影像采取随机缩放、随机裁剪、随机排布的方式进行拼接,一方面丰富了训练样本集,随机缩放增加大量小目标样本,更加强了网络的鲁棒性,另一方面可以减少训练队GPU计算资源的需求量。

二是将各种新的方式组合形成功能强大的主干网络。CSPDarknet53[16]是在 Yolov3 主干网络Darknet53 的基础上借鉴 CSPNet[17]的经验生成的Backbone结构,其中包含了5个CSP模块[18],每个CSP模块前面的卷积核的大小都是3*3,stride=2,可以起到与polling层类似的下采样的作用。采用CSPDarknet53网络结构一方面增强了CNN的学习能力,在轻量化的同时保持准确性,另一方面降低了计算瓶颈和内存消耗。在CSPDarknet53主干网络中采用2019年提出的Mish激活函数[19],其余的网络则仍然使用leaky_relu激活函数,这样的策略可进一步提高检测精度。YOLOv4中还采用了2018年提出的Dropblock策略,与传统的Dropout随机删除减少神经元的数量使网络变得更简单不同,Dropblock是对整个局部区域采取删减丢弃操作。该方法借鉴了cutout数据增强方式,实验结果表明Dropblock的效果优于Cutout。

三是采用空间金字塔池化(Spatial Pyramid Pooling,SPP)结构、FPN+PAN结构作为Neck。SPP[20]模块由四个并行的分支构成,分别为kernel size为5*5、9*9、13*13的最大池化和一个跳跃连接,该模块实现了局部特征和全局特征融合,更新了特征图的表达能力,对于影响中存在大小差异较大目标的情况检测效果明显提升。FPN+PAN策略是借鉴2018年CVPR会议论文中PANet,该方法主要应用于图像分割领域,FPN[21]自顶向下将高层的特征信息通过上采样的方式进行传递融合,得到进行预测的特征图。

四是预测阶段使用 DIOU_Loss[22]损失函数,预测框筛选采用DIOU_nms。目标检测中损失函数包括分类损失函数和回归损失函数,回归损失函数常用IOU_Loss,该函数存在当预测框和目标框不相交时无法反映两个框距离的远近且此时损失函数不可导、无法区分不同相交状态等问题,而改进的DIOU_Loss增加了重叠面积、中心点距离和边界框宽高比尺度信息等描述,提高了检测精度、加快了检测速度。传统的预测框筛选采用nms方式,而DIOU_nms方法考虑了边界框中心点的位置信息,在重叠目标检测中表现更优。

YOLOv4将近年来深度学习领域最新的研究应用到了YOLO算法中,进一步提高了YOLO的检测精度和效率。

4 基于YOLOv4的水面目标检测

4.1 实验环境

硬件环境:Intel(R)Core i7-9700 3.0GHz 8核,ARM 16GB,GPU NVIDIA GeForce TRX 2060 SUPER;软件环境:NVIDIA CUDA 11.1.0,CUDNN 8.0.4。

4.2 数据集

从谷歌地图中截取60张港口影像,采用开源标注软件Labelimg标注器对图片中的航母、水面舰船和潜艇进行标注,部分影像如图2所示。

图2 水面目标检测训练数据集

4.3 网络训练

目标检测任务中,设置适当的anchor对于提升检测精度具有重要作用。根据数据集中目标的大小可以确定anchor的预设值,并根据预设anchor计算召回率,若召回率大于0.98,则不用优化,直接返回,如果小于0.98,则利用遗传算法与k-means重新计算anchor预设值。经过计算,本数据集的anchor预设值分别为[10,30,26,16,8,62]、[70,19,22,107,40,59]和[115,44,70,130,199,155]。每次训练输入的影像数设为64,每次训练输入影像数据的1/32。

训练过程中Loss变化曲线如图3所示,可见在5400次迭代后损失值趋于平稳。

图3 Loss值变化曲线

4.4 实验结果

利用训练得到的网络进行测试,航母目标检测正确率为99.88%,水面舰船目标检测正确率为98.73%,潜艇检测争取率为70.97%,总的mAP为89.86%,检测速度为15fps。从检测结果可以看出,航母和水面舰船的检测正确率都高于98%,表明了YOLOv4算法在水面目标检测方面的有效性,潜艇的检测正确率较低,是由于数据集中潜艇的训练数量较少,影响了检测准确率。部分结果如图4所示。

图4 水面目标检测结果

5 结语

针对水面目标检测问题,本文将YOLOv4网络模型引入水面目标检测任务。简要介绍了YOLO系列算法的特点,重点分析YOLOv4算法在四个方面的改进策略,并在自建的数据集上验证了YOLOv4算法在水面目标检测的可行性。后续工作将进一步充实数据集资源,收集更多种类和数量的目标影像资料,提高模型的检测准确率和鲁棒性。

猜你喜欢
卷积水面函数
基于全卷积神经网络的猪背膘厚快速准确测定
基于图像处理与卷积神经网络的零件识别
水黾是怎样浮在水面的
基于深度卷积网络与空洞卷积融合的人群计数
卷积神经网络概述
关于函数的一些补充知识
高中数学中二次函数应用举隅オ
无独有偶 曲径通幽
为什么木头可以浮在水面上?
一块水面