论文阅读<Contrastive Learning-based Robust Object Detection under Smoky Conditions>

论文链接:https://openaccess.thecvf.com/content/CVPR2022W/UG2/papers/Wu_Contrastive_Learning-Based_Robust_Object_Detection_Under_Smoky_Conditions_CVPRW_2022_paper.pdf

Abstract

        目标检测是指有效地找出图像中感兴趣的目标,然后准确地确定它们的类别和位置。近年来,许多优秀的方法被开发出来,以提供强大的检测能力。然而,在恶劣天气如烟熏条件下,它们的性能可能会显著降低。在这篇论文基于对比下学习提出了一个鲁棒的烟雾图像目标检测算法。提出的算法由两个模块组成,对比学习模块(Contrast learning module)和目标的预测框(object bounding box prediction module)。第一个模块通过最大化同一烟雾图像的不同增强视图之间的一致性来学习表示向量,然后把这些特征送入第二个模块以生成bounding box。此外还提出了一个新颖的仿射数据增强方法。在A2I2 - Haze数据集上进行了大量的的实验,该数据集是第一个与航空和地面图像对齐的实时烟雾测量的真实雾霾数据集。该数据集也是CVPR 2022第5届UG2 +挑战赛中唯一用于训练和测试的数据集。与最先进的方法相比,评估结果表明了我们提出的目标检测器的优越性。

Intruduction

        对比学习属于辨别性特征表示的范畴(discriminative representation learning),通过不同样本之间的比较学习来学习一种表示,这种对比通过在相似的图像对和不相似的图像对中实现。通过对它们的比较,可以有效地实现"相似"样本的表示在嵌入空间中被紧密地映射在一起,而"不相似"样本的表示在嵌入空间中被远离的对比学习目标。对比学习有一个明显的优势,它可以忽略输入的表面现象,同时能够学习和提取它们的内部一致性。

Method

        提出的算法流程如下图所示,主要包括量模块,第一个是Constrast learning module,致力于捕获每个相同烟雾图像的不同增强版本之间的内在一致特征,从而能够学习到它们的一致表示。第二个模块是Object bounding box prediction module,把学习到的表示向量和原来的图像一起作为输入来预测每个目标的bounding box。

3.1 Constrast learning module

        图2是对比学习模块的结构,该模块包含三个部分:Data  Augmentation、Encoder Network、Projection Head(和SimCLR类似)。

        在Data  Augmentation中,对给定的烟雾图像,采用两种图像增强方法,分别是图像灰度化和随机亮度增强来生成其相关的增强视图,记为I_{i}I_{j},记为一对正样本。在Encoder Network中,使用ResNet50提取特征获得h_{i}h_{j}。 在Projection Head中,使用两个简单的MLP把h_{i}h_{j}映射到更抽象的特征。

        使用以下损失函数优化对比学习,其中一批 N 个示例被随机采样以构建 2N 个增强图像。z_{i}z_{j}是增强后的图像,sim(u,v)=u^{T}v/||u||||v||表示L2归一化后的y和v的点乘,\tau表示一个温度参数。

L_{cont}=\frac{1}{2N}\sum_{k=1}^{N}[l(2k-1,2k)+l(2k,2k-1)]

l(i,j)=-log\frac{sim(z_{i},z_{j})/\tau }{\sum_{k=1}^{2N}exp(sim(z_{i},z_{j})/\tau)}

3.2 Object boudning box prediction module

        这个模块包括四个部分:pre-processing,backbone,neck和head。在pre-processing部分,使用Transposed convolution改变输入特征h_{i}h_{j}f_{i}f_{j},然后和输入图像I一起输入到YOLOV5s

3.3 Data Augmentation

        在本文中,考虑到拍摄图像中存在无人机视角变化,我们还提出了一种新颖的仿射数据增强方法。首先,我们拍摄一些内容相似但拍摄角度不同、拍摄距离不同的照片。然后,利用透视变换计算每对相似图像之间的单应矩阵。之后,我们对测试数据集的每个图像执行这些单应矩阵,创建新的转换图像。最后,这些变换后的图像与原始训练数据一起用于网络的训练。

Experiments

4.1 Baselines

        对CenterNet、YOLOv5和参与CVPR2022挑战的12种优秀方法进行对比。用于训练和测试的数据集是 A2I2-Haze [32],它是 CVPR 2022 第五届 UG2+ 挑战赛 Haze 中目标检测赛道中采用的唯一数据集。A2I2Haze 是第一个具有原位烟雾测量的真实雾霾数据集与空中和地面图像对齐。该数据集不仅包含从 12 个视频剪辑而来的总共 177 个配对的模糊/干净帧图像,还包含从相同来源收集的用于训练的 240 个带注释的干净图像,以及用于测试的 60 个其他烟雾图像。此外,我们还采用了所提出的数据增强方法。对这些测试图像进​​行仿射变换,产生384张不同角度、不同距离的变换图像,作为训练数据的补充

4.2 Implementation details

        我们首先使用训练数据单独更新对比学习模块的权重。完成此训练过程后,构建的表示向量与原始图像一起用作对象边界框预测模块的输入来训练其网络。完成所有这些任务后,我们提出的目标检测器的训练就真正完成了。

        所提出的目标检测器在 NVIDIA GeForce RTX3080 GPU 上进行训练和测试。在对比学习模块的训练过程中,batch size和patch size分别设置为8和512×512,采用随机梯度下降(SGD)优化器,学习率初始化为0.05并降低90总共 300 个 epoch 中的 150、200 和 250 个 epoch 的百分比。此外,为了训练对象边界框预测模块,我们将批量大小和补丁大小分别设置为32和512×512。热身是在训练前进行的。学习率初始化为0.01,然后在总共500个epoch的训练中采用Cosine学习率下降策略。

4.3 Quantitative evaluation

        表 1 给出了 SOTA 方法和我们提出的检测器产生的物体检测的数值结果。对于那些挑战者,CVPR 2022只公布了他们的AP50结果,如表1所示。从表中的结果可以看出,由于YOLOv5和CenterNet都没有采取适应烟雾条件的措施,所以它们的性能都较差。尽管 12 名挑战参与者中的每一位都在 AP50 中获得了高分,但我们提出的算法仍然在所有评估方法中获得了针对目标检测的最佳平均预测结果。

4.4 Quanlitative evaluation

        图4是定性分析的结果,提出的方法是最接近于Ground Truth的。

4.5 Ablation Study

        通过直接从图 1 的框架中删除模块 1,在目标检测中使用对比学习机制。此外,还通过避免在训练中使用那些转换后的数据来评估所提出的数据增强的有效性。为了阐明它们的效果,我们将我们提出的方法与以下两个基线进行比较:1)基线1:我们仅使用增强训练数据训练模块2。 2)基线2:我们仅使用原始训练数据来训练我们提出的方法。表 2 比较了他们在消融研究中的物体检测结果。从表2的结果可以看出,对比学习可以学习物体的内部一致性,从而进一步准确地确定目标位置。此外,我们提出的数据增强方法很大程度上改善了目标检测的 AP 结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/586702.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot 项目新建流程

一、新建工程 二、工程建好后&#xff0c;在pom文件中加入springboot 依赖 <dependencies><!--SpringBoot启动依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>&l…

python+django在线学习教学辅助作业系统gp6yp

本课题使用Python语言进行开发。基于web,代码层面的操作主要在PyCharm中进行&#xff0c;将系统所使用到的表以及数据存储到MySQL数据库中 技术栈 后端&#xff1a;pythondjango 前端&#xff1a;vue.jselementui 框架&#xff1a;django/flask Python版本&#xff1a;python3.…

RobotFrameWork环境搭建及使用

RF环境搭建 首先安装python并且配置python环境变量pip install robotframeworkpip install robotframework-ride 生产桌面快捷方式 不行换豆瓣源检查一下pip list RF类库和扩展库 标准库 按F5快捷键查询&#xff0c;可以看到rf自带的库不需要额外安装这些标准库在python的 …

DragonEnglish:COCA20000+单词+释义

去年的时候接触到了 COCA20000 单词&#xff0c;对这种给单词特定顺序的方式蛮感兴趣的。因为我当时接触的版本只有单词或者单词释义的版本&#xff0c;所以我直接通过各种方式给它搭配了音标例句发音&#xff0c;然后每100个切割成1份&#xff0c;分成了 202 个文件来学习&…

超维空间S2无人机使用说明书——52、初级版——使用PID算法进行基于yolo的目标跟踪

引言&#xff1a;在实际工程项目中&#xff0c;为了提高系统的响应速度和稳定性&#xff0c;往往需要采用一定的控制算法进行目标跟踪。这里抛砖引玉&#xff0c;仅采用简单的PID算法进行目标的跟随控制&#xff0c;目标的识别依然采用yolo。对系统要求更高的&#xff0c;可以对…

项目中使用Java中List.subList()的注意事项

使用介绍 在Java中&#xff0c;subList是List接口的一个方法&#xff0c;用于获取原始列表的子列表 方法的声明如下 List<E> subList(int fromIndex, int toIndex);fromIndex&#xff1a;起始索引&#xff08;包括&#xff09;toIndex&#xff1a;结束索引&#xff08…

Activemq存储KahaDb详解

引言 ActiveMQ在不提供持久化的情况下&#xff0c;数据保存在内存中&#xff0c;一旦应用崩溃或者重启之后&#xff0c;数据都将会丢失&#xff0c;这显然在大部分情况下是我们所不希望的。对此ActiveMQ提供了两种持久化方式以供选择。 kahaDB kahaDB是一个基于文件&#xf…

WPF+Halcon 培训项目实战(10):HS组件绘制图案

文章目录 前言相关链接项目专栏运行环境匹配图片模板匹配加载模板文件运行结果 绘制十字标 WPF HS组件绘制图像绘制和生成的区别 前言 为了更好地去学习WPFHalcon&#xff0c;我决定去报个班学一下。原因无非是想换个工作。相关的教学视频来源于下方的Up主的提供的教程。这里只…

元旦特辑:Note6---选择排序

目录 前言❌ 1. 基本思想⚠️ 2. 直接选择排序&#x1f7e2; 2.1 思路分析✳️ 2.2 代码实现❎ 2.2.1 sort.h 2.2.2 sort.c 2.2.3 test.c 2.3 问题解决❇️ 2.3.1 sort.c修改 2.4 特性总结✅ 3. 堆排序&#x1f535; 3.1 代码实现&#x1f3e7; 3.2 特性总结&…

神经元科技发布AI agent—“萨蔓莎”

今天神经元科技发布AI agent—“萨蔓莎“&#xff08;Samantha &#xff09;&#xff01; 取名“萨蔓莎”&#xff0c;是来自于一部讲述AI的电影《HER》。 电影讲述的是电影讲述男子西奥多汤布里&#xff08;Theodore Twombly&#xff0c;饰&#xff09;与拟人化萨曼莎&#…

Vue常见面试问答

vue响应式数据 vue2 Vue2 的对象数据是通过 Object.defineProperty 对每个属性进行监听&#xff0c;当对属性进行读取的时候&#xff0c;就会触发 getter&#xff0c;对属性进行设置的时候&#xff0c;就会触发 setter。 /** * 这里的函数 defineReactive 用来对 Object.def…

如何正确使用docker搭建redis服务器,安装gcc和make以及出现错误时的解决办法

搭建redis服务器 目录 搭建redis服务器 &#xff08;1&#xff09;开启docker&#xff0c;并查看是否开启成功 &#xff08;2&#xff09;启动上面创建的ssrf容器&#xff0c;并进入ssrf容器 &#xff08;3&#xff09;进入opt&#xff0c;然后下载redis-5.0.5.tar.gz &a…

Apache SSI 远程命令执行漏洞

一、环境搭建 二、访问upload.php 三、写shell <!--#exec cmd"id" --> 四、访问 如图所示&#xff0c;即getshell成功&#xff01;​

Zookeeper-Zookeeper应用场景实战

1. Zookeeper Java客户端实战 ZooKeeper应用的开发主要通过Java客户端API去连接和操作ZooKeeper集群。 可供选择的Java客户端API有&#xff1a; ZooKeeper官方的Java客户端API。 第三方的Java客户端API&#xff0c;比如Curator。 ZooKeeper官方的客户端API提供了基本的操作…

宝塔部署flask添加ssl即https

在宝塔部署flask的步骤我已经写了一篇博客:宝塔部署flask项目-CSDN博客 之前说如果出现找不到application错误: spawned uWSGI http 1 (pid: 3116) --- no python application found, check your startup logs for errors --- [pid: 3114|app: -1|req: -1/1] 127.0.0.1 () {6…

sklearn学习的一个例子用pycharm jupyter

环境 运行在jupyter 进行开发。即一个WEB端的开发工具。能适时显示开发的输出。后缀用的是ipynb.pycharm也可以支持。但也要提示按装jupyter. 或直接用andcoda 这里我们用pycharm进行项目创建 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple jupyterlab pip ins…

QT 利用开源7z 实现解压各种压缩包,包括进度条和文件名的显示(zip,7z,rar,iso等50多种格式)

想做一个winRAR一样的解压软件吗?很简单,利用开源的7z库就能实现。我看网上其他人说的方法不敢苟同,误人子弟。以前自己在项目中使用过7z,这次又有需要,就想记录下来。如果你研究过如何用7z的话,一定知道7z的每一个GUID都代表了一种格式,50多种GUID也就有50多个格式,最…

uniapp打包Android、Ios、微信小程序

首先我们需要在我们的代码中&#xff0c;把我们所要用到的配置信息配置好&#xff0c;在检查一下我们测试的内容是否有打开&#xff08;取消注释&#xff09;&#xff0c;在检查一下我们的版本信息是否正确&#xff0c;查看一下接口ip是否是正式线 这里的配置信息一定要配置好…

Screenshot-to-code开源项目mac上实践

github上的开源项目&#xff0c;看介绍可以将设计ui图片转换为 HTML 和 CSS 源码地址&#xff1a; GitCode - 开发者的代码家园 我的mac安装了2.7和3.11&#xff0c;就用3吧直接上代码 安装 pip3 install keras tensorflow pillow h5py jupyter 报错 ERROR: Could not in…

linux实用技巧:ubuntu18.04安装samba服务器实现局域网文件共享

Ubuntu安装配置Samba服务与Win10共享文件 Chapter1 Ubuntu18.04安装配置Samba服务与Win10共享文件一、什么是Samba二、安装Samba1、查看是否有安装samba2、安装samba 三、配置Samba服务1、创建共享目录&#xff08;以samba_workspaces为例&#xff09;2、为samba设置登录用户3、…