基于改进YOLOv4 深度学习的有雾海面船只识别

2023-11-13 16:10孙智文秦志亮彭若松马林伟马本俊刘雪芹赵杰臣
应用科技 2023年5期
关键词:船只先验空洞

孙智文,秦志亮,彭若松,马林伟,马本俊,刘雪芹,赵杰臣

1. 青岛哈尔滨工程大学创新发展中心,山东 青岛 266000

2. 哈尔滨工程大学 青岛创新发展基地,山东 青岛 266000

雾是海上的一种自然天气现象,是低层大气中的水汽经过凝结而形成的。空气对水分的容纳有一定限度,当低层空气温度降低,且水汽总量超过了临界温度条件下的饱和水汽量,多余的水汽便凝结出来与空气中的微小颗粒物相结合而形成雾[1]。雾具备极其多的反射面,光线无法穿透雾,只能被雾所反射回来,所以雾通常呈白色,大大降低了海面上的能见度,为海上交通带来了不便,严重时会对国家和人民生命财产造成巨大损失。此外,由于海雾的存在,利用光学设备所采集到的海面船只图像具有严重的模糊感,这使得计算机视觉识别工作受到极大影响,因此在对图像进行目标检测识别前,需要对船只图像进行有无海雾影响判别,如果有海雾影响需要先对其进行图像去雾处理,再送到目标检测模型中进行船只识别。目前,图像去雾算法根据处理方式不同,主要分为图像增强去雾、图像复原去雾和利用深度学习方法去雾3 类方式[2]。

通过在海岛礁平台安装非合作光学目标安全感知系统,可以对海岛礁周缘海域进行光学监控和实时识别。海上船只识别检测主要有3 种方法:一是基于传统船舶定位识别,主要依靠船舶交通服务(vessel traffic service,VTS)、自动雷达标绘仪(automatic radar plotting aid,ARPA)[3]以及船舶自动识别系统(automatic identification system,AIS)[4]等实现对船舶的识别;二是利用图像特征提取算法提取数字图像相关信息特征,运用机器学习中的分类器对图像提取特征的深度和维度进行分类和识别检测;第3 种是基于深度学习方法进行目标识别检测,不同于前两者,运用深度学习的方法提高了图像特征提取的深度和维度,有着更好的分类效果,具有更高的船只识别率。

本文针对海上船只识别存在的海雾遮挡、目标识别困难等问题,采用优化改进后的数字图像暗通道先验去雾算法和YOLOv4 算法,对改进后的船只去雾和识别检测算法进行了比对实验验证。通过对比实验验证,优化改进后的数字图像暗通道先验去雾算法结合YOLOv4 算法提高了船舶识别精度,达到了实时识别检测的要求。

1 去雾算法与YOLOv4 算法实现

本文依托安装在海岛礁上的全景光学监控系统,采集海岛礁周缘光学视频图像,结合基于图像复原的暗通道先验去雾算法对输入图像进行预先处理,再利用YOLOv4 等深度学习算法完成对海面非合作目标船只的识别检测。

1.1 暗通道先验去雾算法

1.1.1 先验知识

相比于晴天所拍摄的能见度较高的图像而言,雾天所拍摄的图像在一定程度上影响了人们的可视范围,给海上船舶识别造成了不便。将雾天引入图像处理的领域来看,有雾图像相比于无雾图像丢失了许多细节,导致图像失真,为了进一步还原图像的真实效果,在对有雾图像进行特征分析后,可运用暗通道先验去雾算法等方法对图像进行去雾处理。

He 等[5]通过大量统计观察得出一个结论,对于所有无雾图像而言,图像每个像素的红绿蓝三基色通道都存在某个通道的灰度值低于另外2 个通道情况。这说明在一个像素邻域内很可能存在某个像素的红绿蓝三基色通道最小值趋近于0。则其数学式为

式中:Ω(x)为像素x的邻域,y为该邻域内的像素,表示取三通道最小值。基于这个结论,可以直接评估出雾霾的厚度,并恢复出高质量图像,得到高质量的深度图,用于后续图像识别检测。

遍历原始有雾船舶图像的红绿蓝三基色通道,选出所有的最小灰度值,组合成一幅暗通道图像,选取一个大小合适的矩形窗,窗口的中心坐标为像素的坐标。然后求取矩形窗中灰度最小的那个值,将其视为中心像素点的灰度值,从而得到输入图像的暗通道图像,如图1 所示。图1(a)为输入的彩色图像原图,图1(b)为图1(a)经过上述处理后的图像。

图1 彩色图像及其对应的暗通道图像

1.1.2 计算透射率

在计算机视觉领域,对于有雾图像的数学模型定义为

式中:I(x)为观测到的有雾图像;J(x)为需要恢复的无雾图像;A为全局大气光值;t(x)为透射率,描述了光通过介质投射到摄像头过程中没有被散射的部分。

假设大气光值A是一个定值,利用大气光对成像模型做归一化处理,等式两边除以大气光值,得

式中:c为彩色船舶图像的三通道,t(x)为透射率。由于广泛性认为在图像局部区域的雾气较为均衡,并结合前人研究设定透射率t(x)为常数,将透射率定义为t(x),求最小通道和最小值滤波,可得

结合公式

对式(1)变形可得

在现实生活中,无论怎样的天气情况,空气中总是悬浮着一些细小颗粒影响视觉,看远方仍然能感受到一定程度的雾的影响,因此为贴合实际情况,引入了参数 ω保留一些雾影响,此时的表达式为

1.1.3 估计和优化大气光值

大气光值的估计计算也是图像去雾过程中的一个重要环节,其准确性将直接影响雾图成像方程的结果,误差过大将会导致图像的去雾性能降低,如何更加准确地估计出大气光值是去雾算法的一个重点研究内容。在许多场景中,存在类似大气光的白色物体,想要精准地估计出大气光值存在极大的困难,不准确的值会影响去雾的最终效果,出现去雾图像亮度偏暗等现象。因此,针对处理过后的图片出现色彩失真的现象,通过优化算法中大气光值计算方法进行改进。本文改进的大气光值优化方法为:

1)构建一个评价函数F(x),其满足以下表达式:

2)当图片初次进行4 等分后,选择满足评价函数条件的区域并且再次进行四等分,如此迭代,直到确定符合评价函数阈值的候选区域,图像迭代过程如图2 所示。

图2 四分法分割示意

式中n是该区域内像素点的个数。

3)计算候选区域中的差值,对各差值进行比较,最大的作为候选区域,认为候选区域内的像素平均值是大气光值的估计值[6],定义S(x)是该区域中所有像素值的累加结果,则大气光值A的表达式为

1.1.4 图像复原

当透射率值较低时,会导致J的值偏大,可通过设置阈值T0来忽略透射率最小值,当t(x)

1.2 改进后的YOLOv4 目标检测算法

1.2.1 YOLOv4 目标检测算法及优化

Joseph Redmon 于2015 年发表了一步走策略端到端的实时目标检测算法YOLO(you only look once)。YOLO 系列算法是基于一个单独神经网络达到了由输入的采集图像到输出图像目标类别位置的目的,没有单独的求取感兴趣区域的过程,而是把目标检测过程中识别、定位类比为一个回归过程进行求解[7]。YOLOv 系列目标检测算法是和单步多框目标检测算法(single shot multibox detector,SSD)同为单阶段目标检测算法,具有运算速度快的特点,在经过一系列改进后,除了运算速度的进一步提升,其识别准确率也有了极大提高[8]。

YOLOv4 是在YOLOv3 基础[9]上对其网络模型结构和训练技巧等方面进行了一些改进,使得检测性能得到进一步的提升,其总体检测思路没有发生太大变化。YOLOv4 完整网络框架如图3 所示,主要包含CBM、CBL、Res unit、CSPX、空间金字塔池化网络(spatial pyramid pooling,SPP)共5 个基本组件。CBM 为Yolov4 网络结构中的最小组件,由Conv+Bn+Mish 激活函数三者组成;CBL 由Conv+Bn+Leaky_relu 激活函数三者组成;Res unit 借鉴了Resnet 网络中的残差结构,让网络可以构建的更深;CSPX 借鉴了CSPNet 网络结构,由3 个卷积层和X个Res unint 模块Concate 组成;SPP 部分采用池化核大小分别为1×1、5×5、9×9、13×13 的最大池化的方式,进行多尺度融合。

图3 YOLOv4 网络模型

相比于YOLOv3 算法,YOLOv4 实现了算法上守正出奇的创新和各种先进算法的集成创新。在结构方面,YOLOv4 主干特征提取网络由Darknet-53 改为了CSPDarknet-53,将resblock_body的结构进行修改,使用了CSPnet 结构。同时在对CSPdarknet53 的最后一个特征层进行3 次卷积后新增了SPP[10]结构,分别利用4 个不同尺度的最大池化进行处理,极大地增加感受野,分离出最显著的上下文特征。YOLOv4 在训练方面,还引入了Mosaic、DropBlock 正则化[11]、类标签平滑[12]、Mish 激活函数[13]、CIoU-loss[14]等技巧。总的来说,YOLOv4 通过引入各类前人的研究技术并且将其组合,使YOLOv4 实现了速度和精度的平衡,具有更强的泛化性,更适合于工程应用。

本文检测目标为海上非合作目标船只,在检测识别的过程中容易受到海面复杂气象条件、复杂背景、光学图像船只尺度大小不一、图像分辨率不高和海浪遮挡等不利因素的干扰,影响船只整体信息的获取。鉴于此,针对特定船只检测识别的场景,本文在YOLOv4 算法的基础上进行进一步的优化,首先在YOLOv4 主干特征提取网络中引入了混合空洞卷积方法[15],以获得更多尺度的信息,增大特征图的感受野;其次根据本文船只数据集的中实际船只的尺寸大小,利用K-means++聚类计算先验框[16]提前确定合适大小的先验框,节省了大量计算资源。在进行计算验证过程中,采用64 位windows10 操作系统,深度学习框架为Tensorflow。

1.2.2 混合空洞卷积方法

浅层的特征图有利于获取更加丰富的位置信息,同时也有利于对细小的目标进行检测识别,而深层的特征图往往拥有更多的语义信息和更广的感受野[17]。为了获取更大的感受野,通常通过池化层和卷积层来达到目的,但这样在提供更大感受野的同时,其分辨率会进一步降低,容易导致空间信息和数据丢失。

为了进一步增加感受野,并且保证原特征图的大小恒定,从而代替原有的上采样和下采样操作,本文引入了空洞卷积方法。相比于普通卷积的不同,空洞卷积(dilated convolution)引入了扩张率[18](dilation rate),扩张率不同,其感受野大小也不同,普通卷积方法和空洞卷积方法对比如图4 所示。

图4 普通卷积和空洞卷积的对比

由图4 可知,卷积核大小同为3×3,但分别起到了5×5和7×7的卷积效果,所以感受野有所增大,并且值得肯定的是参数量并没有增多。具体的计算公式为

式中:k为空洞卷积的卷积核,k′为等效卷积核,d为空洞数,RFi+1为第i+1层的感受野,RFi为第i层的感受野,Si为前面总层数的步长之积。图5 为连续做3 次空洞率为2 的空洞卷积结果,图6 为做3 次空洞率分别为1、2、3 的空洞卷积结果。

图5 连续做空洞率为2 的空洞卷积示意

图6 空洞率分别为1、2、3 的空洞卷积示意

在空洞卷积过程中,输入的采样变得十分稀疏,感受野不连续从而导致局部信息丢失,较远距离上的一些信息可能并无关联。空洞卷积通过少数几次的连续卷积后就能生成较大的感受野(如图5 所示),不利于对小尺度目标的检测,使得在检测目标时不能同时兼顾大小目标。基于此,改进的YOLOv4 运用了混合卷积模块,将不同空洞率的空洞卷积(如图6 所示)进行融合,增加特征层的感受野并且不改变特征图分辨率。改进的YOLOv4 主干特征提取网络如图7所示。

图7 改进YOLOv4 的主干特征提取网络

1.2.3 K-means++聚类计算先验框

在YOLOv2 到YOLOv4 算法中,为了提高检测模型的精度,利用K-means 聚类的方法来确定先验框,但是也存在一些问题,例如:K 值是人为事先给定,许多时候难以确定具体应该分为几类;初始聚类的中心坐标选择存在一定难度,好的初始值有利于得到有效的聚类结果,反之则无法得到;K-means 聚类算法需要对样本不断地进行分类调整,聚类中心也在不断更新,所以耗费了大量的计算资源。

针对K-means 存在的问题,本文在改进的模型当中采用了K-means++聚类算法,具体实现流程及2 个算法流程间对比如图8 所示。Kmeans 聚类算法中利用欧几里得公式计算真实框和先验框的距离,在本模型中为了适应船只数据集中船只多尺度的特点,采用先验框和聚类中心的交并比(intersection over union,IOU)作为Kmeans 聚类的参数。

图8 K-means 和K-means++聚类算法对比

具体计算公式为

式中:b为样本数据集的先验框,c为船只聚类中心。

经过计算,得到改进YOLOv4 算法的候选框初始尺寸为[(21 11),(37 16),(51 32),(66 20),(81 56),(108 32),(176 51),(214 91),(445 152)]。

2 实验结果分析

2.1 去雾算法对比及结果分析

本文对同一组有雾图片分别运用直方图均衡去雾算法、Retinex 去雾算法、AODNet 去雾算法、暗通道先验算法和改进的暗通道先验算法进行去雾处理,针对实验结果进行了分析和对比,不同算法去雾效果对比如图9 所示。通过图9 从视觉效果角度对去雾效果进行分析得到:

图9 去雾效果视觉对比

1)基于直方图均衡的去雾算法在一定程度上改善了图像去雾的视觉效果,增强了图片的信息特征,但图像色彩失真较为严重,具有明显的块效应。

2)基于Retinex 去雾算法相比于直方图均衡去雾算法有了明显的效果改善,但仔细观察可以看出,Retinex 去雾算法对色彩的还原较差,并且存在图像降质的现象。

3)基于深度学习的AODNet 使用的数据集中,许多有雾场景是通过合成得来,其去雾效果的适应性一般,很多图像去雾还原不够准确,部分图像去雾不明显。

4)暗通道先验去雾算法对大部分的有雾图像有着较好的去雾效果,但是在包含大区域天空的图像去雾后会存在光晕现象,并且处理过后的图片亮度经常偏暗。

5)改进后的暗通道先验去雾算法无论是在去雾效果还是在色彩还原上都表现出了最佳的效果,但是针对浓度过大的雾无法实现完全去雾。

由于视觉分析可能带有主观性,因此引入图像质量评价指标,用客观的数据评价各图像去雾算法的实际效果。具体客观评价指标为图像信息熵、标准差、灰度均值、平均梯度。计算过程中,利用信息熵来表示图像所包含的信息量,图像信息熵越大,图像所包含的细节信息就越丰富;图像标准差是用来反映图像的像素平均值和该图像像素值的离散程度,标准差越大,图像的对比度就有所增加;灰度代表图像在各像素点的亮度,反映图像色彩深浅,灰度均值代表某一灰度图中各像素点灰度值的平均值,灰度均值越大,图像就越亮;平均梯度是用来描述图像清晰度的一个指标,通常认为平均梯度值越大,图像的清晰度就越高,包含更多的图像信息。

分别选取A、B、C 共3 个图作为对比实验对象进行计算,相关评价指标样图和结果见图10 和表1~3。

表1 图A 客观评价指标

表2 图B 客观评价指标

表3 图C 客观评价指标

图10 评价指标样图

相较于原图而言,经过去雾算法处理过后的图片从整体上来说,信息熵有所增加,说明图像中包含更多的细节信息;标准差也有所增加,说明图像质量在一定程度上有了提升;平均梯度也是呈上升趋势,提高了图像的清晰度。由于样本图像数量受限,不能完全保证经过改进的暗通道先验算法处理过后的图像在各个参数都处于最佳,但仍能看出一定趋势,改进的暗通道先验去雾算法处理过后的图像,在参数方面表现优异。

2.2 船只识别算法对比及结果分析

通过网上下载、现场实拍以及部分开源船只数据集,收集筛选了船只图像1 200 张,利用labeling 软件对船只进行标注,得到VOC2007 格式的数据集。其中,选取0.8 比例的图片作为训练集,0.2 比例的图片作为验证集。

为了横向对比Faster-RCNN、YOLOv4 以及改进YOLOv4 算法的有效性,本次对比实验利用平均检测精度(average precision,AP)、均值平均检测精度(mean average precision,mAP)对检测结果进行识别效果评价,测试图片主要包含渔船、快艇、货船以及客轮共4 类。同时通过训练好的Faster-RCNN(faster regions with CNN features)算法、YOLOv4 和改进的YOLOv4 模型对其进行检测识别,并且将阈值设定为0.5,其结果如表4 所示。

从表4 可以看出,改进后的YOLOv4 算法具有最高的mAP,总体上AP 值高于其余2 种模型,船只检测性能优于Faster-RCNN 算法和YOLOv4算法。其中改进YOLOv4 算法的mAP 为93.18%,比原YOLOv4 算法高出0.33%,比Faster-RCNN 算法高出28.38%。分析对比4 种船只的检测结果,对快艇的检测精度最高,考虑到快艇的形状特征以及颜色特征较为明显,并且在数据集中快艇的数量最多,因此具有较好检测识别效果;而客轮的样本最少,并且其形状特征不如另外3 种船只分明,因此其识别率最低,从此可以看出样本均衡性对模型检测性能具有重要的影响。

将Faster-RCNN、YOLOv4 以及改进YOLOv4船只检测模型运用到实际场景中,分别选取单一船只场景和多船只场景进行对比,其检测结果如图11 所示。

图11 3 种算法检测效果对比

对图11 进行分析可以看出,改进后的YOLOv4船只检测模型具有最佳的检测性能,具有最高的船只识别率,Faster-RCNN 船只检测模型的漏检率最高。改进后的YOLOv4 算法在小尺度目标船只识别方面有所进步,但是更小尺度的船只以及遮挡较为严重的船只仍然难以识别,出现了漏检的情况。

为了进一步验证海雾对船只检测识别的影响,利用改进后的YOLOv4 算法对其进行了实验,分别对有雾图像和去雾图像进行船只检测识别。从图12 中可看出,去雾前部分船只未能被识别,但去雾后识别到的船只数量增加;对单一船只的识别准确率也有所提升。但是在实验中发现,海雾浓度过大对船只检测识别的影响是不可逆的,经过去雾处理后仍然无法实现对船只的检测识别。

图12 图像去雾前后船只检测识别效果对比

在实验过程中,对Faster-RCNN、YOLOv4 以及改进YOLOv4 的算法检测时间进行了统计分析,结果如表5 所示。Faster-RCNN 算法的平均运行时间最长,平均每张图片需要花费1.21 s,YOLOv4 平均每张图片需要花费0.385 s,改进的YOLOv4 算法平均每张图片需要花费0.316 s。

表5 3 种模型的平均检测时间s

针对海上非合作目标船只检测识别的场景来看,Faster-RCNN 船只检测模型的识别速率较慢,难以满足本场景下的实施目标检测要求,并且其精度相比于本文算法也有所不足。而基于改进YOLOv4 的目标检测算法可以做到实时检测的同时兼顾了检测精度,具有良好的工程应用性。

经过大量实验后发现,改进后的YOLOv4 算法能够基本满足对海上非合作目标船只进行识别的功能,但若是海上天气过于极端,例如海雾较大、可视距离极近,那么图像去雾无法完成,同时也无法完成对船只的识别,后续需要对其继续进行研究,提出新的解决方案。

3 结论

1)本文对基于图像复原的海上图像去雾算法进行了研究,对暗通道先验算法进行了优化改进。通过和几种主流去雾算法的去雾效果进行计算对比,在薄雾情况下,改进后的暗通道去雾算法的去雾效果和图像色彩还原均表现出了极佳效果。

2)本文对YOLOv4 检测算法进行了优化改进。改进YOLOv4 算法中运用空洞卷积代替普通卷积,引入了K-means++聚类算法,节省了大量的计算资源。将Faster-RCNN 模型、YOLOv4 模型和改进YOLOv4 模型进行计算对比,比较其mAP值。改进后的YOLOv4 算法具有较高的检测精度和较好的实时性,为海面船只实时识别提供了一定的技术支持。在计算过程中,改进YOLOv4 算法对数据集中4 种类型船只的检测精度存在一定差异,说明样本均衡性对改进算法的船只识别检测精度具有一定影响,数据集需要注意样本均衡。

猜你喜欢
船只先验空洞
基于无噪图像块先验的MRI低秩分解去噪算法研究
基于自适应块组割先验的噪声图像超分辨率重建
空洞的眼神
基于平滑先验法的被动声信号趋势项消除
用事实说话胜过空洞的说教——以教育类报道为例
先验的废话与功能的进路
国产多波束系统在海上失事船只探测中的应用
臭氧层空洞也是帮凶
孟加拉船只“罢工”
班有活宝