一种海上弱小运动船舶实时检测方法
2021-09-30周薇娜丁豪文
周薇娜, 丁豪文, 周 颖
(上海海事大学 信息工程学院,上海 201306)
在海事搜救、海上交通管理、无人船等海事重要应用领域,弱小船舶目标的实时检测极为重要,其直接影响监控系统的性能。但弱小船舶目标由于目标的面积小,可利用信息少,且易受海上复杂多变的天气环境影响等噪声干扰,使得常见的针对普通视觉目标的检测算法难以达到令人满意的结果,可靠性和实用性均较差。
常用的目标检测算法根据传感源的不同可以分为红外目标检测和可见光目标检测。随着可见光传感器的分辨率越来越高,成本越来越低廉,在绝大多数情况下,可见光目标检测具备更多的优势。可见光目标检测方法依据算法的出现时间又可分为传统方法和基于深度学习的方法。传统目标检测算法中阈值分割类算法[1]适合背景较为单一的图像,在背景比较复杂的情况下效果并不理想。特征匹配类算法[2-8]通过滑动窗口进行特征提取,将提取到的特征用分类器分类,提取的特征包括SIFT、HOG和Haar等,常用的分类器有SVM、Adaboosting和RF等。但是这种滑动窗口的区域选择策略没有针对性,计算量特别大,手工设计的特征取样器也没有很好的鲁棒性。基于深度学习的目标检测算法近年来在计算机视觉任务方面取得了重大突破[9-11],其检测精确度明显优于传统检测方法。基于深度学习的目标检测算法大致可分为两类。一类是先得到候选区域再对候选区域进行分类和边框回归,经典的基于候选区域的目标检测算法有R-CNN、Fast R-CNN和Faster R-CNN等[12-14],该类算法计算量大,无法达到实时检测目标的要求;另一类是直接用回归方法预测边界框,只需要在输入的图像上产生确定数目的候选窗口,然后对这些候选窗口进行判别,比较典型的算法有YOLO(you only look once)[15]和SSD(single shot multibox detector)[16]。SSD算法虽然检测精度较高,但是检测速度对设备要求较高。文献[17]的研究表明,YOLO算法能够在保持与SSD同等级别检测精度的前提下大幅度提高目标检测速度。YOLO算法从另一个思维角度解决了候选区域选择的问题,使目标检测的精确度和速度进入一个新高度的研究层次。然而对于弱小目标而言,由于小目标的特征少,而深度学习计算量又较大,基于YOLO的检测准确性和实时性仍有不足。
基于以上分析,本文针对海上弱小目标特点,综合YOLO的优缺点,在3个方面对YOLO算法进行了改进:① 适当减少输出特征图数量,大幅削减权重文件大小,显著提高检测速率;② 针对性地减少网络层数,选择性剔除部分残差网络,并在浅层加入新的网络结构,提高对小目标检测能力;③ 加入 SELU[18]激活函数,使模型训练收敛速度更快,对噪声更具鲁棒性。
1 本文提出的算法
YOLO算法目前应用较为广泛的有3类,分别为YOLOv2[19]、YOLOv3[17]和YOLOv3-tiny[20]。但是研究发现,YOLO算法框架对于小目标的检测能力有限。YOLOv2是一种基于全卷积网络[21]的检测框架,只利用卷积神经网络的最后一层检测不同大小的目标,该特性限制了其对于弱小目标的检测能力。若要检测弱小目标,需要一张足够大的特征图来提供更加精细的特征,进行更加密集的采样,才能得到更加丰富的语义信息来区分背景和目标;YOLOv3算法虽然采用了多尺度检测,但其使用的Darknet-53特征提取网络深度过大,不仅容易失去对弱小目标的细节信息,产生过拟合现象[22],还会使检测速率严重下降。YOLO-tiny算法为YOLO的简化版本,其检测精确度也不容乐观。
本文提出的基于改进YOLO算法的海上弱小运动船舶实时检测网络的整体结构如图1所示。此结构由8层卷积神经网络组成,前5层网络主要用于提取目标的有效特征;后3层为检测层,采用的多尺度预测策略如图2所示。每个检测层又通过3种尺寸的候选框预测目标的坐标、目标置信度值和类别概率。最后比较9种尺寸的检测结果,使用非极大值抑制方法确定最终检测结果。
图1 本文提出的总体网络结构
图2 多尺度预测目标
本文从图像模型尺寸、网络的基本单元设计和整体结构以及激活函数改进3个方面对本文所提算法的有效性进行全面分析。文中对算法性能的评判,主要以常用的mAP(mean average precision)、FPS(frame per second)作为主要的衡量指标。其中:mAP反映了目标的检测精度;FPS为每秒的检测帧数,代表目标检测速度。计算公式为:
(1)
(2)
其中:A为单一类别目标的检测精度;R为数据集中某个类别所有目标的数量;n为数据集中所有目标的数量;j为目标的序号,若与真实值相关,Ij为1,否则Ij为0;Rj为前j个目标中相关目标的数量;q为某一类别;QR为总的类别数量;mAP值m介于0~1之间,值越大表示该算法的检测精度越高。
1.1 图像模型尺寸
输入图像的模型尺寸会影响算法计算量和检测精确度,选择合适尺寸的图像模型,既能够达到实时检测的目的,又能保持较高的检测精度。由图1可知,前5层有5次下采样,每次采样步长取2,故网络的最大步幅为32,因此可将输入的图像模型尺寸定为32的倍数。结合实际图像模型尺寸出现的合理范围以及一定取样间隔,对5种尺寸的输入图像进行检测性能的比较,见表1所列。比较时,训练和检测使用的数据集和硬件设备、系统环境等都完全相同。这5种尺寸分别为32的10倍、13倍、16倍、19倍和22倍。
表1 不同图像模型尺寸对检测结果的影响
由表1可知,检测速度与图像模型尺寸大致成反比,图像分辨率越高检测速度越慢,而检测率呈现双峰状态。考虑到实时性的要求,排除705×705的情况,在分辨率416×416及其附近的图像模型更符合实时高效检测的需求。因此在416×416附近,即取32的11倍、12倍、13倍、14倍和15倍大小的图像,比较图像模型尺寸对检测性能的影响,见表2所列。
表2 416×416左右尺寸的输入对检测结果的影响
由表2可知,图像尺寸为416×416时的mAP值仍是最优的,且FPS也表现良好,能达到实时需求,故本文结构中的输入图像模型尺寸统一为416×416像素。
1.2 网络基本单元和网络结构
网络基本单元是组成庞大神经网络的基石,其结构直接影响网络的性能。根据弱小船舶目标特点,本文采用了一种新的网络基本单元,如图3所示,由2个3×3和2个1×1卷积核组成,形成一个3-1-1-3结构。此结构的设计理由如下:① 3×3卷积层后连接一个1×1卷积层,这样可以增加非线性而不改变卷积层的感受域[23],从而提升网络的表达能力;② 1×1卷积层后再连接一个1×1的卷积层可以维护小目标的细节信息。此外,1×1卷积核还有降维的作用,可大幅减少网络参数,从而提高模型的检测速度。图3中:32-d为上一层输出的32张特征图;conv为卷积;3×3、1×1为该卷积中卷积核大小;数字64和32为输出的特征图个数。
图3 本文网络基本单元
海上弱小船舶目标检测的关键难点在于目标面积占整幅图像的比重非常小,目标信息少。例如,相对于1 080×1 080像素的图像,小目标面积可能为80×40像素,仅占整幅图像的3‰。而另一方面,对于常见网络模型,如VGG-16[24]、GoogleNet[25]、ResNet和DarkNet等,前几级网络主要用于提取目标特征,后几级重在对特征的识别。针对小目标的特点和深度学习网络的特性,过深的网络结构容易使小目标细节特征信息丢失,同时巨大的计算量和存储空间,也会影响算法的整体检测速度。因此,网络的层级深度、网络基本单元的位置,以及输出特征图个数均会对检测结果有影响。
本文所提出的3-1-1-3网络基本单元的作用是增强对弱小目标特征信息的提取。由于第1层网络输出的特征图噪声较多,不适合进行弱小目标有效信息提取操作,而第5层输出的是13×13像素的特征图,弱小目标的有效信息已基本消失,故不单独在第1层或第5层加入3-1-1-3结构型网络基本单元,而通过在第2、第3和第4层加入此网络基本单元的方法来提高小目标的检测能力。经检测,此结构的网络mAP值可达93.5%,且FPS也可以达到45 帧/s-1,满足实时要求。
1.3 激活函数
激活函数可以为网络加入非线性因素,将激活的神经元特征通过函数保留可用的有效特征,去除数据中的一些冗余,并映射出来,增强卷积神经网络的表达能力,在整个网络结构中也起到了重要的作用。目前常用的激活函数有5种,分别为Loggy[26]、ReLU[27]、LReLU[26]、ELU[28]、SELU,激活函数及其收敛曲线如图4所示。
图4 5种激活函数及其收敛曲线
从图4a可以看出,除ReLU函数在输入为负的情况下输出为0,表现较差外,其他的激活函数都给输入负值时赋予一个非零斜率。LReLU为YOLOv2算法和YOLOv3算法中使用的激活函数,它可以避免梯度消失,但是需要更多的重复训练,对比选择合适的学习率。
SELU激活函数是对ReLU函数的改进,其避免了ReLU梯度消失的问题,但仍存在梯度饱和与指数运算的问题。SELU激活函数的数学定义如(3)式,其导数如(4)式:
(3)
(4)
其中,α、λ为可调整的参数。当λ为1时,此函数即为ELU激活函数。相比于LReLU、ELU和Loggy函数,SELU激活函数能够做到在不激活状态下对噪声不敏感。这是由于输入为负时SELU函数有软饱和的特点,非常有益于检测容易受噪声影响的弱小运动目标。此外上述3个激活函数的正半轴斜率为1,当方差很小时,容易出现梯度消失的现象。反观SELU函数的正半轴斜率大于1,这样可以在方差过小时将其放大,有效避免梯度消失。
从图4b可以看出,SELU函数无论是在收敛速度方面,还是在迭代到2×104次的交叉熵损失函数值的大小方面都是最优的。因此,本文算法中将SELU激活函数取代原YOLO算法中的LReLU,以达到更好的结果。
2 实 验
实验的硬件配置为IntelCPU i7 8700k@ 3.7 GHz六核处理器、12 G显存的单块NVIDIA TITAN XP GPU显卡、64 GB RAM、64位操作系统的服务器,软件环境为Ubuntu16.04系统。船舶数据集主要来源于采集的船舶小目标图像和新加坡海事数据库(Singapore maritime dataset:SMD)[29]。数据集包括360张含船舶图像和1 046个船舶目标,其中船舶目标包括帆船、商船、军舰和游轮等,都具有很好的弱小船舶目标特性。训练时随机挑选其中280张图片作为训练集,80张图片为测试集。预训练选用通用目标数据库MSRA10K[30]。输入图像分辨率统一设置为416×416像素,实验对比时,训练采用统一参数。
训练过程中本文使用随机梯度下降法,设定初始学习率为0.001,动量为0.9,权重衰减为0.005,批大小为16,使用0.001 的初始学习率迭代训练数据12 000 次,然后再用0.000 1 的学习率迭代到18 000 次,最后用0.000 01 的学习率迭代到21 000 次。正负样本的IOU(intersection over union)设置为0.5,即大于此阈值就设定为正样本,否则设定为负样本。
本文提出的网络共有3个目标检测层,见表3所示。
表3 候选框的宽度和高度
检测尺寸分别为13×13像素、26×26像素和52×52像素。对于每个检测层,分别使用3种尺寸的候选框,即共9种尺寸的候选框通过聚类船舶图像的真实参考值来检测目标。
2.1 各检测算法指标对比
将本文提出的网络结构与在目标检测方面目前表现最佳的YOLO系列中的YOLOv2[17]、YOLOv3[19]和YOLOv3-tiny[20]网络进行对比,见表4所列。从表4可以看出,本文所提检测算法拥有最高的检测精确度,且能满足实时要求,在整体性能上要优于其他算法。
表4 检测算法比对
2.2 检测效果对比举例
为直观观察各目标检测算法对不同噪声背景图像的检测效果,本文选取了4种具有代表性复杂噪声背景的具有弱小船舶目标的图像作为检测对象,如图5所示。其中:图5a受海天线、光点、海浪杂波、传感器噪声等影响;图5b中有浮标、云和海浪等干扰物,背景较为复杂;图5c中同时出现大的船舶目标干扰;图5d为恶劣天气中的目标图像,背景噪声极大,待检测目标不明显。这几张图像中,经人眼所能分辨出来的最小的目标约占整幅图像3‰~8‰,基本符合弱小目标的特性。
图5 不同噪声背景图像
对4种不同噪声背景图像的检测效果如图6所示。
图6中:第1列所示为YOLOv2对4种不同背景图像的检测结果;第2列所示为YOLOv3的检测结果;第3列所示为本文提出网络模型的检测结果。从图6可以看出:YOLOv2算法容易漏检小目标;YOLOv3算法也存在一定程度的漏检现象;而本文的检测算法可精确检测出小目标,且不存在漏检误检现象。
图6 检测效果图
3 结 论
本文研究并改进了实时目标检测YOLO算法框架,提出的改进算法通过在输入模型尺寸, 3-1-1-3网络基本单元以及网络架构方面进行合理设计,提高了算法对小目标的检测能力。此外该算法还发挥 SELU 激活函数在网络结构中的优势,并结合多尺度的目标检测,得到了较好的检测结果。实验结果表明,本文算法在海上弱小目标检测方面,相比于原YOLO检测算法,综合表现更为优异,在保证实时性的同时,获得了较高的检测率。