论文阅读<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 结果。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

阶段性复习(三)

if后面是赋值符,所以最后的值是a for(; ;)是死循环 大小写转换 在这道题中,通过分析可知,在小写转换大写的过程中,需要满足的条件是word0,同时是小写,而在第…

UV胶有缺点吗?

UV胶具有许多优势,有什么缺点: 感光性 UV胶的固化是通过紫外光照射完成的,因此需要确保所有焊点都能被充分照射到。 2.固化深度 UV胶的紫外线透过深度有限,如果需要厚度过大,需要分多层次涂覆后再固化。 3&#xf…

【GOLANG】使用插件 Goanno 的方式来对方法、接口、结构体注释模板配置

直接 使用插件 Goanno 的方式来对方法、接口、结构体注释模板配置 1、简单安装 Goanno 插件 File->Settings->Plugins , 搜索 Goanno Normal Method 配置内容如下: // Title ${function_name} // Description ${todo} // Author mumu ${date} ${time} // Par…

Vue常见面试问答

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

Zookeeper无法启动,报“Unable to load database on disk”

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。 问题描述: 测试环境部署zookeeper的服务器磁盘满了,引起服务异常,将zookeeper进程杀掉之后&…

vscode软件安装步骤

目录 一、下载软件安装包 二、运行安装包后 一、下载软件安装包 打开vscode官方网址,找到下载界面 链接如下:Download Visual Studio Code - Mac, Linux, Windows 我是windows电脑,各位小伙伴自己选择合适的版本,点击下载按钮…

<JavaEE> 协议格式 -- 传输层协议 TCP

目录 一、TCP协议格式长啥样? 二、TCP协议属性解释 1)源端口号/目的端口号 2)序号/确认序号 3)TCP报头长度 4)保留位 5)标志位 6)窗口大小 7)校验和 8)紧急指针…

56.网游逆向分析与插件开发-游戏增加自动化助手接口-通过UI分析自动药水设定功能

内容来源于:易道云信息技术研究院VIP课 上一节内容:自动药水设定功能的逆向分析-CSDN博客 这次是假设没有之前的思路积累的话,怎样去找按钮事件。 通过ui当做切入点去做,就是一个窗口它显示不显示,游戏怎样控制这个…

【unity中使用高度图创建地图】

unity中使用高度图创建地图 插件 讲解案例为unity2022版本 这个是插件地址 也可以在资源商店中搜索 terrain-tools 介绍 Terrain Tools入门Terrain Tools是一个软件包,你可以选择将其添加到Unity 2019.1或更高版本中的任何项目中。要将该软件包添加到你的项目…

2023年03月21日_chatgpt宕机事件的简单回顾

你能想象吗 ChatGPT挂了 昨天半夜呢 来自全球各地的用户纷纷发现 ChatGPT的网站弹出了报错警告的信息 然后立即就无法使用了 即使是有特权的plus账户也未能幸免 一时之间呢 chatgptdown的话题在Twitter刷屏 不少重度的用户表示很着急 有的用户说呢没了ChatGPT 这工作…

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

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

时序分解 | Matlab实现贝叶斯变化点检测与时间序列分解

时序分解 | Matlab实现贝叶斯变化点检测与时间序列分解 目录 时序分解 | Matlab实现贝叶斯变化点检测与时间序列分解效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现贝叶斯变化点检测与时间序列分解 1.Matlab实现贝叶斯变化点检测与时间序列分解,完…

产品经理学习-策略产品指标

目录: 数据指标概述 通用指标介绍 Web端常用指标 移动端常用指标 如何选择一个合适的数据指标 数据指标概述 指标是衡量目标的一个参数,指一项活动中预期达到的指标、目标等,一般用数据表示,因此又称为数据指标;…

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

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

【计算机毕业设计】python+django数码电子论坛系统设计与实现

本系统主要包括管理员和用户两个角色组成;主要包括:首页、个人中心、用户管理、分类管理、数码板块管理、数码评价管理、数码论坛管理、畅聊板块管理、系统管理等功能的管理系统。 后端:pythondjango 前端:vue.jselementui 框架&a…

SpringValidation自定义注解以及分组校验

SpringValidation的参数校验使用可参考:【SpringMVC应用篇】Spring Validation 参数校验-CSDN博客 目录 1. 引入依赖 2. 自定义注解校验 2.1 创建Validation类 2.2 创建注解对象 2.3 使用注解 3. 分组校验 3.1 实体类内部定义接口 3.2 在参数上指定分组 1. …

leetcode 315. 计算右侧小于当前元素的个数(hard)【小林优质解法】

链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 代码: class Solution {int[]counts; //用来存储结果int[]index; //用来绑定数据和原下标int[]helpNums; //用于辅助排序 nums 数组int[]helpIndex; //用于辅助排序 i…

学习动态规划不同路径、最小路径和、打家劫舍、打家劫舍iii

学习动态规划|不同路径、最小路径和、打家劫舍、打家劫舍iii 62 不同路径 动态规划,dp[i][j]表示从左上角到(i,j)的路径数量dp[i][j] dp[i-1][j] dp[i][j-1] import java.util.Arrays;/*** 路径数量* 动态规划,dp[i][j]表示从左上角到(i,j)的路径数量…

KG+LLM(一)KnowGPT: Black-Box Knowledge Injection for Large Language Models

论文链接:2023.12-https://arxiv.org/pdf/2312.06185.pdf 1.Background & Motivation 目前生成式的语言模型,如ChatGPT等在通用领域获得了巨大的成功,但在专业领域,由于缺乏相关事实性知识,LLM往往会产生不准确的…

List常见方法和遍历操作

List集合的特点 有序: 存和取的元素顺序一致有索引:可以通过索引操作元素可重复:存储的元素可以重复 List集合的特有方法 Collection的方法List都继承了List集合因为有索引,所以有了很多操作索引的方法 ublic static void main…