论文阅读:Few-Shot Object Detection with Attention-RPN and Multi-Relation Detector
论文阅读:Few-Shot Object Detection with Attention-RPN and Multi-Relation Detector
(1)Author
-
作 者
Qi Fan,Wei Zhuo,Chi-Keung Tang,Yu-Wing Tai -
机 构
HKUST
Tencent -
时 间
2020年
(2)Abstract
- 传统的目标检测算法需要大量高质量的标注数据来训练模型,而数据标注非常耗费人力物力,因此本文中提出了一种“小样本”的目标检测网络,旨在通过少量的标记数据就能让模型有效检测那些从未见过的目标;
- 该算法的核心有三点:Attention-RPN, Multi-Relation Detector, Contrastive, Training strategy,能够利用小样本的support set和query set的相似性来检测新的目标同时抑制background中的错误检测;
- 这个团队还自己建立了一个包含1000种目标的数据集,这是第一个专为“小样本”目标检测设计的数据集,数据集地址(https://github.com/fanq15/Few-Shot-Object-Detection-Dataset);
(3)Conclusion
- 提出了一个“few-shot”的目标检测框架,该算法的核心有三点:Attention-RPN, Multi-Relation Detector, Contrastive, Training strategy;
- 建立了一个专为“few-shot”目标检测而生的数据集。
(4)Introduction
- 现存的目标检测算法依赖大量的数据进行训练,这促使学界转向小样本学习的研究,但大多数研究集中在图像分类上,对于小样本目标检测问题的研究还是颇少;
- “小样本”检测算法要让模型检测到那些在训练中并未见过的目标(以下简称unseen object),而bounding box很容易错过那些unseen object,或者在背景区域产生大量错误的检测,作者认为这是由于RPN网络没有给这些好的bounding box一个应得的score,最终导致新的目标很难被检测到;
- 本文主要有两个贡献,一是提出了一个通用的小样本目标检测模型,不需要重新训练或者fine-tuning就能识别新种类的目标,二是建立了一个新的数据集;
(5)FSOD:A Highly-Diverse Few-Shot Object Detection Dataset
- 数据集的种类分布
(6)Our Methodology
(6.1)Problem Definition
- 作者首先对本文的任务做出了定义,提到两个概念——support image和query image,support image包含了对需要检测的目标的特写(见下图的左右上角,分别是对头盔和自行车的特写),而query image是我们要检测的目标,它可能包含了support image当中的目标,而我们的任务就是要在query image中把这些目标都找出来。如果support set包含了K个种类和N个对应的目标实例,这个问题被称为K-way N-shot detection;
(6.2)Deep Attentioned FewShot Detection
- 下图是本文算法的框架:
- 文中算法建立了一个新奇的注意力网络,能在RPN模块和Detector上学习support set和query set之间的联系;
- 图中的weight shared network有多个分支,可以分为两类,一类用于query set,另一类用于support set(support set的分支可以有多个,用来输入不同的support图像,图中只画了一个),query set的分支就是一个Faster RCNN的结构;
(6.2.1)Attention-Based Region Proposal Network
- 作者认为RPN不仅应该区分objects和non-objects,而且还应该过滤掉不属于support set的目标,但在没有support image的信息支持下,RPN会给出很多得分很高但并不属于support set的proposal,这给后续的detector带来了很大负担,因此,作者提出了Attention RPN来解决这个问题;
- 将通过weight shared network提取的support image和query image的feature按照下式定义的similarity进行计算得到最终的Attention feature map:
(6.2.2)Multi-Relation Detector
- 为了使detector更好地分辨不同的种类,作者提出了下图所示的muti-relation detector:
- 分别可以从全局、局部、patch三个角度来进行support image和query image间的匹配(说到底这一部分还是用来测量相似性的),作者也指出这三种模块可以互相结合以获得更好的性能,实验对比见下表:
(6.3)Two-way Contrastive Training Strategy
- 一种简单的训练策略是通过构造一个训练对(qc,sc)来匹配相同的类别对象,其中查询图像qc和支持图像sc都在同一个c-th类别对象中。作者认为一个好的模型不仅要匹配相同的类别对象,还要区分不同的类别,因此提出了一种新颖的双向对比训练策略。
- 具体做法是:随机地选择一张query image——qc,一张support image——sc,它两对应第c类目标,再选择一张包含第n类(n≠c)的support image来组成一个三元训练组,其中只有第c类的目标被标记为前景区域,其他的都被当做背景区域;
- 训练中会产生大量的背景proposal,特别是在negative support的图片上,因此作者为三种匹配对设定了一个比率,即:
ratio as 1:2:1 for the
foreground proposal and positive support pairs (pf ; sp),
background proposal and positive support pairs (pb; sp), and
proposal (foreground or background) and negative support pairs (p; sn) - 在训练时,使用multi-task的loss function:
- 作者还对比了各种训练策略的效果:
这的几way等于你选取几个negative support category + 1,几shot就是同一种类有几个模板;
(7)Experiments
- 效果还是很不错的:
(8)个人总结
- 无论是目标检测还是当今CV领域的其他任务,当前的算法总是要依赖large-scale的数据集,因此不管算法多花哨,模型都是totally data-based的,小样本的模型是以后的发展方向;
- 文中的团队特意为本次的研究建立了一个数据集,相信这花费了大量的人力物力,为后续的研究提供了方便,这必须要点一个大大的赞;
- 文中的算法,更像是一个匹配算法,这让我想起了传统图像处理的模板匹配算法,support set是模板,而我们要从query image中找出符合模板的目标,所以这里就有一个问题,那就是template的选取是否合理,这极大地关系到匹配的performance,文中并未对此作出对应的解释;
- 文中的算法的核心,我认为是“similarity”,无论是Attention RPN还是Muti-Relation Detector都是为了更好地去判断query image和support image的匹配度,但个人认为这里的Attention RPN的Attention主要还是集中在RPN网络的输入上,通过一个Attention的feature map来得到一个Attention的结果,我一开始读的时候以为是从channel的角度来实现attention,所以还是有点失望的 (仅对于我);
- Muti-Relation detector最终match的指标是二元交叉熵,bounding box的loss参考了Fast RCNN;
- 每一个support branch都有一个自己的attention RPN,算法结构比较复杂;
- Muti-Relation detector在进行匹配的时候计算量很大,文中也没有出现具体的单步推理时间;
- 训练起来也比较麻烦,一是选定一个sc后其他的negative support怎么选取,二是怎么去遍历这些种类才算合理,这都是很值得讨论的问题。