小目标检测中基于新型共性的多方面蒸馏

Abstract. Most of existing methods for few-shot object detection follow the fine-tuning paradigm, which potentially assumes that the classagnostic generalizable knowledge can be learned and transferred implicitly from base classes with abundant samples to novel classes with limited samples via such a two-stage training strategy. However, it is not necessarily true since the object detector can hardly distinguish between class-agnostic knowledge and class-specific knowledge automatically without explicit modeling. In this work we propose to learn three types of class-agnostic commonalities between base and novel classes explicitly: recognition-related semantic commonalities, localization-related semantic commonalities and distribution commonalities. We design a unified distillation framework based on a memory bank, which is able to perform distillation of all three types of commonalities jointly and efficiently. Extensive experiments demonstrate that our method can be readily integrated into most of existing fine-tuning based methods and consistently improve the performance by a large margin.

现有的小样本目标检测方法大多遵循微调范式,即通过这样的两阶段训练策略,潜在地假设类别无关的可泛化知识可以从具有丰富样本的基类隐式地学习和迁移到具有有限样本的新类。然而,这并不一定是正确的,因为没有显式建模,对象检测器很难自动区分类无关知识和类特定知识。在这项工作中,我们提出要明确地学习基类和新奇类之间的三类类别无关的共性:识别相关的语义共性、定位相关的语义共性和分布共性。我们设计了一个基于记忆库的统一蒸馏框架,该框架能够联合高效地蒸馏所有三种类型的共性。大量的实验表明,我们的方法可以很容易地集成到大多数现有的基于微调的方法中,并持续地提高性能。

1 introduction

传统优化方案认为,目标检测中类无关的prior能隐式的从基类到新类。但是没有显式建模的情况下,目标检测器很难自动的区分类无关知识和类特定知识(class-agnostic 和 class-specific)

本文认为,优化框架中应该学习基类和新类的多方面共性,这是类无关的,可以在不同类之间进行转移。然后对共性进行 蒸馏, 以避免新类的 稀缺性。即:

学习三种基本的共性,

1.识别相关的语义共性:如语义相近的类之间共享的相似外观特征;

2.与定位相关的语义共性:如不同类之间相似的物体形状或边界特征;

3.相似类之间共享的特征空间的分布共性:如假设高斯分布中特征的接近均值和方差。

例如图一,

例如,一个基类为 猫的 样本, 在 定位 和 识别 两个优化特征空间中度量它和新类的语义相关性,这些学习到的共性在微调阶段被提炼,以提高目标检测器在新类上的性能。Grad-CAM + + [ 2 ]的可视化显示,学习到的识别特征侧重于局部显著区域,而定位更关注全局边界或形状特征。


3.

3.1

首先从小样本目标检测的初步研究开始,然后介绍了我们的方法,该方法提取了多方面的基本新颖的共性,以避免小样本目标检测中训练样本的稀缺性。


3.2 提取与识别相关的语义共性

直接在预学习的特征空间中计算这些相似度,而非通过教师模型预测类概率。

给定一个由区域建议网络RPN生成的来自基类的前景区域建议r,定义r到新类c 的相似度为:r的RoI特征 Vr 和 C类在预训练特征空间中的原型之前的余弦距离。

Cn是新类的集合,a>0是缩放因子,原型Uc是通过对新类C中候选集(作为内存库实现,将在第3.5节中详细说明)的对象特征取平均得到的。

其中是候选集中第i个对象的向量特征,nc是该集合的大小。由于我们专注于提取base-novel共性以避免novel类中训练样本的稀缺性,因此忽略了base-base共性来分配所有模型容量给base-novel共性。因此,区域提议r从一个基类到其他基类的相似度被定义为一个很小的常数值:

其中Cb表示基类的集合,α是与方程1中相同的缩放因子。注意,我们还根据公式1计算r和它的GT类之间的余弦相似度,以保证预测的准确性。最后我们通过一个softmax函数将样本r与所有类的相似度进行归一化:

假设一个前景候选区域r与背景有0个公共点,我们得到r的完全相似度分布:

类似于经典的知识蒸馏,我们利用区域提案的相似性作为软标签来监督我们的目标检测器的学习。特别地,我们在探测器的微调阶段进行这样的蒸馏。从形式上讲,对于来自基类的区域建议r,我们最小化对象检测器的软标签和预测类概率之间的库尔贝克-莱布勒( KL )散度:

理论基础:我们通过在预定义的特征空间中度量基类样本到每个新类样本的相似度来学习与物体识别相关的语义共性。然后将学习到的共性(归一化后)视为软标签,以监督对象检测器的微调。因此,可以利用与新类共享识别相关语义的基类中的所有样本来训练这个新类上的对象检测器。从这个意义上说,提出的公共蒸馏显著地增加了新类的训练数据,从而提高了对象检测器在新类上的性能。


3.3 蒸馏与 定位相关的语义共性

除了与识别相关的语义共性,相似类别还共享与物体定位相关的语义共性,如相似的形状或边界特征。提取相似基类和新类之间的这种共性,可以使目标检测器从丰富的基类样本中学习可迁移的定位知识,从而提高其在新类上的目标检测性能。

类似3.2, 通过测量基类中的样本与预学习的特征空间Floc中的每个新类的相似性来学习与本地化相关的共性。两种不同类型的共性(识别或定位相关)的蒸馏之间的关键区别之一是它们在不同的预学习特征空间中学习:每个特征空间都应该通过优化相应的任务(对象分类或定位)来学习,如图1所示。我们在第3.5节中给出了一个有效的实现。

学习到的与 localization-related 的共性以相同的形式表示为规范化的相似性,如公式4所示。与将与识别相关的共性视为用于监督的软标签不同,localization相关的共性被用作归一化权重,以聚合所有特定于类的边界框回归器以进行object localization。这是基于这样的直觉,即object 不仅可以通过其Groundtruth类的边界框回归器进行本地化,还可以通过相似类的回归器进行localization,更多的相似会导致更多的confidence。在形式上,给定一个来自基类的region proposal r,通过聚合C类的所有回归器的预测,其边界框被预测为偏移t = ( tx , ty , tw , th)到groundtruth 。然后利用平滑的L1损失 最小化 aggregated prediction与GT之间的误差来优化检测器:

其中是表示与localization-related的共性的标准化相似度。是r的bounding-box regression groundtruth,而是c类的box regressor的预测。

理论基础:在预学习的特征空间中,从基类到每个新类的样本之间的相似性被学习为与localization-related的共性,并进一步用作聚合权重来融合所有类的回归器。具体来说,来自基类的样本(对象)通过引用与此样本共享与 localization-related 的共性的新类的所有回归器的预测来 localized。这相当于用样本训练这些 regressors。因此,新类的所有回归器都得到了优化,增加了大量来自基类的训练样本,从而获得了更好的定位性能。


3.4 蒸馏 分布 共性

语义相似的类别通常遵循相似的数据分布,例如这些类别之间的特征在假定的高斯分布中具有相近的均值和方差。因此,我们旨在提炼的基本类和新类之间的第三类共性是分布共性。受小样本图像分类中分布校准的启发,我们从基类中提取分布统计量来校准那些相似的新类的分布。因此,我们可以为这些 novel 类采样足够的示例,以提高对象检测器在 novel 类上的性能。

与将基类的均值和方差转移到新类的分布校准不同,我们只提取基类的方差,同时保留新类的均值。这是因为转移基类的均值和方差会导致基类和新类之间的分布重叠,从而在目标检测时更难区分它们。相比之下,在小样本分类设置中不需要基类和新类之间的分类。

假设每个特征维度都服从高斯分布,这与分布校准一致,我们首先在预学习的特征空间中计算基类和新类每个特征维度的均值和方差,并根据与 均值(等价于式( 2 )中的类原型) 的欧氏距离为每个新类选择语义最接近的前k个基类。然后,我们可以使用一个新类在其top - k个最近的基类上的平均方差来近似它的方差。形式上,一个新类别c的校准方差估计为:

式中,为base类 i 的方差,Sc为与novel类c最接近的前k个基类的集合。这样我们就可以在这个预学习的特征空间中,按照得到的高斯分布对新类别c进行更多的样本采样:

其中是novel类c的均值. Sc是采样特征的集合,进一步利用CrossEntropy损失训练目标检测器的分类器

3.5 Unified Distillation Framework Based on Memory Bank

统一的蒸馏框架,在fine-tuning 阶段 端到端的形式 联合蒸馏这三种特性。

recognition相关的共性和localization相关的共性都是通过计算base类样本在其对应的(但不同的)预学习特征空间中与每个 novel 类样本的相似度得到的。这种预学习的特征空间通常独立于用于学习检测器的特征空间,通过基于其他数据或其他网络对特征空间进行预学习来实现(?)。这样做可以实现两个不同特征空间之间的知识蒸馏。然而,这种实现有两个局限性:1 )在预学习的特征空间中计算的公共性可能不准确,因为对基类和新类样本提取的特征可能没有优化;2 )整个训练分两个阶段进行,效率不高。

我们的方法框架。( a )将RoI特征解耦为两个独立的特征空间,分别用于分类和边界框回归。在微调阶段,在中学习与识别和分布相关的共性,而在中学习与定位相关的共性。所有三种类型的共性都是在基于内存库的统一框架中提炼出来的。( b )将recognition-related共性作为软标签对分类器进行监督,提取localization-related共性作为聚合权重对所有回归器进行融合。( c )参考最接近的前k个基类提取新类的方差,并从校准后的分布中采样样本训练分类器。


我们提出在与学习检测器相同的特征空间中学习共性。如图2所示,基于当前任务的训练数据,通过典型特征学习backbone和RoI特征提取器 只学习一个特征空间。然后通过两个projection heads将特征空间解耦为两个独立的特征空间:一个(记为)连接到分类头,用于学习识别相关的共性;另一个(记为)连接到回归头,用于学习定位相关的共性。每个投影头由全连接层和ReLU层组成。我们首先基于base类样本对检测器进行预训练。然后在微调阶段,我们学习每一类共性,并在相应的特征空间中共同进行共性蒸馏。注意,分布共性也是在特征空间中学习的,因为分布共性直观上与识别相关的语义更相关。

共性蒸馏。在检测器的微调过程中,特征空间一直在演化。因此所有类型的共性也随着特征空间的更新而不断演化。同时,共性蒸馏从两个方面进行。首先,基于特征空间的前一次训练状态学习到的共性在下一次迭代(状态)中进一步用于优化特征空间。在这个意义上,共性在同一特征空间中的不同训练状态之间进行蒸馏,类似于自知识蒸馏。其次,与识别相关的共性和分布共性也从特征空间提取到分类头,而与定位相关的共性从提取到定位头,从而得到更精确的分类器和回归器。

内存库。在检测器的微调过程中,共性随着特征空间的更新而不断演化。然而,使用训练集中的所有可用样本从零开始计算每个类的原型(包括基类和新类),这涉及到学习所有三种类型的共性,由于对所有样本进行特征提取,因此计算开销很大。为了解决这个问题,我们维护一个动态内存库,为每个类存储最多L个RoI特征的(在中),以提高效率。将内存库表示为,其中C为类号,每个类的RoI特征以队列的形式存储。在每次训练迭代过程中,我们通过将当前批次的样本排队到相应的类队列,并为相同的类去排队相同数量的最旧样本来更新内存库。然后我们可以使用存储在M中的RoI特征计算每个类的原型。因此,每次更新特征空间时,我们不需要从头开始提取所有样本的特征,从而显著提高了运行效率。在无监督学习中,使用内存库提高效率已经被探索过。

参数学习。在使用基类样本的预训练阶段,我们使用标准的Faster R- CNN 损失训练目标检测器:

其中是RPN区分前景和背景的损失,是用于分类的交叉熵损失,是用于边界框回归的平滑L1损失。在微调阶段,模型以端到端的方式同时监督Faster R - CNN损失和三类共性蒸馏损失:

其中是平衡损失的超参数。


总结:

总结不了,简单翻译过来,看了看都是啥意思,难。

Multi-Faceted Distillation of Base-Novel Commonality for Few-shot Object Detection相关推荐

  1. [目标检测知识蒸馏3] [AAAI22] Knowledge Distillation for Object Detection via Rank Mimicking and Prediction

    [AAAI22] Knowledge Distillation for Object Detection via Rank Mimicking and Prediction-guided Featur ...

  2. [2022AAAI]Knowledge Distillation for Object Detection via Rank Mimicking and ... 论文笔记

    目录 摘要 Method Rank mimicking Prediction-guided Feature Imitation 总损失 实验 总结 论文全名有点长,题目放不下了: Knowledge ...

  3. BEVDistill: Cross-Modal BEV Distillation for Multi-View 3D Object Detection

    Paper name BEVDistill: Cross-Modal BEV Distillation for Multi-View 3D Object Detection Paper Reading ...

  4. 【CVPR 2021】通用的实例级蒸馏:General Instance Distillation for Object Detection

    [CVPR 2021]通用的实例级蒸馏:General Instance Distillation for Object Detection 论文地址: 主要问题: 主要思路: 主要贡献: 具体实现: ...

  5. [2021ICLR]Improve Object Detection with Feature-based Knowledge Distillation 论文笔记

    动机 认为目标检测知识蒸馏效果不好的问题出在两个地方. 1.前背景像素比例不平衡问题.提出了基于注意力引导的提取方法,利用==注意机制(而非gt)找到前景物体的关键像素点==,使学生更加努力地学习前景 ...

  6. 论文阅读《Dense Relation Distillation with Context-aware Aggregation for Few-Shot Object Detection》

    Background & Motivation 文中认为在此之前的 Few-shot 目标检测方法中的两类存在着不足: 采用元学习的训练策略,同时 reweight 每一类的表征. fine- ...

  7. Localization Distillation for Dense Object Detection(用于密集目标检测的定位蒸馏)CVPR2022

    最前面是论文翻译,中间是背景+问题+方法步骤+实验过程,最后是文中的部分专业名词介绍(水平线分开,能力有限,部分翻译可能不太准确) 摘要: 知识蒸馏(KD)在目标检测中具有强大的学习紧凑模型的能力.以 ...

  8. 《LD:Localization Distillation for Object Detection》论文笔记

    参考代码:LD 1. 概述 导读:这篇文章研究的是检测场景下的知识蒸馏方案.在该场景下的蒸馏有采取直接将对应特征图匹配到对应维度之后做特征图差异最小化,也有使用Teacher输出的GT作为引导排除大量 ...

  9. ViLD(Open-Vocabulary Object Detection via Vision and Language Konwledge Distillation)

    基于视觉语言(图像文本)知识蒸馏的目标检测 CLIP模型当成teacher模型,去蒸馏自己的模型,从而达到zero-shot. 模型具有检测新类别的能力. baseline方法是一个Mask R-CN ...

最新文章

  1. 数据科学究竟是什么?
  2. 树莓派Raspberry Pi 16G SD卡刷系统时默认空间扩容
  3. 查看临界区等待线程数量
  4. python编写爬虫的步骤-用Python编写一个简单的爬虫
  5. 【WebRTC---进阶篇】(六)SELECT网络模型
  6. dubbo知识点总结 持续更新
  7. 创业公司技术总监,去大公司面试,结果凉了
  8. oracle 11g for windows卸载
  9. pytorch常见错误(持续更新)
  10. 基于SpringBoot+Mybatis+Thymeleaf的信息管理系统
  11. 自动控制原理复习——第二章 控制系统的数学模型,系统框图简化,信号流图,梅森公式,控制系统的传递函数(详细介绍)
  12. ArduinoUNO-IRremote 红外线接收模块使用(还没写完)
  13. 交换芯片CPSS-MARVELL 98DXX交换处理流程
  14. .net 必看书籍1
  15. 《python语言程序设计》第5章 课程内的笔记 中for循环转换成while
  16. python tcl tk_如何解决Mac版关于python3.5.X的Tcl/Tk (8.5.9) 的警告?
  17. 串口、COM口、并口、RS232、USB
  18. 通信感知一体化技术发展趋势(IMT-2030 6G)
  19. 用python爬视频,超详细,让下载成为可能(某站)
  20. html a标签小手,a标签

热门文章

  1. SwiftUI的多列列表
  2. Tableau画桑基图
  3. 苹果手机用stream获取wskey
  4. win10系统开始菜单点不出来的有效修复方案
  5. 蓝桥杯算法训练-24点(Python)
  6. c语言双精度小数点后取几位_c语言float类型小数点后位数
  7. 【map】高德地图点聚合—按索引聚合
  8. 你知道怎么在solidworks工程图中插入表格吗?
  9. 逆时针旋转坐标系的转换
  10. Spring IOC与DI、反射的理解 含小案例说明