DRM:清华提出无偏差的新类发现与定位新方法 | CVPR 2024
论文分析了现有的新类别发现和定位(
NCDL)方法并确定了核心问题:目标检测器往往偏向已知的目标,忽略未知的目标。为了解决这个问题,论文提出了去偏差区域挖掘(DRM)方法,以互补的方式结合类无关RPN和类感知RPN进行目标定位,利用未标记数据的半监督对比学习来改进表征网络,以及采用简单高效的mini-batch K-means聚类方法来进行新类发现来源:晓飞的算法工程笔记 公众号
论文: Debiased Novel Category Discovering and Localization

Introduction
现有的对象检测方法是在固定类别的封闭数据集上进行训练的和评估的,而在现实场景中,对象检测器需要面对已知对象和潜在未知对象。在训练后,模型就不会识别出训练期间没有看到的任何物体,要么将未知对象视为背景,要么将其错误分类为已知类别。相比之下,人类有感知、发现和识别未知新物体的能力。因此,新类别发现(Novel Category Discovery,NCD)问题引起了人们的广泛关注,在检测已知对象的同时还要无监督地发现新类别。

大多数NCD方法都先对标记数据集进行预训练步骤,然后对未标记数据进行处理。虽然有效,但大多数方法仅利用已知的对象和类别进行预训练和定位,这会引入两种偏差。首先是使用封闭集训练的检测头引入的有偏差的特征表达,其次是仅在标记的封闭集上训练RPN导致的定位偏差。
为了解决上述问题,论文提出了去偏差NCD方法来减轻特征表达和对象定位中的偏差:
- 引入半监督对比学习方法使模型能够学习相似实例的相似特征,在将未知类对象与已知类对象区分开。
- 提出双
RPN策略来同时检测图像中的目标对象。一个RPN具有类感知能力,旨在获取已知类的准确定位信息。另一个RPN则与类别无关,旨在定位未标记的目标对象。
论文的贡献可以总结如下:
- 重新审视开放世界中新类别发现的问题,研究现有方法中的偏差问题。
- 使用双对象检测器来获得良好的区域提案,可以有效地找到图像中的所有目标对象并更好地定位。
- 设计一种半监督实例级对比学习方法以获得比以前更好的特征表达,使模型依赖于无标记的图像信息来学习图像特征。
- 通过大量的实验的结果,表明论文的方法优于其他基线方法。
Framework Details
Overview

整体结构如图 2 所示:
- 通过半监督对比学习优化特征提取器,学习更通用的特征表达。
- 通过双
RPN模块生成不同的框,再使用ROI pooling来池化特征用作最终提案输入。 - 通过聚类将具有相似特征的实例被分在一起,从而可以发现不同的未知类别。
Debiased Region Mining
在实际任务中,论文观察到RPN的两种场景:
- 当遇到未注释的图像时,模型倾向于将它们分类为背景而不定位任何对象。
- 当模型识别未知物体时,它会错误地将其分类为高置信度的已知物体。
在Faster R-CNN中,目标定位器为上游任务的分类头,提取模型感兴趣的已知类。这导致偏向于识别已知目标,严重影响模型的通用性。

在图 3 中,展示了三种不同的RPN的定位表现:
- 第一种为类感知
RPN:此类提案对VOC中的已知对象表现出更高的置信度,从而提高了提案质量。然而,置信度一般的提案往往是聚拢的,通常只包含目标对象的一部分。因此,检测到的对象的泛化能力有限。 - 第二种为类不可知
RPN:通过删除分类头并仅在网络学习objectness来生成提案。尽管与基线相比,提案泛化有所增强,但定位VOC类别的准确性仍未达到最佳水平,并且许多提案仍然表现出聚拢现象。 - 第三种为论文提出的合并方法:通过从两个框中选择可靠的框,对每个框的置信度进行缩放后通过
NMS统一提案。该方法显着提高了提案的质量,能够在不影响已知VOC类别准确性的情况下提取更多目标对象。此外,它有效地解决了提案聚拢问题。
论文认为,现实场景中的NCDL问题应该与开放世界中的对象检测场景更加一致,对象提取器不应受到分类头的限制。因此,论文在Faster-RCNN中额外引入类无关的RPN,可以生成更通用的对象分数并检索更多对象。该RPN将与类相关的损失替换为与类无关的损失,仅通过以下方式估计提案的objectness:
- 在
RPN中使用centerness回归而不是分类损失。 - 在
ROI头中使用IoU回归而不是的分类损失。
对不同RPN获得的两组框进行可靠性分析,发现两组框在置信区间上的分布不同,表明各有不同优缺点。因此,论文提出了Debiased Region Mining(DRM)的方法,通过类感知RPN和类无关RPN获得两组不同的框。类感知RPN获得的框在已知类上具有较高的准确率,但泛化性较差,在未知类上表现不佳。另一方面,由类无关的RPN获得的框在已知类上的表现可能不如前者,但对未知类有更强的泛化能力。将这两组框结合起来,就能得到一套结合了两者优点的新框合集。
假设两组框及其置信度分数表示为 \(\lambda_{1}\) 和 $\lambda_{2} $,分别服从两个不同的分布 \(\Phi_{1}\) 和 \(\Phi_{2}\),需要将这两个分布映射到统一的 \({\Phi}\) 以去除不同框生成方法之间的差距。为了保留置信度较高的框并过滤掉置信度非常低的框,设置阈值 \(\alpha\_i,\beta\_i(i=1,2)\) 来过滤置信度。过滤后合并两组框,使用NMS合并冗余框以获得融合后的结果。
Semi-supervised Contrastive Finetuning
在得到框后,采用实例级半监督对比学习方法来提取更通用和更具表现力的特征。
首先,根据GT框将VOC数据集中的图像裁剪成图像块,构成标记集 \(B_{\mathcal{L}}\)。随后,在__COCO__验证集上生成提案并裁剪出图像块,构成未标记集 \(B_{\mathcal{U}}\)。之后,通过随机增强给每个图像块 \(\mathbf{x}\) 生成两个不同的视图 \(\mathbf{x}^{\prime}\),无监督对比损失计算为:
\mathcal{L}_{i}^{u}=-\left|\mathrm{log}\frac{\mathrm{exp}(\mathbf{z}_{i}\cdot\mathbf{z}_{i}^{\prime}/\tau)}{\sum_{n}\,1_{n\ne i\;\mathrm{exp}(\mathbf{z}_{i}\cdot\mathbf{z}\_{n}/\tau)}}\right|
\quad\quad(1)
\]
其中 \(\mathbf{z},\mathbf{z}^{\prime}\) 是对应的特征,\(\tau\) 是温度超参数。
对于有标签的图像块,可以利用标签来形成有监督对比损失:
{\mathcal{L}}_{i}^{s}=-{\frac{1}{|{\mathcal{N}}(i)|}}\sum_{q\in{\mathcal{N}}(i)}\frac{\exp(\mathbf{z}_{i}\cdot\mathbf{z}_{q}/\tau)}{\sum_{n}\,1_{n\neq i}\exp(\mathbf{z}_{i}\cdot\mathbf{z}_{n}/\tau)},
\quad\quad(2)
\]
其中 \(\mathcal{N}(i)\) 表示与 \(\mathbf{x}\_{i}\) 具有相同标签的索引。
最后,总损失构造如下:
\mathcal{L}^{t}=(1-\lambda)\sum_{i\in B}\mathcal{L}_{i}^{u}+\lambda\sum_{i\in B_\mathcal{L}}\mathcal{L}\_{i}^{s}.
\quad\quad(3)
\]
该损失将用于监督特征提取器的训练。
Clustering
在完成对未知类别对象的对比学习后,模型对获得的信息进行聚类分析,将具有相似特征的未知图像聚合成簇。
使用类似于K-means的方法进行聚类,进行了两个修改:
- 采用
over-clustering策略,通过强制生成另一个更细粒度的未标记数据分区并增加K(估计的聚类数)来提高聚类纯度和特征质量。over-clustering有利于减少监督的介入,允许神经网络决定如何划分数据。在存在噪声数据或中间类被随机分配给相邻类别时,这种切分是有效的。 - 在新类别发现任务中使用
K-means非常耗时,采用Mini-batch K-means(大规模数据中K-means的优化算法)代替。在训练过程中随机采样数据子集来减少训练计算耗时,同时优化目标函数。
聚类算法的主要步骤如下:
- 提取训练数据的子集,并使用
K-means构建K个聚类中心。 - 从训练集中提取样本数据并添加到模型中,将其分配给最近的聚类中心。
- 更新每个簇的簇中心。
- 重复步骤2和3,直到聚类中心稳定或达到最大迭代次数。
Experiments





如果本文对你有帮助,麻烦点个赞或在看呗~undefined更多内容请关注 微信公众号【晓飞的算法工程笔记】
DRM:清华提出无偏差的新类发现与定位新方法 | CVPR 2024的更多相关文章
- selenium中webdriver跳转新页面后定位置新页面的两种方式
刚刚在写Python爬虫的时候用到了selenium , 在跳转新页面时发现无法定位新页面 , 查找不到新页面的元素 一番查询后得到了解决方法 , 便记录下来备忘 , 也与大家分享 # 页面跳转代码. ...
- ASP无惧上传类不能上传中文双引号文件及ASP函数InStr存在bug
ASP无惧上传类不能上传中文双引号文件及ASP函数InStr存在bug 近日发现eWebEditor V2.8 asp 版本上传文件文件名不能包含中文双引号,发现eWebEditor使用ASP“无惧上 ...
- 有意思的RTL函数RegisterClass(在持久化中,你生成的一个新类的对象,系统并不知道他是如何来的,因此需要你注册)good
例子1:Delphi中使用纯正的面向对象方法(这个例子最直接) Delphi的VCL技术使很多程序员能够非常快速的入门:程序员门只要简单的拖动再加上少量的几个Pascal语句,呵呵,一个可以运行得非常 ...
- 面向对象(类,实例变量,方法定义,方法重载,构造方法,this,string类)
面向对象 类是由属性和方法组成 类是所有创建对象的模板 实例变量有默认值 实例变量至少在本类范围中有效 实例变量与局部变量冲突时,局部变量优先 类中方法定义类似于函数定义 修饰符 返回值类型 方法名( ...
- Python 内编写类的各种技巧和方法
Python 内编写类的各种技巧和方法 简介 有关 Python 内编写类的各种技巧和方法(构建和初始化.重载操作符.类描述.属性访问控制.自定义序列.反射机制.可调用对象.上下文管理.构建描述符对象 ...
- 分析苹果代充产业链 汇率差+退款造就三线城市千万富翁_中新游戏研究_Joynews中新游戏
分析苹果代充产业链 汇率差+退款造就三线城市千万富翁_中新游戏研究_Joynews中新游戏 CNG:近日有媒体曝出8月22日这一天,有一家淘宝店卖出了351张面值4000南非南特的App Store ...
- Python中编写类的各种技巧和方法
简介 有关 Python 内编写类的各种技巧和方法(构建和初始化.重载操作符.类描述.属性访问控制.自定义序列.反射机制.可调用对象.上下文管理.构建描述符对象.Pickling). 你可以把它当作一 ...
- PHP 类与对象 全解析方法
1.类与对象 对象:实际存在该类事物中每个实物的个体.$a =new User(); 实例化后的$a 引用�php的别名,两个不同的变量名字指向相同的内容 封装: 把对象的属性和方法组织在一个类(逻辑 ...
- moviepy音视频剪辑:视频剪辑基类VideoClip的属性及方法详解
☞ ░ 前往老猿Python博文目录 ░ 一.概述 在<moviepy音视频剪辑:moviepy中的剪辑基类Clip详解>和<moviepy音视频剪辑:moviepy中的剪辑基类Cl ...
- 类(静态)变量和类(静态)static方法以及main方法、代码块,final方法的使用,单例设计模式
类的加载:时间 1.创建对象实例(new 一个新对象时) 2.创建子类对象实例,父类也会被加载 3.使用类的静态成员时(静态属性,静态方法) 一.static 静态变量:类变量,静态属性(会被该类的所 ...
随机推荐
- FFmpeg变速处理视频文件
使用工具:小丸工具箱,HandBrake,FFmpeg 首先确定视频是否为VFR(可变帧率),如果是VFR需要在二次处理前转换成CFR(固定帧率) VFR转换CFR可以使用FFmpeg命令行或Hand ...
- adb连接安卓设备失败failed to start daemon
adb连接安卓设备失败failed to start daemon Reference:https://blog.csdn.net/whshuo2010/article/details/5109449 ...
- 高通lk阶段mipi 代码解析以及新屏幕添加
参考:https://www.cnblogs.com/linhaostudy/p/9237526.html 背景 前段时间做了这块的工作,但总结完以后领导说我的认识还是过于肤浅,因此重新再看了一下. ...
- 信奥一本通1164:digit函数
1164:digit函数 时间限制: 1000 ms 内存限制: 65536 KB 提交数:41504 通过数: 26475 [题目描述] 在程序中定义一函数digit(n,k) ,它能分离出整数n ...
- tcp_tw_reuse、tcp_tw_recycle、tcp_fin_timeout参数介绍
参数介绍 net.ipv4.tcp_tw_reuse = 1 表示开启重用.允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭: net.ipv4.tcp_tw_rec ...
- 3568F-视频开发案例
- FairMOT复现报错存档
FairMOT复现 使用pip命令单独安装Cython包即可 修改下载的cython-bbox包里的setup.py里的代码 将#extra_compile_args=['-Wno-cpp'], 修改 ...
- 使用浏览器的cookies进行登陆
1.使用浏览器Cookie登陆 In [ ]: cookie = 'uniqueVisitorId=a2151df1-4833-00ae-72e0-f4b99d2b7be2; pgv_pvid=232 ...
- 有数大数据基础平台之智能运维平台EasyEagle介绍:集群队列篇
他来啦,他来啦!大数据基础平台发布会中提到的智能运维平台,他来啦! 作为数据平台的用户们,下述问题一直困扰着我们: 集群资源水位如何,利用率如何,是否需要扩容? 队列为什么最近大量任务出现pendin ...
- webgl未使用独立显卡报告2
楔子 在上一篇文章 <# [https://juejin.cn/post/7074771064286347301] webgl未使用独立显卡报告> 发表后,有读者在公众号给我发了一段评论, ...