【多模态】22、UniDetector | 检测开放世界中的一切!(CVPR2023)

在这里插入图片描述

论文:Detecting Everything in the Open World: Towards Universal Object Detection

代码:https://github.com/zhenyuw16/UniDetector

出处:CVPR2023

贡献:

  • 提出了一个任意场景任意类别的目标检测器 UniDetector,使用来自不同源和多样标注空间的数据来训练,将 image 和 text space 进行对齐,也是目前首个实现通用目标检测的结构,即使用了 500 类别训练,实现了 7000 个类别的识别
  • 能够很方便的泛化到开放世界和新类别上,提出了解耦 proposal 生成和 RoI 分类的过程,能更好的实现与类别无关的特性
  • 提出了解耦的训练方式和概率矫正,能够平衡预测类别的分布,且能促进其扩展到新类别上

效果:

  • 能检测大概 7k 类别,是目前为例最大的可衡量类别数量,而训练类别只有大概 500 类
  • 有很强的 zero-shot 能力,超过当前的最强结果 4%
  • 在 COCO 上实现 49.3%AP,是目前使用 CNN 模型最高的
  • 在 13 个公开检测数据集上达到了 SOTA 的效果

一、背景

Universal object detection(通用目标检测器)的目标就是检测任意场景中的所有目标,需要有如下两个特点:

  • 要使用多种数据源和不同的标注标签空间来进行训练
  • 要能够泛化到开放世界,即无需训练也可以识别新类别

但众所周知,只使用视觉信息无法实现这样的效果

本文提出了 UniDetector,一个通用的目标检测框架,来克服上述两个问题

  • 首先,从语言空间来入手,作者发现多阶段训练的方式能够促进特征共享,且避免特征冲突
  • 接着,为了探索 region proposal 阶段泛化到新类上的能力,作者将 proposal generation 阶段和 RoI classification 阶段进行了解耦
  • 然后,基于解耦的方式,作者进一步提出了 class-agnostic localization network(CLN)来生成更有泛化性的 region proposals
  • 最后,作者还提出了 probability calibration 来消除预测结果对新类别和基础类别的偏见
    在这里插入图片描述

二、方法

  • 给定输入图像 I,目标检测的目标是输出其类别和位置,传统目标检测只能适应于 closed world,训练和测试的类别是一致的,都是预定义好的类别空间
  • 本文中,作者提出的通用目标检测,聚焦于检测通用的物体,训练时,使用从多种源头拿来的数据,其标注空间都是不同的,推理时,预测使用者给定的类别空间中的类别
  • 一般来说,传统的目标检测难以直接适用于通用目标检测任务,主要因为推理的时候有新的类别,是训练的时候没见过的类别,模型无法识别
  • 所以,通用目标检测的关键就在于如何使用多个类别空间的数据,和如何扩展到新类别上

2.1 UniDetector 框架结构

在这里插入图片描述

UniDetector 框架结构如图 2 所示:

  • 第一步:多尺度 image-text aligned pre-training:传统全监督的学习方式是基于人工标注的,这就会限制通用性。而要扩展泛化性,就需要借用语言特征的泛化性,所以,作者引入了语言编码来辅助检测。和之前的很多工作一样,作者使用预训练的 image-text model 来实现。而且,作者是使用了 RegionCLIP 的预训练参数来用于实验。
  • 第二步:多样性 label space training:传统的目标检测的标签是收缩在一个固定的范围内的,本文作者从不同的数据源中收集了多样的标注空间来训练检测器,标注的多样性和图像的多样性决定了检测器的通用性。注意,这里作者也使用的是解耦的训练方法,来分别训练 RPN 和 RoI(见2.2)
  • 第三步:Open-world inference:完成训练后,就可以在开放时间直接推理了,且不需要 fine-tuning。因为新类别没有出现在训练中,检测器容易产生低置信的预测,所以作者提出了 probability calibration 来实现在推理过程中新类和基础类的平衡

2.2 Heterogeneous Label Space Training

使用多样的标注空间的标注有助于提升模型的信息多样性

在这里插入图片描述

作者在图 3 中展示了 3 种可能的模型结构:

  • 第一种:使用隔离的标注空间来训练,如图 3a 所示,作者在每个数据集中训练模型,在推理时,将每个独立的推理结果结合起来来得到最终的检测框
  • 第二种:将所有标签放到同一个标签空间中训练,如图 3b 所示,由于所有的图像都被当做来源于同一个标签空间,故就可以使用 Mosaic 或 Mixup 等数据增强的方法来提升信息丰富程度
  • 第三种:所有数据源都共享特征抽取器,然后又有各自的分类层,在推理时,可以直接使用 test label 的 class embedding 来避免标签冲突

数据采样和 loss 函数:

  • 当数据量变大时,不可避免的问题就是数据长尾分布,class-aware sampler (CAS) [38]、 repeat factor sampler (RFS) [17] 在 closed world 中都是较为好用的方法,但是在 open world 中不太有用,主要原因就是有新类。而且,在有了 language embedding 辅助的情况下,长尾问题可以忽略不计,使用随机采样即可
  • loss 函数:sigmoid-based loss 更适合,因为基础类别的分类和新类别的分类在 sigmoid 函数的作用下不会互相影响。且为了避免类别增加导致 sigmoid-based classification loss 产生极值,作者会随机采样特定数量的类别作为负的

解耦 proposal generation 和 RoI classification:

双阶段的目标检测器包括:

  • visual backbone
  • RPN:RPN 是与类别无关的,所以可以扩展到新类上,本文中使用 Image-Net 预训练参数来初始化,并且是以 class-agnostic 的方式来训练的,训练完成后,其能够生成一系列的 region proposals
  • RoI classification:与类别有关的,所以不能很好的作用于新类。所以在本文 RPN 生成 RoI 后,使用 Fast RCNN 的方式来训练该分类器,这里使用预训练的 image-text 参数来初始化。

由于 RPN 和 RoI 分类器的不同性质,导致它们不能联合训练,因为灵敏的分类能力会影响 RPN 对新类别的提取,所以,作者将这两个阶段进行了解耦,避免其互相影响。

在这里插入图片描述

Class-agnostic 定位网络:与类别无关的定位网络 CLN

为了处理前面生成的 proposals,作者提出了一个 classagnostic localization network (CLN),如图 4 所示,CLN 包含 RPN 和 RoI head,来为通用目标检测器生成 proposals

对于第 i 个 proposal,从 RPN 得到的定位置信度为 s i r 1 s_i^{r_1} sir1,从 RoI 得到的定位置信度为 s i r 2 s_i^{r_2} sir2,分类得分为 s i c s_i^c sic

则 CLN 的最终得分为 :

在这里插入图片描述

2.3 open-world inference

由于基础类别会在训练时候出现,所以难以避免训练得到的 detector 会更偏向于基础类别,基础类别的检测结果和得分都比新类别更高,会主导推理过程

所以,作者提出了一种后处理的方法:probability calibration(校准)

  • 校准的目标是降低基础类别的置信得分,提高新类别的置信得分,用于平衡最终的预测结果

  • 校准方式如下:

    在这里插入图片描述

  • 主要思想是使用先验概率 π j \pi_j πj 来花粉类别 j j j 的初始概率

  • π j \pi_j πj 记录了网络对类别 j j j 的倾向程度,大的值表示模型更倾向于该类,在校准之后,模型原本倾向的类别的概率就会减小

  • γ \gamma γ 是预定义的超参数

  • π j \pi_j πj 如何获得:可以首先在 test 数据集上进行推理,然后使用结果中出现的类别来获得 π j \pi_j πj ,如果测试图像很少,难以获得准确了概率,则可以使用训练图像来计算 π j \pi_j πj

  • p i j p_{ij} pij :反映了第 i 个 region proposal 的 class-specific prediction。会将 p i j p_{ij} pij 乘到 objectness score η i \eta_i ηi 上来作为最终的检测得分

  • 最终的检测得分为

    在这里插入图片描述

三、效果

3.1 数据集

作者使用了 3 个不同的数据来模拟不同的数据源和标注空间:

  • COCO:包含 80 个类别,是密集场景的高质量人工标注结果
  • Object365:包含 365 个类别
  • OpenImages:包含 500 个类别,很多标注都是稀疏的且不准确的
  • 作者从这 3 个数据集中分别随机采样了 35k、60k、78k 的图像来训练

测试数据:

  • LVIS
  • ImageNetBoxes:包含 3000 个类别,作者随机采样了 20000 图像作为测试,
  • VisualGenoe:包含 7605 个类别,但由于很多标注都是来自于机器,标注结果不太准确且有很多噪声,作者选择了 5000 个没有出现在训练数据中的图像来测试

测评:

  • 基本上都是使用 AP 来测评
  • LVIS:使用 APr、APc、APf 分别测评 rare、common、frequent 类别
  • ImageNetBoxes:使用 AP、AP50、top-1 localization accuracy 来测评
  • VisualGenome:考虑到噪声和不准确的标注,使用 Average Recall(AR) 来测评

细节:

  • 基于 mmdetection 实现
  • 框架:Faster RCNN 、ResNet50-C4、使用 RegionCLIP 参数来初始化
  • 训练 12 个 epochs

3.2 Object Detection in the Open World

在这里插入图片描述

3.3 Object Detection in the Closed World

在这里插入图片描述

3.4 Object Detection in the Wild

在这里插入图片描述

3.5 Comparison with Open-vocabulary Methods

在这里插入图片描述

在这里插入图片描述

3.6 消融实验

Decoupling proposal generation and RoI classification:

在这里插入图片描述

Probability calibration:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/jiaoyangwm/article/details/132009894
今日推荐