论文题目: Context-Transformer: Tackling Object Confusion for Few-Shot Detection
论文地址:https://arxiv.org/pdf/2003.07304.pdf
简介
本文讨论了如何将迁移学习用在小样本目标检测任务上。若使用迁移学习,通常的做法是使用target-domain的数据对source-domain的检测器进行微调。但是由于小样本任务中,target-domain的数据非常少,会导致检测器分类失败。为了解决这个问题,作者提出了一个Context-Transformer模块,用以增强分类性能。
动机
作者为什么要提出Context-Transformer模块,以及这个模块是如何增强检测器分类性能的呢?
作者认为,在小样本目标检测任务中,定位是没太大问题的,只是分类有困难。为什么会出现这种情况呢?因为目标检测采用BBOX用于定位,OBJ+BG用于分类(BBOX指bounding box,OBJ指目标,BG指背景)。其中,BBOX和类别无关,所以直接用source-source BBOX没有太大问题,但是OBJ+BG是类别相关的,对于新的类别是会被随机初始化,如果标注量不足,会导致新类别的目标难以区分。
所以应该如何解决目标难以区分这个问题呢?人类识别一个物体,除了观察物体本身的特征,还会利用周围的环境作为线索,对物体类别进行推测。比如一张图上有个动物,通过动物的外观很难区分是狗还是马,如果图上有人骑在动物上,并且还有一大片草地,难么这个动物是马的可能性很大。
如果模仿人类的这个思考过程,会不会让模型的分类性能提高呢?所以作者设计了Context-Transformer模块来模仿人类的思考过程。首先从周围环境寻找与待识别目标相关联的目标作为线索,然后将线索作为附加信息,用以增强待识别目标的特征,最后和BG一起送入分类器进行分类,使得分类性能提升。
框架
图1
总体框架如图,分为上下两个部分。上半部分是常规的检测框架(本文用了SSD),下半部分为Context-Transformer模块。首先将target-domain的image输入在source-domain上训练好的SSD,然后将SSD其中一个输出OBJ输入Context-Transformer模块做一个特征增强,然后将增强后的特征和BG一起送入分类器进行分类。
细节
Context-Transformer模块
图2
Context-Transformer模块的输入有两部分:Prior Box(所有待分类的proposal)和Contextual Field(周围环境与Prior Box相关联的全部proposal)。Contextual Field是如何获得的呢?文中直接取所有的Prior Box做了pool作为Contextual Field(做pool的原因是作者认为可以不用过多关注细节)。
再来看一下细节。
1.P和Q分别代表一张输入图像的k个空间尺度上所有像素点的m个候选区域的集合reshape成的向量。具体表示如下:
P ∈ R D p × C s , Q ∈ R D q × C s P\in R^{
{}^{D_{p}\times C_{s}}},Q\in R^{
{}^{D_{q}\times C_{s}}} P∈RDp×Cs,Q∈RDq