来源:晓飞的算法工程笔记 公众号,转载请注明出处

论文: Improving Object Detection via Local-global Contrastive Learning

创新点


  • 提出了一种新颖的图像到图像转换方法,用于跨域物体检测。
  • 该方法为一个具有引导先验的对比学习框架,通过空间注意力掩码优化物体实例的外观,隐式地将场景划分为与目标物体实例相关的前景区域和非物体的背景区域。
  • 在转换过程中,该方法并不依赖物体标注来明确体实例,而是通过对比局部与全局信息来学习表示物体。
  • 在三个具有挑战性的基准上进行了多个跨域物体检测设置的实验,得到了最先进的性能。

内容概述


检测模型通常依赖于大规模的标注数据来学习具有代表性的特征,但往往难以很好地泛化到存在视觉差异的新目标领域(如阴雾天气与晴朗天气场景)。图像到图像(I2I)转换旨在缓解输入级别的这种领域差距,从而减少视觉领域中的分布转移。

高成本的配对图像(领域间)数据收集促进了业界对无配对图像到图像转换的研究,但往往会导致严重的内容畸变和形状变形,这种失败可能会对下游物体检测任务的性能产生不利影响。指明物体实例可以为改善图像转换提供了直观的方向,但这依赖于物体标注,以便在目标领域中区分物体和背景的空间图像区域,从根本上限制了它们的适用性。

对比学习通过最大化对应输入和输出区域之间的互信息,已成为解决图像到图像转换的一种有前景的策略。但现有方法将图像转换视为一个全局任务,处理具有复杂局部结构的物体的图像时效果不佳。由于物体与背景之间的视觉差异通常很大,论文认为隐式地建模背景和前景物体区域可以提升局部显著区域的转换质量,从而显著改善下游物体检测。此外,前景和背景的分离可以通过局部-全局对比学习来实现。

基于这一直觉,论文提出了一种基于对比学习的图像到图像转换框架,用于跨域物体检测。该框架引入一种结构诱导先验,通过空间注意力掩码优化物体实例的外观,能够有效地将场景解构为背景和前景区域。

整体方案


用于无配对I2I转换的对比学习

自监督表示是在对比学习机制下,通过考虑字典查找任务实现的。给定一个编码查询 \(q\) ,任务是识别在一组编码键 \(\{k_0, k_1, ...\}\) 中的与查询 \(q\) 匹配的唯一正键 \(k_{{+}}\) 。使用InfoNCE损失函数来使 \(q\) 靠近 \(k_{{+}}\) 的同时,推动其远离一组替代负键 \(\{k_{{-}}\}\) :

\[\begin{equation}
\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)\) ,权重由相应的注意力掩码给出,并加上一个额外的表示图像的背景内容:

\[\begin{equation}
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\) :

\[\begin{equation}
\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}\) ,该损失利用了局部和全局图像块之间的关系,完整的优化目标为:

\[\begin{equation}
\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\) 的无监督损失可以表示如下:

\[\begin{equation}
\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的更多相关文章

  1. AJAX学习笔记2:XHR实现跨域资源共享(CORS)以及和JSONP的对比----转载

    1 前言: 首先对参考文章作者表示感谢,你们的经验总结给我们这些新手提供了太多资源.本文致力于解决AJAX的CORS问题,我在逻辑上进行了梳理:首先,系统的总结了CORS问题的起源-同源策略:其次,介 ...

  2. 学习ASP.NET Core(11)-解决跨域问题与程序部署

    上一篇我们介绍了系统日志与测试相关的内容并添加了相关的功能:本章我们将介绍跨域与程序部署相关的内容 一.跨域 1.跨域的概念 1.什么是跨域? 一个请求的URL由协议,域名,端口号组成,以百度的htt ...

  3. JavaScript学习总结(一)——延迟对象、跨域、模板引擎、弹出层、AJAX示例

    一.AJAX示例 AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML) 是指一种创建交互式网页应用的开发技术.改善用户体验,实现无刷新效 ...

  4. JavaScript学习总结(二)——延迟对象、跨域、模板引擎、弹出层、AJAX示例

    一.AJAX示例 AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML) 是指一种创建交互式网页应用的开发技术.改善用户体验,实现无刷新效 ...

  5. JavaScript学习笔记(一)——延迟对象、跨域、模板引擎、弹出层、AJAX示例

    一.AJAX示例 AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML) 是指一种创建交互式网页应用的开发技术.改善用户体验,实现无刷新效 ...

  6. SpringBoot学习笔记(7)-----CORS支持解决跨域问题

    在实际应用开发中,跨域是一个比较常见的问题,解决方法可以用jsonp,frame,cors等, 这里示例的是SpringBoot对CORS的支持的三种实现方式 第一种:配置一种全局的支持,这种方式需要 ...

  7. opencv学习之路(37)、运动物体检测(二)

    一.运动物体轮廓椭圆拟合及中心 #include "opencv2/opencv.hpp" #include<iostream> using namespace std ...

  8. 深度学习原理与框架-卷积网络细节-三代物体检测算法 1.R-CNN 2.Fast R-CNN 3.Faster R-CNN

    目标检测的选框操作:第一步:找出一些边缘信息,进行图像合并,获得少量的边框信息 1.R-CNN, 第一步:进行图像的选框,对于选出来的框,使用卷积计算其相似度,选择最相似ROI的选框,即最大值抑制RO ...

  9. opencv学习之路(36)、运动物体检测(一)

    一.简介 二.背景减法 图片说明 #include "opencv2/opencv.hpp"using namespace cv; void main() { Mat img1 = ...

  10. 深度学习(六十四)Faster R-CNN物体检测

随机推荐

  1. 工具 – VS Code Extensions

    前言 分享我用着的 Extensions. Angular Language Service 不用介绍,用 Angular 的必装. Better Comments 让注释有多点颜色 more col ...

  2. 痞子衡嵌入式:JLink命令行以及JFlash对于下载算法的作用地址范围认定

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是JLink命令行以及JFlash对于下载算法的作用地址范围认定. 最近痞子衡在给一个 RT1170 客户定制一个 Infineon Mi ...

  3. QT6 QML编程

    QT6 QML编程 使用AI技术辅助生成 QT界面美化视频课程 QT性能优化视频课程 QT原理与源码分析视频课程 QT QML C++扩展开发视频课程 免费QT视频课程 您可以看免费1000+个QT技 ...

  4. Dockerfile构建镜像(八)

    一.构建镜像 现在让我们再回到之前定制的 nginx 镜像的 Dockerfile 来.现在我们明白了这个 Dockerfile 的内容,那么让我们来构建这个镜像吧.在 Dockerfile 文件所在 ...

  5. Dos常用命令 - Dir

    Dos命令,用于扫描当前目录创建目录清单 dir /s /b /ad >> "目录清单.txt" 解释: 将 dir /s /b /ad 生成的目录 追加写入目录清单. ...

  6. 【赵渝强老师】MongoDB中的索引(下)

    (四)索引的类型三:复合索引(Compound Index) MongoDB支持复合索引,即将多个键组合到一起创建索引.该方式称为复合索引,或者也叫组合索引,该方式能够满足多键值匹配查询使用索引的情形 ...

  7. kdump

    Kdump简单介绍 什么是Kdump? Kdump是在系统崩溃.死锁或死机时用来转储内存运行参数的一个工具和服务,是一种新的crash dump捕获机制,用来捕获kernel crash(内核崩溃)的 ...

  8. Nuxt.js 应用中的 page:transition:finish 钩子详解

    title: Nuxt.js 应用中的 page:transition:finish 钩子详解 date: 2024/10/10 updated: 2024/10/10 author: cmdrago ...

  9. nestjs 中管道的使用-验证DTO

    1. 安装管道 nest g pi role 意思是安装一个role模块的管道 2. 在controller中使用管道 管道的作用: 1. 数据的转换 2. DTO规则验证 一般使用全局配置管道 区别 ...

  10. 组件传参v-model语法糖只能写一次的解决办法

    v-model 的使用 解决只能使用一次v-model的问题:使用 sync 修饰符