前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2021 CVPR 论文解读,旷视研究团队解决few-shot detection 的方法 —— Retentive R-CNN

2021 CVPR 论文解读,旷视研究团队解决few-shot detection 的方法 —— Retentive R-CNN

作者头像
唐国梁Tommy
发布2021-07-08 15:20:58
1.2K0
发布2021-07-08 15:20:58
举报
文章被收录于专栏:唐国梁Tommy唐国梁Tommy

哈喽,大家好,今天我们一起研读2021 CVPR的一篇论文《Generalized Few-Shot Object Detection without Forgetting》,该论文由旷视研究团队发表。今天的内容主要是梳理、总结该篇论文中每一部分的精华。闲言少叙,我们进入主题:

第一部分:Abstract

few-shot object detection(小样本目标检测)广泛应用于数据有限的条件下,之前很多团队的研究成果聚焦于小样本种类(categories)的表现,旷视研究团队认为在真实应用场景下,测试样本可能包含任何目标物体,因而检测所有类别(classes)至关重要,这需要小样本检测器能够在没有遗忘的条件下学习新的概念(目标)。旷视团队提出了Retentive R-CNN(记忆强的R-CNN),它由Bias-Balanced RPN(偏置-平衡RPN) 对预训练RPN进行反偏置,同时,在没有遗忘之前知识的条件下,重新检测、查找少样本类别目标。该算法Retentive R-CNN目前获得了state-of-the-art performance。

如图-01所示:

个人观点:小样本学习(few-shot learning)一直是一个研究的热门领域,我们的很多模型都是基于已知的大规模数据集进行训练,最后得到一个最优的模型。然后,对新的样本集进行测试。这里存在的问题是,假设模型训练过程中,没有训练过此类新样本,那么,模型就很难有很好的表现。然而,现实世界中,往往很难包罗万象、且每个类别的数据集都有人工标注,所以,如何基于小样本学习,一直是很大的挑战。】

第二部分:Introduction

这部分内容,作者首先指出了问题,即:在计算机视觉领域,深度卷积神经网络基于大规模数据集进行训练,往往很多数据需要事先进行人工标注,尤其是目标检测,这往往不太可能做到面面俱到。同时,数据集中的不同类别的样本分布存在长尾现象。作者提出few-shot learning如何能够像人一样具有通用能力,通过小样本学习后,可以对目标物体进行检测、识别。

目前已经有很多few-shot learning算法应用于目标检测,不过仍然面临很多挑战。大多数算法聚焦于小样本学习,往往造成对基类(base classes)检测性能的下降或遗忘。检测所有类别(classes)的问题被称为通用少样本检测(Generalized Few-Shot Detection , G-FSD)。

目前流行的few-shot object detection算法有meta-leanring(元学习),该算法的缺点是计算复杂、耗时、慢。另一种替代算法是迁移学习(transfer learning),该算法能够在单轮训练后,检测所有类别的性能大幅提升。不过,该算法在预训练模型与基类性能之间仍然存在差距。

如图-02所示(算法性能比较):

旷视团队发现了两种被忽视的特性:

1. 尽管预训练模型性能优越,但是它无法在新类实例上预测很多假正样本(false positives)。

2. RPN偏向于它所看到的类,而不是理想的class-agnostic,因此冻结它而不暴露于新类可能是次优的。

Retentive R-CNN根据Bias-Balanced RPN和Re-detector整合了基类和新类检测器,Bias-Balanced RPN能够更好地适应新类目标(new class objects),同时对基类仍然保持强大,因此在训练和推理阶段,提供了更好的proposals。Re-detector在微调过程中(finetuning)利用了一致性损失来调整适应过程(regularize the adaption),并利用基类的检测特性在未遗忘的条件下提高检测性能。

第三部分:Related Work

这部分内容,作者从三个领域的发展动向进行简述,分别是:

1. Few-Shot learning(小样本学习)

目前比较流行的方法有metric learning(度量学习) 和 meta-learning(元学习),这两种方法广泛应用于避免在小样本数据上的过拟合。不过,近期的一些研究成果发现,基于预训练的主干网(pretrained backbone)进行特征提取,其性能优于之前的其它方法。不过,该最新方法的问题是在微调过程中,会对基类(base class)产生严重的遗忘。

2. Object Detection(目标检测)

目标检测算法(two-stage)的典型代表是R-CNN,很多few-shot object detection算法基于R-CNN架构进一步探索,目前已经取得不错进展的方法包含:single-stage methods 和 anchor-free methods.

3. Few-Shot Object Detection(小样本目标检测)

对于Few-shot目标检测算法的探索主要分成两个方向:meta-learning(元学习) 和 transfer learning(迁移学习)。

个人观点:首先,本人对meta-learning没有研究过,所以不予置评。对于迁移学习,之前在不少案例中都应用过该技术,分类的性能确实远高于自己搭建的网络性能。所以,通常在进行目标检测或分类任务时,首选的技术手段便是迁移学习。】

第四部分:Approach

1. Problem Statement (问题陈述)

这里作者提出了一个问题,简述如下:

假设有两个类别:base calsses(基类,简写 Cb)和 novel classes(新类,简写Cn),这两个类别对应的子数据集分别是:Db 和 Dn。注意,Db包含带有丰富标注信息的训练数据集,Dn仅包含少部分样本数据。我们的目标是:在没有遗忘从丰富的基类样本中学到的能力的情况下,从少部分新类样本中学习一个基于Cb和Cn的检测模型。

作者提出了两种解决该目标的方法,第一是meta traing(元学习),该方法被否决,主要是耗时且复杂;第二是tranfer learning(迁移学习),该方法获得了非常好的性能和结果。最终,作者采取第二种方法,基于迁移学习解决G-FSD(通用小样本检测)的问题。

具体做法:

① 基于Db(基类子数据集)训练,获得一个基模型f_b:

② 然后,在Dn(新类子数据集)或Db与Dn整合在一起的数据集上进行微调基模型f_b,获得一个新模型:f_n;

出现的问题:

① 由于遗忘效应(forgetting effect),在微调阶段会降低基类的性能;

如图-03所示:

2. Analysis on transfer learning based Few-Shot object detection (基于小样本目标检测的迁移学习分析)

首先,作者介绍了TFA(two-stage finetuning approach 两阶段微调方法)的实施流程:

① TFA首先在Db数据集上训练,可以视为一个普通的R-CNN模型;

② 最后的分类和box回归层的heads在Dn数据集上微调;

③ 微调后的新类head的权重与基类权重进行合并,作为基于合并数据集(Dn + Db)进行最终微调的初始化值。

3. Retentive R-CNN (记忆强的R-CNN)

对于G-FSD(通用小样本检测)提出的模型Retentive R-CNN,由Bias-Balanced RPN和Re-detector构成,然后利用基类检测器(base class detector) f_b的特性。

模型架构如图-04所示:

(3.1)Re-detector

Re-detector由2个检测头(detector heads)组成,并行用于预测目标proposals下Cb(基类)和Cb ∪ Cn (基类与新类的并集)。其中一个流stream保存模型f_b中相同的权重用于预测Cb(基类)的目标(简写:Det_b)。另一个stream保存微调后的权重用于检测Cn和Cb的目标(简写:Det_n)。由于训练数据的不均衡,检测两个类别能够有效减缓假真样本(false positive)。Det_b 利用全连接层用于分类,Det_n 使用consine分类器平衡特征的多样性。

模型f_b基于大量基类数据训练获得,对于新类的检测可以继承模型f_b的可靠先验知识。因此,作者提出了auxiliary consistency loss (辅助一致性损失),该损失对Det_n进行正则化,以获得对object proposal的评分。

如图-05所示,辅助一致性损失计算公式:

总的Re-detector损失计算公式如下,如图-06所示:

(3.2)Bias-Balanced RPN

作者指出R-CNN算法在训练过程中,基于RPN网络生成object proposals,用于分类和其它后处理。因此,当训练数据比较少的情况下,RPN生成的proposals的质量至关重要。

为了获得在基类(base classes)上的性能,研究团队提出了Bias-Balanced RPN用于整合预训练RPN和微调后的RPN。具体操作如下:

如图-07所示:

这里需要注意几点:

① 在微调阶段,仅有finetuned RPN的objectness设置为unfrozen(解冻状态);

② 在base RPN和finetuned RPN之间,共享box regression层和卷积层;

接下来,看一下在finetuning阶段的总损失函数,如图-08所示:

(3.3)训练阶段 Training

基于迁移学习方法,Retentive R-CNN的训练分为两个阶段:

① 在D_b(基类数据集) 上预训练,然后,在D_n(新类数据集)和D_b整合后的数据集上进行微调。

② 冻结三层,finetuned RPN的objectness,分类层的最后一个线性层,Det_n的回归层。

(3.4)推理阶段 Inference

基于Bias-Balanced RPN提供的object proposals,相关联的features并行输入到Re-detector的两个heads。两个heads预测的boxes集合起来进行最终的NMS操作。在Bias-Balanced RPN中的backbone和特征转换层,Re-detector在两个detector heads之间共享,与普通的 R-CNN 相比,可以以很少的开销保持基类性能。

第五部分:Experiments

该部分的实验结果对比非常详细,建议直接看论文。

(1)Few-shot object detection results on MS-COCO under 5,10,30-shot settings, best viewed in color. AP, bAP, nAP represents

mAP of MS-COCO for all classes, base classes, and novel classes, respectively.

如图-09所示:

(2)Few-shot object detection results on Pascal VOC(07+12) all classes (AP50) under 1,2,3,5,10-shot settings, best viewed in color.

Best results and second-best are colored in red and blue, respectively.

如图-10所示:

(3)Few-shot object detection results on Pascal VOC(07+12) novel classes (nAP50) under 1,2,3,5,10-shot settings, best viewed in

color. Best results and second-best are colored in red and blue, respectively.

如图-11所示:

(4)Inference Time

如图-12所示:

第六部分:Conclusion

研究团队提出了 Retentive R-CNN 来解决 G-FSD 的问题,并证明了在目标检测中可以实现无遗忘的小样本学习。Retentive R-CNN简单且有效地融合了base and novel detector,基于Bias-Balanced RPN降低了预训练RPN和Re-detector可靠查询基类和新类目标的偏差。通过实验结果对比表明,Retentive R-CNN获得了state-of-the-art performance。

论文下载地址:

https://arxiv.org/pdf/2105.09491.pdf

目前,旷视没有开源项目源码。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 唐国梁Tommy 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档