无需配对数据的对比学习图像到图像转换,助力跨域物体检测 | BMVC'24
来源:晓飞的算法工程笔记 公众号,转载请注明出处
论文: Improving Object Detection via Local-global Contrastive Learning
创新点
- 提出了一种新颖的图像到图像转换方法,用于跨域物体检测。
- 该方法为一个具有引导先验的对比学习框架,通过空间注意力掩码优化物体实例的外观,隐式地将场景划分为与目标物体实例相关的前景区域和非物体的背景区域。
- 在转换过程中,该方法并不依赖物体标注来明确体实例,而是通过对比局部与全局信息来学习表示物体。
- 在三个具有挑战性的基准上进行了多个跨域物体检测设置的实验,得到了最先进的性能。
内容概述
检测模型通常依赖于大规模的标注数据来学习具有代表性的特征,但往往难以很好地泛化到存在视觉差异的新目标领域(如阴雾天气与晴朗天气场景)。图像到图像(I2I
)转换旨在缓解输入级别的这种领域差距,从而减少视觉领域中的分布转移。
高成本的配对图像(领域间)数据收集促进了业界对无配对图像到图像转换的研究,但往往会导致严重的内容畸变和形状变形,这种失败可能会对下游物体检测任务的性能产生不利影响。指明物体实例可以为改善图像转换提供了直观的方向,但这依赖于物体标注,以便在目标领域中区分物体和背景的空间图像区域,从根本上限制了它们的适用性。
对比学习通过最大化对应输入和输出区域之间的互信息,已成为解决图像到图像转换的一种有前景的策略。但现有方法将图像转换视为一个全局任务,处理具有复杂局部结构的物体的图像时效果不佳。由于物体与背景之间的视觉差异通常很大,论文认为隐式地建模背景和前景物体区域可以提升局部显著区域的转换质量,从而显著改善下游物体检测。此外,前景和背景的分离可以通过局部-全局对比学习来实现。
基于这一直觉,论文提出了一种基于对比学习的图像到图像转换框架,用于跨域物体检测。该框架引入一种结构诱导先验,通过空间注意力掩码优化物体实例的外观,能够有效地将场景解构为背景和前景区域。
整体方案
用于无配对I2I
转换的对比学习
自监督表示是在对比学习机制下,通过考虑字典查找任务实现的。给定一个编码查询 \(q\) ,任务是识别在一组编码键 \(\{k_0, k_1, ...\}\) 中的与查询 \(q\) 匹配的唯一正键 \(k_{{+}}\) 。使用InfoNCE
损失函数来使 \(q\) 靠近 \(k_{{+}}\) 的同时,推动其远离一组替代负键 \(\{k_{{-}}\}\) :
\mathcal{L}^{\text{NCE}}
= -\log\frac{\exp(q \cdot k_{{+}} \mathbin{/} \tau )}{\exp(q\cdot k_{{+}} \mathbin{/} \tau ) + \sum_{k_{-} } \exp(q\cdot k_{{-}} \mathbin{/} \tau ) }
\label{eq:nce},
\end{equation}
\]
通过约束输入图像和转换输出图像之间匹配的空间位置(图像块)具有高互信息,对比技术可以用于图像到图像的翻译任务。在这种情况下,查询嵌入 \(q\) 是通过编码输出图像的局部区域生成的。正键 \(k_{{+}}\) 是指输入的相应区域,而负键集 \(\{k_{{-}}\}\) 是通过编码输入图像的不同区域进行选择的。
用于I2I
转换的空间注意力
论文提出了一种以注意力驱动的方案,学习将输入图像 \(x\) 分解为前景和背景区域,并鼓励翻译模型专注于优化前景物体的外观。
方案采用编码器-解码器架构,其中编码器 \(E_B\) 作为特征提取器,将输入图像 \(x\) 编码低维度的图像表示 \(m_E = E_B(x)\) 。解码器将 \(m_E\) 作为输入,分为两个组件:1)内容生成器 \(G_C\) 生成一组 \(n\) 个内容图 \(\{C_t \,|\, t \in [0,n{-}1]\}\) 。2)注意力生成器 \(G_A\) 输出一组 \(n+1\) 个注意力掩码 \(\{A_t \,|\, t \in [0,n]\}\) 。
通过对生成的前景内容图进行加权求和得到转换后的图像 \(G(x)\) ,权重由相应的注意力掩码给出,并加上一个额外的表示图像的背景内容:
G(x)=\sum_{t=1}^{n} \underbrace{(C^{t} \odot A^{t})}_\textrm{foreground}
+
\underbrace{(x \odot A^{n+1})}_\textrm{background}.
\label{eq:fb}
\end{equation}
\]
使用在公式1
中找到的InfoNCE
损失来训练生成器,该损失在图像块级别上强制内容和结构的一致性。为了确保转换后的图像与源域 \(Y\) 的外观相匹配,进一步加入经过标准对抗损失训练的鉴别模块 \(D\) :
\mathcal{L}_{adv} = -\mathbb{E}_{y \sim Y} \log D(y)
-\mathbb{E}_{x \sim X} \log (1- D(G(x)))
\label{eq:adv}.
\end{equation}
\]
鉴别器然后最小化标准二分类任务的负对数似然,这等同于最小化模型输出分布与真实源域分布 \(Y\) 之间的Jensen-Shannon
(JS
) 散度。
局部全局对比学习
为了进一步引导转换任务关注包含具有语义意义的内容的图像区域,在注意力生成器上引入了额外的损失 \(\mathcal{L}_{G_A}\) ,该损失利用了局部和全局图像块之间的关系,完整的优化目标为:
\mathcal{L}_{G} = \mathcal{L}_{adv} + \mathcal{L}^{\text{NCE}} + \mathcal{L}_{G_A}
\label{eq:total1}.
\end{equation}
\]
对 \(x\) 应用两种不同的随机增强,生成变换后的图像 \(x_1\) 和 \(x_2\) ,并相应地得到两组变换后的图像块 \(P_1\) 和 \(P_2\) 。为了获得用于对比学习的局部和全局表征,在注意力生成器 \(G_{A}\) 上附加了两个投影头以及引入了动量复制的 \(G_{Am}\) 和 \(E_{Bm}\) (权重使用指数移动平均进行更新),生成两组全局和局部特征表征 \(\{ f_{A}x_1,f_{A}x_2, f_{A}x_{1}^p, f_{A}x_{2}^p \}\) 和 \(\{ f_{Am}x_1,f_{Am}x_2, f_{Am}x_{1}^p, f_{Am}x_{2}^p \}\) ,计算这些特征集中的所有对之间的 \(\mathcal{L}^{NCE}\) 以优化模型的区分能力,负对则从内存库中抽取。
最后,定义多尺度监督以提高模型识别显著区域的能力。在 \(G_A\) 的每一层输出处引入额外的局部和全局MLP
层,并计算每新特征集的infoNCE
损失。
因此,对 \(G_A\) 的无监督损失可以表示如下:
\mathcal{L}_{G_A}=\sum_{i=1}^{L} w_i \mathcal{L}^{NCE}_{g \leftrightarrow g} + \sum_{i=1}^{L} w_i \mathcal{L}^{NCE}_{g \leftrightarrow l} +
\sum_{i=1}^{L} w_i \mathcal{L}^{NCE}_{l \leftrightarrow l},
\label{eq:detco}
\end{equation}
\]
其中 \(L\) 是 \(G_A\) 中的层数, \(w_i\) 是一个权重参数,用于控制每层贡献的重要性。
通过将上述损失附加到 \(G_A\) 模块的特征上,能够鼓励注意力生成器提高对语义内容的敏感性,并关注对目标检测任务重要的转换区域。
主要实验
如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】
无需配对数据的对比学习图像到图像转换,助力跨域物体检测 | BMVC'24的更多相关文章
- AJAX学习笔记2:XHR实现跨域资源共享(CORS)以及和JSONP的对比----转载
1 前言: 首先对参考文章作者表示感谢,你们的经验总结给我们这些新手提供了太多资源.本文致力于解决AJAX的CORS问题,我在逻辑上进行了梳理:首先,系统的总结了CORS问题的起源-同源策略:其次,介 ...
- 学习ASP.NET Core(11)-解决跨域问题与程序部署
上一篇我们介绍了系统日志与测试相关的内容并添加了相关的功能:本章我们将介绍跨域与程序部署相关的内容 一.跨域 1.跨域的概念 1.什么是跨域? 一个请求的URL由协议,域名,端口号组成,以百度的htt ...
- JavaScript学习总结(一)——延迟对象、跨域、模板引擎、弹出层、AJAX示例
一.AJAX示例 AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML) 是指一种创建交互式网页应用的开发技术.改善用户体验,实现无刷新效 ...
- JavaScript学习总结(二)——延迟对象、跨域、模板引擎、弹出层、AJAX示例
一.AJAX示例 AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML) 是指一种创建交互式网页应用的开发技术.改善用户体验,实现无刷新效 ...
- JavaScript学习笔记(一)——延迟对象、跨域、模板引擎、弹出层、AJAX示例
一.AJAX示例 AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML) 是指一种创建交互式网页应用的开发技术.改善用户体验,实现无刷新效 ...
- SpringBoot学习笔记(7)-----CORS支持解决跨域问题
在实际应用开发中,跨域是一个比较常见的问题,解决方法可以用jsonp,frame,cors等, 这里示例的是SpringBoot对CORS的支持的三种实现方式 第一种:配置一种全局的支持,这种方式需要 ...
- opencv学习之路(37)、运动物体检测(二)
一.运动物体轮廓椭圆拟合及中心 #include "opencv2/opencv.hpp" #include<iostream> using namespace std ...
- 深度学习原理与框架-卷积网络细节-三代物体检测算法 1.R-CNN 2.Fast R-CNN 3.Faster R-CNN
目标检测的选框操作:第一步:找出一些边缘信息,进行图像合并,获得少量的边框信息 1.R-CNN, 第一步:进行图像的选框,对于选出来的框,使用卷积计算其相似度,选择最相似ROI的选框,即最大值抑制RO ...
- opencv学习之路(36)、运动物体检测(一)
一.简介 二.背景减法 图片说明 #include "opencv2/opencv.hpp"using namespace cv; void main() { Mat img1 = ...
- 深度学习(六十四)Faster R-CNN物体检测
随机推荐
- c程序设计语言 by K&R(二)指针与数组
指针与数组 1. c语言只有值传递,没有引用传递 可通过指针交换 #include <stdio.h> #include <stdlib.h> void swap(int* a ...
- CSS – :has parent selector, @container container query, transform replacement, subgrid (2022 期待新功能)
前言 CSS 一直有一些老问题没有被解决. 2022 视乎看见了曙光. 参考 4 Exciting New CSS Features in 2022 :has() 参考: YouTube – How ...
- CSS & JS Effect – fade in
参考: stackoverflow – Is there a CSS-only (pure CSS) workaround to apply fade-in and fade-out on objec ...
- Linux板子与ubuntu交互,NFS配置
第0步:保证你的ubuntu能上网,可以选择NAT方式让ubuntu上网. 第一步:安装NFS服务 sudo apt-get install nfs-kernel-server portmap 第二步 ...
- SpringBoot创建微服务项目
下载安装并配置git 为自己的git设置名字 git config --global user.name "XXX" 配置自己注册码云的邮箱 git config --global ...
- (系列五).net8 中使用Dapper搭建底层仓储连接数据库(附源码)
说明 该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成系统开发). 该系统文章,我会尽量说的非常详细,做到不管新手.老手都能看懂. 说明:OverallAuth2 ...
- ARM SMMU原理与IOMMU技术(“VT-d” DMA、I/O虚拟化、内存虚拟化)
名词缩写 ASID:Address Space ID 地址空间标识符 CD:Context Descriptor: 上下文描述符: CTP:Context-table pointer 上下文表指针 E ...
- linux 内核中READ_ONCE宏定义
在Linux内核编程中,READ_ONCE 宏用于确保从内存中读取一个变量的值时,编译器不会对这个读取操作进行优化,从而保证了读取操作的原子性.这个宏通常在需要防止编译器优化.多线程或中断上下文中使用 ...
- Serilog文档翻译系列(八) - 记录器的生命周期、可靠性
01.记录器的生命周期 Serilog 大多数情况下"只需使用",并且在创建和处理日志记录器时不需要过多考虑.然而,由于以下原因: 某些接收器(sink)涉及后台进程,特别是那些使 ...
- KubeSphere 接入外部 Elasticsearch 最佳实践
作者:张坚,科大讯飞开发工程师,云原生爱好者. 大家好,我是张坚.今天来聊聊如何在 KubeSphere 中集成外置的 ES 组件. KubeSphere 在安装完成时候可以启用日志组件,这样会安装 ...