首页 > 其他分享 >一文梳理水下目标检测方法

一文梳理水下目标检测方法

时间:2023-02-17 16:46:46浏览次数:59  
标签:一文 检测 模型 目标 水下 https 方法 梳理

前言 水下目标检测旨在对水下场景中的物体进行定位和识别。这项研究由于在海洋学、水下导航等领域的广泛应用而引起了持续的关注。但是,由于复杂的水下环境和光照条件,这仍然是一项艰巨的任务。因此近年来有多个赛事与水下目标检测相关,接下来我们将介绍在水下目标检测领域的深度学习方法概述。
 

本文转载自AI约读社

作者丨南山

 

欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。

 

计算机视觉入门1v3辅导班

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 方法简述:
  1. 使用两阶段检测框架,保证精度要求;
  2. 使用FPN,增强小目标的检测效果;
  3. 使用Mixup、旋转等无损的数据增强技术,减轻网络过拟合,并提升模型泛化能力;
  4. 使用多尺度训练与预测,适应图片分辨率差异,可以让参与训练的目标大小分布更加均衡,使模型对目标大小具有一定的鲁棒性;
  5. 参考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招聘信息。

 

【技术文档】《从零搭建pytorch模型教程》122页PDF下载

 

QQ交流群:444129970。群内有大佬负责解答大家的日常学习、科研、代码问题。

 

模型部署交流群:732145323。用于计算机视觉方面的模型部署、高性能计算、优化加速、技术学习等方面的交流。

 

其它文章 深度理解变分自编码器(VAE) | 从入门到精通 计算机视觉入门1v3辅导班 计算机视觉交流群 用于超大图像的训练策略:Patch Gradient Descent CV小知识讨论与分析(5)到底什么是Latent Space? 【免费送书活动】关于语义分割的亿点思考 新方案:从错误中学习,点云分割中的自我规范化层次语义表示 经典文章:Transformer是如何进军点云学习领域的? CVPR 2023 Workshop | 首个大规模视频全景分割比赛 如何更好地应对下游小样本图像数据?不平衡数据集的建模的技巧和策 Transformer交流群 经典文章:Transformer是如何进军点云学习领域的? CVPR 2023 Workshop | 首个大规模视频全景分割比赛 如何更好地应对下游小样本图像数据?不平衡数据集的建模的技巧和策 U-Net在2022年相关研究的论文推荐 用少于256KB内存实现边缘训练,开销不到PyTorch千分之一 PyTorch 2.0 重磅发布:一行代码提速 30% Hinton 最新研究:神经网络的未来是前向-前向算法 聊聊计算机视觉入门 FRNet:上下文感知的特征强化模块 DAMO-YOLO | 超越所有YOLO,兼顾模型速度与精度 《医学图像分割》综述,详述六大类100多个算法 如何高效实现矩阵乘?万文长字带你从CUDA初学者的角度入门 近似乘法对卷积神经网络的影响 BT-Unet:医学图像分割的自监督学习框架 语义分割该如何走下去? 轻量级模型设计与部署总结 从CVPR22出发,聊聊CAM是如何激活我们文章的热度! 入门必读系列(十六)经典CNN设计演变的关键总结:从VGGNet到EfficientNet 入门必读系列(十五)神经网络不work的原因总结 入门必读系列(十四)CV论文常见英语单词总结 入门必读系列(十三)高效阅读论文的方法 入门必读系列(十二)池化各要点与各方法总结 TensorRT教程(三)TensorRT的安装教程 TensorRT教程(一)初次介绍TensorRT

 

 

 

TensorRT教程(二)TensorRT进阶介绍

 

标签:一文,检测,模型,目标,水下,https,方法,梳理
From: https://www.cnblogs.com/wxkang/p/17130681.html

相关文章

  • JavaScript常见问题梳理
    1、this指向1、全局函数this指向全局对象window,注意严格模式下,this为undefined//[objectWindow]alert(this);functionf(){alert(this)}f()//undefinedfu......
  • Create port ip分配流程梳理
    Createportip分配流程梳理self.ipam.allocate_ips_for_port_and_store(context,port,port_id)#/usr/lib/python2.7/site-packages/neutron/db/ipam_pluggable_......
  • 一文总结当下常用的大型 transformer 效率优化方案
    前言本文是一篇综述性的博客,探讨总结当下常用的大型transformer效率优化方案。 本文转载自机器之心作者丨LilianWeng欢迎关注公众号CV技术指南,专注于计算机......
  • 一文搞定MySQL性能调优
    数据库的操作越来越成为整个应用的性能瓶颈,这对于Web应用尤其明显。关于数据库的性能,这并不只是DBA需要关心的,而更是后端开发需要去关注的事情。所以本文讲解MySQL在各个......
  • C++梳理
    1、基础篇1、C++中的四种智能指针为什么要使⽤智能指针:智能指针其作⽤是管理⼀个指针,避免程序员申请的空间在函数结束时忘记释放,造成内存泄漏这种情况的发⽣。使⽤智能......
  • 17- 项目梳理-商品列表--product
    创建子应用#1.新建product子应用pythonmanage.pystartappproduct#2.注册子应用#3.子应用新建urls.py;主应用urls绑定子应用urls.pyre_path......
  • 16- 项目梳理-搜索--shouye
    Es(Elasticsearch)搜索环境配置#0.依赖java,需要提前配置java环境#1.解压elasticsearch-2.3.3.zip链接:https://pan.baidu.com/s/1s6ObfU9enl_xPazw8NxgdA......
  • 前置已了解知识梳理
    由于在写这篇博客之前,已经接触一些Hadoop的基础知识,我先把之前所学的一些基本概念和理解分享到这里,导图如下。   遵从着学习新知识的三大入手点(WhyWhatHow)出发。......
  • 13- 项目梳理-用户中心页面--users
    1.创建视图函数#需要处于登陆的视图,多继承:LoginRequiredMixin,ViewclassUserinfoView(LoginRequiredMixin,View):defget(self,request):#登陆-->......
  • 12- 项目梳理-登录页面--users
    1.创建视图函数,get返回页面#登陆视图classLoginView(View):#打开登录页面defget(self,request):returnrender(request,'users/login.html')......