一文梳理水下目标检测方法
前言 水下目标检测旨在对水下场景中的物体进行定位和识别。这项研究由于在海洋学、水下导航等领域的广泛应用而引起了持续的关注。但是,由于复杂的水下环境和光照条件,这仍然是一项艰巨的任务。因此近年来有多个赛事与水下目标检测相关,接下来我们将介绍在水下目标检测领域的深度学习方法概述。
本文转载自AI约读社
作者丨南山
欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。
01 水下目标检测的关键问题
1.1 水下图片模糊
在水下场景中,由于光照影响大大降低了水下图像的质量,从而导致了可见度损失,弱对比度和纹理失真,颜色变化等问题(如下图所示),并且在水下场景中环境复杂,这导致水下目标检测更加困难。
1.2 小目标检测
水下环境中的目标物体通常很小,如:海胆,扇贝,海参等,而当前基于深度学习的目标检测器通常无法有效地检测小物体,或者对小目标物体的检测性能较差。
02 水下目标检测的深度学习方法
缓解水下图片模糊主要是通过对水下图片进行增强,去噪,复原等方法,对于小目标检测的问题可以通过数据扩增和改进网络的方式来缓解,接下来我们将介绍近年来解决水下目标检测问题的深度学习方法。
Underwater object detection using Invert Multi-Class Adaboost with deep learning
论文链接: https://arxiv.org/pdf/2005.11552.pdf
代码链接: https://github.com/LongChenCV/SWIPENet
主要方法:文中提出了一种用于水下目标小样本检测的SWIPENet,网络中提出了一种样本重加权算法IMA(Invert Multi-Class Adaboost),IMA会减少missed objects(丢失对象)的权重,以减少这些“干扰”样本的影响。并且在SWIPENet中引入了具有RELU的空洞卷积层(dilated conv)它们可以在不牺牲特征图分辨率的情况下获得大的接受区域。
IMA算法:首先顺序训练多个基本分类器,并根据其错误率Em分配权重值α。然后,将由前面的分类器分类错误的样本分配较高的权重,从而使后面的分类器专注于学习这些样本。最后,将所有弱基础分类器组合在一起,形成具有相应权重的整体分类器。IMA还训练了M次SWIPENet,然后将它们整合为一个统一模型。不同的是,在每次训练迭代中,IMA都会减少丢失对象的权重,以减少这些“干扰”样本的影响。
实验结果:达到URPC 2017的冠军结果,45.0map,冠军为45.1map。
SWIPENet的网络结构图:
RoIMix: Proposal-Fusion among Multiple Images for Underwater Object Detection
论文链接: https://arxiv.org/abs/1911.03029
主要方法:URPC 2019水下目标检测竞赛冠军方案:多图像融合增强,针对水下场景重叠和遮挡(水下生物喜欢聚在一起)、模糊(水中沉淀物导致)的问题,提出一种基于候选框融合的图像增强方法,以生成模拟重叠、遮挡、模糊的训练样本,从而提高模型的mAP和鲁棒性。
RoIMix算法使用RPN产生ROI,并以随机的比例混合它们。该比例是根据Beta分布产生的,然后,使用混合样本来训练模型。
下图中: 即为用RoIMix图像增强方法生成的模拟遮挡+模糊的训练样本
RoIMix的网络结构图:
实验结果:达到URPC 2019的冠军方案,ROIMIX和BaseLine之间的最大性能差异为9.05%个mAP值。
An Underwater Image Enhancement Benchmark Dataset and Beyond
论文链接: https://arxiv.org/abs/1901.05495v1
代码链接: https://github.com/Li-Chongyi/Water-Net_Code
主要方法:文中提出了一个新的具有950张水下图片的数据集UIEBD,包含各个水下场景,以及水下各种特征退化(光线不足、雾)的情况,用数据集UIEBD对12种现阶段主流的水下图片增强算法进行评测和验证。并且提出基于fusion的水下图片增强模型DuwieNet。
12种水下数据扩增方法比较:
DUIENet: 基于所构建的UIEBD数据集,作者提出了一种用于水下图像增强的CNN模型,称为DuwieNet。DuwieNet是—种门控融合网络,它将输入与预测的置信度图融合以获得增强的结果。首先通过FTUs将输入转换为精确的输入,然后预测置信度图。最后,将改进后的输入与相应的置信度图进行融合,得到增强后的结果。其结构图如下所示:
实验结果:
03 水下目标检测比赛的开源方案
在去年的2020年全国水下机器人(湛江)大赛水下目标检测比赛众多,部分选手公开了他们的参赛方案,他们在比赛中的经验这对我们研究水下目标检测具有很大的参考价值,下面我根据使用的检测框架进行分类,简单介绍其中的几个开源方案
3.1 mmdection
和鲸社区Kesci 水下目标检测算法赛(光学图像赛项)三等奖 单模方案
代码链接:https://github.com/milleniums/underwater-object-detection-mmdetection
方法简述:
-
使用两阶段检测框架,保证精度要求;
-
使用FPN,增强小目标的检测效果;
-
使用Mixup、旋转等无损的数据增强技术,减轻网络过拟合,并提升模型泛化能力;
-
使用多尺度训练与预测,适应图片分辨率差异,可以让参与训练的目标大小分布更加均衡,使模型对目标大小具有一定的鲁棒性;
-
参考ResNet论文,使用Global Context ROI为每个候选框添加上下文信息,充分利用数据分布特点,提升了检测精度。
消融实验:
和鲸社区Kesci 水下目标检测算法赛(光学图像赛项)30(A榜) / 31(B榜)
代码链接: https://github.com/Wakinguup/Underwater_detection
方法简述:
1、数据增强:
采用Mixup、实例平衡增强、模糊(Median Blur和 Motion Blur)、Retinex、泊松融合、标签平滑。 2、模型框架:mmdetection代码库中的Cascade R-CNN模型,其中backbone是ResNeXt101-64x4d (64是基数Cardinality,X101的一个block的group数量。而4d是指bottleneck的宽度)。模型同时也搭配了FPN[3],增强模型对小目标的检测能力。
3.2 EfficientDet
EfficientDet训练水下目标检测数据集
代码链接: https://github.com/DataXujing/EfficientDet_pytorch
方法简述:
这个使用EfficientDet进行水下目标检测,仅是baseline无任何tricks,Step by Step演示如何训练最近开源的相对SOTA的Pytorch版的EfficientDet的训练,评估,推断的过程。像paper中提到的一样,我们并没有使用任何数据增强或模型融合等后处理的trick来提高模型的精度,如果你想增加数据增强的策略可以在efficientdet/dataset.py中实现;
3.3 YOLOV5
我们团队这次也参加了2021年全国水下机器人(湛江)大赛,为大家开源了YOLOV5检测的baseline
代码:https://github.com/wangdongdut/Underwater-Object-Detection
04 总结
水下目标检测目前任然还是一个具有挑战的领域, 相比于传统图像处理方法分多个步骤和环节处理检测任务, 基于深度学习的方法将其统一为端到端的特征提取和分类。虽然水下目标检测技术已经不断地从学术研究走向成熟的工业应用, 但是依然有一些需要解决的问题。
本文仅做学术分享,如有侵权,请联系删文。
欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。
QQ交流群:444129970。群内有大佬负责解答大家的日常学习、科研、代码问题。
模型部署交流群:732145323。用于计算机视觉方面的模型部署、高性能计算、优化加速、技术学习等方面的交流。
其它文章