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 静态变量:类变量,静态属性(会被该类的所 ...
随机推荐
- QQ、支付宝、微信收款码三合一
Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` QQ.支付宝.微信收款码三合一 日期:2018-8-24 ...
- 12-Python数据库访问
在CentOS7上安装Mariadb https://blog.csdn.net/NetRookieX/article/details/104734181 常用的增删改查 show databases ...
- python利用公私钥加解密
小贴士 这里不再赘述公私钥的生成过程.可以利用OpenSSL进行生成. 加密代码 #!/usr/bin/python #加密 #conda install pycrypto #提前安装模块 impor ...
- SpringBoot动态数据源配置
SpringBoot动态数据源配置 序:数据源动态切换流程图如下: 1:pom.xml文件依赖声明 <dependency> <groupId>org.springfram ...
- win11添加开机自启动
方法1 win + R 打开运行,输入 shell:startup 会打开一个文件夹 将想要启动的程序快捷方式放进文件夹 在设置里面搜索"启动",可以看到开机启动项,确认已经打开. ...
- Ubuntu 22.04扩容LVM空间
今天为了编译ThingsBoard的源代码,发现原来给虚拟机分配的40个G不够用了.于是乎在VMWare Workstation中扩容了40G的磁盘空间.但是此时lvm是不会自动扩容的,因此我们需要手 ...
- Centos 下Rabbit MQ 常用操作指令 汇总
1.rabbitmq 服务的启动停止. service rabbitmq-server start service rabbitmq-server stop 重启命令需要依次执行 stop 再 sta ...
- Bom浏览器对象模型 -- 手稿
------------恢复内容开始------------ ------------恢复内容结束------------ ------------恢复内容开始------------ ------- ...
- Spring(XML方式)简单入门
环境准备 maven jdk Spring Eclipse 项目创建 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0 ...
- GAIA: 一个严苛的智能体基准
简要概括 经过一些实验,我们对 Transformers 智能体构建智能体系统的性能印象深刻,因此我们想看看它有多好!我们使用一个 用库构建的代码智能体 在 GAIA 基准上进行测试,这可以说是最困难 ...