基于改进Mask R-CNN网络模型的水面物体检测算法 | ![]() |
深度学习领域近些年来发展迅速, 基于深度学习的目标检测与分割的算法不断取得突破。相继出现了Mask R-CNN、Faster R-CNN[1]、YOLO[2]、SSD[3]、FCN[4]等一系列算法模型, 体现了深度学习在目标检测与分割方面的巨大潜力。深度学习是指多层人工神经网络以及训练它的方法, 神经网络会导入标注好的数据, 对这些数据进行特征提取, 然后对网络模型进行训练。最终得到模型的权重参数。基于深度学习的目标检测与分割算法前景广阔, 具有准确率高、可适配复杂环境等特点。因此适合水面物体的检测工作。众多的研究人员对该领域不断探索, Yuan等[5]提出利用Fast R-CNN检测算法实现对舰船的识别分类; Wang等[6]基于Resnet网络提出海上目标快速检测算法; Chen等[7]将多尺度策略融合到了Resnet的多层卷积中, 并在特征图上添加了双线性插值进行上采样, 以增强小目标的检测效果。
鉴于水平面复杂多变的环境, 本研究通过对原始的Mask R-CNN网络模型进行改进, 改进的模型以Mask R-CNN网络模型为基本的框架, 通过对骨干网络进行替换并且引入注意力机制模块从而有效的提高模型性能, 更好的实现对于水面物体的实例分割。
1 Mask R-CNN模型及其改进 1.1 Mask R-CNN网络模型的结构Mask R-CNN为一个经典的两阶段实例分割模型, 即在检测阶段先将候选区域提取出来, 再进行分类和回归[8]。其主要是由骨干网络(Backbone)、候选区域生成网络(Region Proposal Network)、检测网络(Full Convolution Nets)构成。
Mask R-CNN网络模型的工作流程如下: 首先将图像输入到骨干网络中得到相对应的特征图。再利用RPN网络生成多个不同宽高比以及不同大小的anchors, 对这些anchors进行NMS非极大值抑制, 通过设定阈值获得一定数量的anchors, 并进行回归校正, 获得目标候选框。将这些候选框映射到特征图上获得相应的特征矩阵。将每个特征矩阵通过RoI Align进行下采样, 获得相同尺寸的特征图。最后对这些统一尺寸的特征图进行分类、回归和以及Mask的生成。Mask R-CNN网络模型的结构图如图 1所示。
![]() |
图 1 Mask R-CNN网络结构 |
对于Mask R-CNN网络模型的改进主要包括两个部分: 一是将原始骨干网络中的Resnet50替换成为Resnext50[9]; 二是在FPN网络结构中, 引入注意力机制。
1.2 骨干网络中Resnet50的替换由于水面环境存在不利天气条件所造成的视觉模糊、周围环境在水中的反射、闪光等一系列复杂的情况, 以上问题都会导致水面物体难以检测。因此提出利用ResNeXt50结构作为骨干网络替换原始的Mask R-CNN网络模型中的Resnet50结构。ResNeXt50结构结合了inception结构与Resnet50结构的优点, 既有残差结构可以方便训练, 又可对提取的特征进行多角度理解。相比于Resnet50结构, 其可以在不显著增加参数复杂度的前提下提高准确率, 同时还减少了超参数的数量。ResNeXt50结构借助shortcut connection的思想, 实现了信息在整个网络中传播, 从而避免了“梯度消失”, 提高了网络对于水面细小物体以及深层特征的感知能力[10]。ResNeXt50的Block结构如图 2所示。
![]() |
图 2 ResNeXt的Block结构 |
1.3 带有SENet注意力机制模块的FPN网络
在特征金字塔网络(feature pyramid networks, FPN)之前, 大多数的目标检测方法与分类方法一样, 都使用单层的特征图来进行处理, 并没有将高层的语义信息添加到底层特征图中。在检测过程中, 底层特征图尺寸大, 感受野小, 非常适合图像中小目标检测; 高层特征图尺寸小, 感受野大, 合适于图像中大目标的检测。2017年Lin等[11]提出了特征金字塔(FPN)结构, FPN结构采用多尺度特征融合的方式, 对高底层特征图进行融合。这种方式可以充分的利用底层特征图的细节信息。但是, FPN网络结构存在有不足, 由于该网络直接将融合后的特征图进行卷积操作, 直接进行预测。使得其无法充分融合特征图的语义信息。
针对FPN网络存在的问题, 提出了带有SENet注意力机制模块[12]的FPN网络结构, 目的是增强不同尺度特征图之间的融合效果。改进后的FPN网络结构图如图 3所示。I1到I4是ResNeXt50结构中获取的4个特征图。I1到I4的通道数分别为{256, 512, 1 024, 2 048}, 尺寸分别为{160×160, 80×80, 40×40, 20×20}。为了使每个特征图融合时尺寸和通道数保持一致, FPN网络首先将4个输入的特征图进行1×1卷积, 将其通道数统一为256。然后将输出的特征图一方面进入注意力机制SENet模块中进行特征增强, 另一方面将1×1卷积得到的特征图使用双线性插值的方法进行两倍的上采样, 将上采样后的高层特征图与底层特征图之间进行融合。将融合后的结果送入注意力机制SENet模块中。
![]() |
图 3 带有SENet注意力机制模块的FPN网络 |
SENet模块具体实现方式是: 第一步: 压缩, 即对输入进来的特征图进行全局池化, 将输入的H×W×256的特征图的大小压缩成1×1×256。第二步: 激励, 首先将1×1×256的输入特征图通过全连接层压缩通道数, 通过Relu激活函数后再进入到全连接层中恢复通道数, 最后通过Sigmoid激活函数, 得到1×1×256的特征图。第三步: 通道加权, 将最终输出的特征图(1×1×256)与原始的特征图(H×W×256)进行逐通道的相乘, 得到最终的输出。
特征图通过SENet模块后再进入到3×3的卷积之中进行卷积操作, 得到P2到P5共四个特征图。对P5特征图进行步长为2的最大池化下采样得到P6特征图。最终得到P2到P6共5个特征图。
通过该结构实现了高层特征图的信息向底层特征图之间的传递, 增强了底层特征图的语义信息。
1.4 Mask R-CNN网络模型的损失函数损失函数用来衡量模型的输出值与真实值之间的差距, 通过寻找损失函数的最小值使得预测结果更接近于真实值。损失函数的值越小则表明模型对于数据拟合程度就越好。
Mask R-CNN网络模型其损失函数L的计算方式如式(1)所示:
$ L=L_{\mathrm{cls}}+L_{\mathrm{box}}+L_{\text {mask }}, $ | (1) |
其中, Lcls为分类损失, Lbox为回归损失, Lmask为分割损失。
对于分类损失Lcls, 计算方式如式(2)所示:
$ L_{\mathrm{cls}}=-\sum\limits_{i=1}^{k} y_{i} \log P_{i}, $ | (2) |
其中, k为类别个数, yi为真实的标签, Pi预测为第i个类别的概率。
对于回归损失Lbox, 计算方式如式(3)所示:
$ L_{\mathrm{box}}=\sum\limits_{i \in\{x, y, w, h\}} \operatorname{smooth}_{L_{1}}\left(t_{i}-t_{i}^{*}\right), $ | (3) |
其中, ti=[tx, ty, tw, th]表示第i个预测边界框相对于候选边界框的回归参数。ti*=[tx*, ty*, tw*, th*]表示第i个真实边界框相对于候选边界框的回归参数。用smoothL1作为损失函数具有很多优点, 当x较大时, 梯度为常数解决了训练过程之中参数被破坏的问题; 当x较小时, 梯度会动态减小解决了训练过程中难以收敛的问题。smoothL1函数的定义如下:
$ \operatorname{smooth}_{L_{1}}=\left\{\begin{array}{c} 0.5 x^{2} \\ |x|-0.5 \end{array}\right. 。$ | (4) |
对于分割损失Lmask, 计算方式如式(5)所示:
$ L_{\text {mask }}=-\sum\limits_{i=1}^{k} {p_{i}}^{*} \log \left(p_{i}\right)+\left(1-{p_{i}}^{*}\right) \log \left(1-p_{i}\right), $ | (5) |
其中, k为类别个数, pi表示Mask R-CNN网络模型预测样本为第i个类别的概率。对于pi*, 当为正样本时为1, 为负样本时为0。
1.5 模型的评价指标为了验证网络结构的有效性, 通过测算在IOU=0.5与IOU=0.75时目标检测任务与实例分割任务的平均精度(AP)值, 从而判断模型在检测过程之中是否错检。通过测算目标检测与实例分割任务的平均召回率(AR)值, 从而判断模型是否漏检。
作为模型实际检测效果的评价指标。AP的计算方式如式(6)所示:
$ \mathrm{AP}=\frac{1}{\mid \text { classes } \mid} \sum\limits_{c}\left(\frac{1}{\mid \text { thresholds } \mid} \sum\limits_{t} \text { Precision }\right) 。$ | (6) |
precision为精确率, 表示在被所有预测为正的样本中实际为正样本的概率, 其计算方式如式(7)所示。
$ \text { Precision }=\frac{\mathrm{TP}(t)}{\mathrm{TP}(t)+\mathrm{FP}(t)}, $ | (7) |
其中,FP(False Positive)指预测错误情况, TP(True Positive)为预测正确情况。
AR的计算方式如式(8)所示:
$ \mathrm{AR}=\frac{1}{\mid \text { classes } \mid} \sum\limits_{c}\left(\frac{1}{\mid \text { thresholds } \mid} \sum\limits_{t} \text { Recall }\right)。$ | (8) |
Recall为召回率, 表示在实际为正的样本中被预测为正样本的概率, 其计算方式如式(9)所示:
$ \text { Recall }=\frac{\mathrm{TP}(t)}{\mathrm{TP}(t)+\mathrm{FN}(t)}, $ | (9) |
其中,FN(False Negative)为没有预测出来的情况。
2 材料与方法 2.1 数据集的采集与构建开放的COCO 2017数据集其构成主要是通过收集复杂日常场景中的图像来实现。该数据集总共包含超过12万张图像, 91种对象类别, 其中包含有3 000张船只图片, 用来进行检测与分割。
由于公开的coco2017数据集中水平面目标物体类别基本为船舶, 对于海上常见的浮标、平台等目标物体涵盖数量过少, 为了丰富海上实例分割数据集的数量和类别, 使用labelme图像标注工具对采集到的2 000张图片进行人工标注(图 4), 并利用python语言与OpenCV工具包对采集到的图片进行数据集的增强, 包括添加高斯噪声(图 5)、随机亮度(图 6)等方法, 增强后的数据集共有5 169张图片。对于标注生成对应的json文件, 按照coco数据集格式进行整理, 并且按7∶3的比例将数据集划分成训练集和测试集。制作数据集时主要标注水面船舶、平台、浮标等物体。
![]() |
图 4 labelme标注示例图 |
![]() |
图 5 对图片添加高斯噪声 |
![]() |
图 6 对图片添加随机亮度 |
2.2 实验环境
乌班图20.04为运行环境, 16G运行内存, 6G GPU显存。NVIDIA 3060显卡。CUDA 11.6。batch size设置为1。学习率设定为0.004, 衰减学习率为0.050。总共训练18个epoch, 训练至第14个epoch时进行学习率的衰减, 衰减后再训练4个epoch。
2.3 模型训练利用划分好的数据集进行模型的训练。利用训练集训练图像模型, 用测试集测试模型训练的结果。在训练过程中, 模型逐渐收敛, 绘制的损失曲线如图 7所示, 横坐标表示训练的epoch次数, 纵坐标表示训练过程中的损失值。
![]() |
图 7 训练过程中损失值的变化 |
3 结果分析 3.1 识别效果比对
通过对比改进前后的Mask R-CNN网络模型对于实际场景中图像的识别效果从而直观判断, 改进后的Mask R-CNN网络模型相对于原始的Mask R-CNN网络模型对于水面物体目标检测与分割提升的有效性。识别结果图如图 8所示。通过该识别效果图可以直观的看出, 改进后的Mask R-CNN网络模型能够有效地应对水面上存在的大雾、反射等不利环境条件。
![]() |
图 8 改进前后Mask R-CNN网络模型对水面物体的识别情况 |
3.2 消融实验
消融实验即在深度学习模型检测之中, 通过减少一些改进特征, 以验证特定的网络结构和训练策略对于模型训练所产生的影响[13]。因此本研究通过消融实验探究各项改进对于原始的Mask R-CNN网络模型提升的有效性。
原始的Mask R-CNN网络模型是以Resnet50+FPN作为骨干网络。通过表 1可以得出结论, 在IOU=0.5的判别方式中, 将Resnet50替换成ResNeXt50之后的Mask R-CNN网络模型相比于原始的Mask R-CNN网络模型, 平均精度在目标检测方面提高了1.7%, 在实例分割方面提高了2.0%。同时, 在FPN网络上增加SENet注意力机制, 使得模型在目标检测方面提高了2.3%, 在实例分割方面提高了1.5%。综合以上两种改进策略, 改进后的Mask R-CNN网络模型相较于原始的Mask R-CNN网络模型的平均精度在目标检测方面提高了4.0%, 在实例分割方面提高了3.5%。
表 1 不同结构的AP50与AP75实验结果对比 |
![]() |
在IOU=0.75的判别方式中, 改进后的网络模型相比于改进前的网络模型, 在目标检测方面提高了6.1%, 在实例分割方面提高了5%。由此可以看出, 改进后的模型相比于改进前的模型对于目标的定位更加的精确。
通过表 2可以得出结论, 将Resnet50替换成ResNeXt50之后的Mask R-CNN网络模型相比于原始的Mask R-CNN网络模型, 平均召回率在目标检测方面提高了1.2%, 在实例分割方面提高了1.4%。同时, 在FPN网络上增加SENet注意力机制, 使得模型的平均召回率在目标检测方面提高了1.1%, 在实例分割方面提高了0.7%。综合以上两种改进策略, 改进后的Mask R-CNN网络模型相较于原始的Mask R-CNN网络模型的平均召回率在目标检测方面提高了2.3%, 在实例分割方面提高了2.1%。
表 2 不同结构的AR与fps实验结果对比 |
![]() |
通过消融实验对于fps的分析可知, 此种改进并没有使得模型的运算量大幅度增加, 但是提高了模型的平均精度和平均召回率。因此是一种较为高效的改进策略。
4 总结为了对水面物体进行实例分割, 本实验首先将获取的2 000张图片用labelme标注工具进行标注并进行数据增强从而实现对数据集构建和扩充。其次提出了一种改进的Mask R-CNN网络模型, 将原始Mask R-CNN网络模型中的Resnet50替换成为ResNeXt50, 并且在FPN结构中引入SENet注意力机制模块。通过以上改进, 提高了算法精度。相较于原始的Mask R-CNN网络模型, 改进后的模型对于水面物体检测数据集在没有大幅度增加运算量的情况下, 在平均精度以及平均召回率方面有了一定的提升。因此, 改进后的模型更加适合于水面物体检测的应用场景。同时该模型对于海上无人船的研究以及海洋场景的监测活动均有着借鉴意义。
由于实验条件的限制, 该模型依然有着很多值得改进的地方。由于缺乏大规模的数据集, 会忽略一些特殊的目标, 使得该算法模型实际应用中遇到阻碍。其次, 还应该对算法模型不断进行研究, 找出更加适合的骨干网络, 从而进一步提高模型的检测效率。
[1] |
REN S, HE K, GIRSHICK R, et al. Faster r-cnn: Towards real-time object detection with region proposal networks[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017, 39(6): 1137-1149. DOI:10.1109/TPAMI.2016.2577031 |
[2] |
REDMON J, DIVVALA S, GIRSHICK R, et al. You only look once: unified, real-time object detection[C]//IEEE. Conference on Computer Vision and Pattern Recognition, Las Vegas: USA, 2016.
|
[3] |
LIU W, ANGUELOV D, ERHAN D, et al. Single shot multibox detector [C]//IEEE. Conference on Computer Vision, Amsterdam: Netherlands, 2016.
|
[4] |
LONG J, SHELHAMER E, DARRELL T. Fully convolutional networks for semantic segmentation[C]//IEEE. Proceedings of IEEE Conference on Computer Vision and Pattern Recognition, Boston: USA, 2015.
|
[5] |
袁明新, 张丽民, 朱友帅, 等. 基于深度学习方法的海上舰船目标检测[J]. 舰船科学技术, 2019, 41(1): 111-115. |
[6] |
王贵槐, 谢朔, 初秀民, 等. 基于深度学习的水面无人船前方船只图像识别方法[J]. 船舶工程, 2018, 40(4): 19-22. |
[7] |
罗逸豪, 孙创, 邵成, 等. 基于深度学习的水面无人艇目标检测算法综述[J]. 数字海洋与水下攻防, 2022, 5(6): 524-538. |
[8] |
许德刚, 王露, 李凡. 深度学习的典型目标检测算法研究综述[J]. 计算机工程与应用, 2021, 57(8): 10-25. |
[9] |
XIE S, GIRSHICK R, DOLLáR P, et al. Aggregated residual transformations for deep neural networks[C]//IEEE. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, Honolulu: USA, 2017.
|
[10] |
谭鹤群, 李玉祥, 朱明, 等. 通过图像增强与改进Faster-RCNN网络的重叠鱼群尾数检测[J]. 农业工程学报, 2022, 38(13): 167-176. |
[11] |
LIN T Y, DOLLáR P, GIRSHICK R, et al. Feature pyramid networks for object detection[C]//IEEE. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, Honolulu: USA, 2017.
|
[12] |
HU J, SHEN L, ALBANIE S, et al. Squeeze-and-excitation networks[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2019, 42(8): 2011-2023. |
[13] |
罗海保. 基于改进Faster R-CNN的多尺度小目标检测算法研究[D]. 北京: 北京交通大学, 2019.
|