Few-shot Object Detection via Feature Reweighting (ICCV2019)
论文:https://arxiv.org/abs/1812.01866
代码:https://github.com/bingykang/Fewshot_Detection
1.研究背景
深度卷积神经网络最近在目标检测方面的成功很大程度上依赖于大量带有准确边界框标注的训练数据。当标记数据不足时,CNNs会严重过度拟合而不能泛化。计算机视觉系统需要从少量样本中进行检测的学习能力,因为一些对象类别天生就样本稀缺,或者很难获得它们的注释。
这种只有少量样本的检测称为few-shot目标检测问题。获得一个few-shot的检测模型对许多应用都是有用的。然而,目前任然缺乏有效的方法。最近,元学习为类似的问题提供了很多可行的解决方案。但是目前的一些模型都是用于few-shot分类,而目标检测在本质上要困难得多,因为它不仅涉及到类的预测,还涉及到目标的定位,因此现成的few-shot分类方法不能直接应用于few-shot检测问题。以匹配网络和原型网络为例,由于图像中可能存在无关类的分散注意力的对象或根本没有目标对象,如何构建匹配和定位的对象原型还不清楚。
2.本文解决方案
本文提出了一种新的检测模型,该模型通过充分利用一些基类的检测训练数据,并根据几个support examples快速调整检测预测网络来预测新的类,从而提供few-shot的学习能力。提出的模型首先从基类中学习元特征,这些基类可泛化为检测不同的对象类。然后利用一些support examples有效地识别出对检测新类有重要区别意义的元特征,并相应地将检测知识从基类转移到新类。
因此,本文的模型引入了一个新的检测框架(如图2所示),包含两个模块,即,元特征学习器和轻量级特征权重调整模块。给出一个query image和一些新类的support images,特征学习器从query image中提取元特征。权重调整模块学习捕获support images的全局特征,并将其嵌入到权重调整系数中,以调整query image的元特征。因此,query image的元特征能够有效地接收支持信息,并适应于新类的检测。然后自适应的元特征被送入检测预测模块中预测query的类和边界框。

对元特征学习器和加权模块以及检测预测模块进行端到端的训练。为了保证few-shot的泛化能力,采用两阶段学习方案对整个few-shot检测模型进行训练:首先从基类中学习元特征和良好的权值调整模块;然后对检测模型进行微调以适应新的类。为了解决检测学习中的困难(例如,存在分散注意力的对象),它引入了一个新的损失函数。
3.方案具体实施
关于数据集
本文针对few-shot目标检测,设置了两种数据,即,基类和新类。基类包含丰富的带标签的样本,而新类只有少数带标签的样本。目标是通过利用基类的先验知识,使得模型能够在测试中检测新类的目标。
关于模型
该模型将元特征学习器D和权重调整模块M引入到一个one-stage检测框架中。通过检测预测模块P,将每个anchor的特征直接回归到检测相关输出,包括分类得分和目标边界框坐标(如图2所示)。模型采用YOLOv2的backbone(DarkNet-19)作为元特征提取器D,并遵循与YOLOv2相同的anchor设置。对于权重调整模块M,模型采用一个轻量级的CNN。
具体来说,让I表示一个输入的图像。其对应的元特征由D产生;F=D(I)。生成的元特征有m个特征映射。我们将表示要检测的目标类的support images及其相关的边界框注释分别表示为Ii和Mi(i表示不同的类,i = 1,…,N)。权重调整模块M以一个支持图像(Ii, Mi)为输入,将其嵌入到一个类特定的表示向量wi=M(Ii, Mi),它将负责调整元特征的权重,并突出更重要、更相关的特征,以检测来自类i的目标对象。具体来说,模型在获得类特定的权重系数wi后,通过以下方式应用它来获得新类i的特定特征Fi:

在获得类特定的特征Fi之后,我们将它们输入到预测模块P中,对每个预定义anchor的目标度评分o、bbox位置偏移量(x、y、h、w)和分类分数ci进行回归:

其中ci为one-vs-all分类得分,表示对应对象属于第i类的概率。
训练方法
训练分为两个阶段,第一阶段是基础训练阶段。在这个阶段,虽然每个基类都有丰富的标签,但是我们仍然会联合训练元特征学习器D,检测预测模块P和权重调整模块M。这是为了使它们以期望的方式进行协调:模型需要通过引用一个良好的重权向量来学习检测感兴趣的对象。第二阶段是少few-shot微调。在这个阶段,对模型进行基类和新类的联合训练。由于只有k个标记的边界框可用于新类,为了平衡来自基类和新类的样本,每个基类也只能包含k个box。训练过程与第一阶段相同,不同之处在于,模型收敛所需的迭代次数明显减少。
损失函数
损失函数为:

其中,


Lbbx和Lobj按照YOLOv2相同的计算方式。
4.实验过程和结果分析
实验在Pascal VOC和COCO上分别进行了实验,实验对比了5个不同的baseline模型,结果分别如表1、表2所示:


比较结果分析
1) 本文模型表现都要好于其他模型
2) 本文所提出的二阶段的训练方式要优于一阶段的方式
3) 本文模型在各种不同的类别划分下表现都要优于其他模型
速度分析
如图3所示,本文模型在微调阶段的收敛速度明显好于其他模型

元特征权值分析
图4(a)所示,各个元特征在不同类目标中的权值不同,但其中有大约一半的特征在各个类中权重差不多,即,这些特征对于检测分类的重要性是极小的。
图4(b)所示,将各个目标的加权向量可视化,可以发现,同类目标的向量权值是十分接近的,而不同类目标,若是外形相似,其向量权值也比较接近,也就是说各个元特征在这些目标中的重要性很接近。

第一阶段过程分析
比较第一阶段训练后得到的模型在基类上的映射。结果如表3所示。尽管本文的检测器是为few-shot场景设计的,但它也具有强大的表示能力,以达到与在大量样本上训练的原始YOLOv2检测器相当的性能。

消融实验
作者分别进行了3个实验,首先是在特征图的不同层上进行加权,结果如表4所示,在越深的层上进行加权效果越好。

其次,采用不同的损失函数,结果如表5所示,在3种损失函数中,softmax的效果最好。

最后,support images选择不同输入形式,结果如表6所示,本文提出的对目标用mask进行标注的方式效果最好。

5.总结
这项工作是第一个探索实际和具有挑战性的few-shot目标检测问题。通过实例介绍了一种快速调整基本特征的贡献来检测新类的新模型。在实际基准数据集上的实验清楚地证明了它的有效性。该工作还比较了模型的学习速度,分析了预测的权重向量和每个设计组件的贡献,对所提出的模型提供了深入的理解。
Few-shot Object Detection via Feature Reweighting (ICCV2019)的更多相关文章
- 【Network Architecture】Feature Pyramid Networks for Object Detection(FPN)论文解析(转)
目录 0. 前言 1. 博客一 2.. 博客二 0. 前言 这篇论文提出了一种新的特征融合方式来解决多尺度问题, 感觉挺有创新性的, 如果需要与其他网络进行拼接,还是需要再回到原文看一下细节.这里 ...
- Feature Pyramid Networks for Object Detection
Feature Pyramid Networks for Object Detection 特征金字塔网络用于目标检测 论文地址:https://arxiv.org/pdf/1612.03144.pd ...
- 目标检测--Rich feature hierarchies for accurate object detection and semantic segmentation(CVPR 2014)
Rich feature hierarchies for accurate object detection and semantic segmentation 作者: Ross Girshick J ...
- Feature Pyramid Networks for Object Detection比较FPN、UNet、Conv-Deconv
https://vitalab.github.io/deep-learning/2017/04/04/feature-pyramid-network.html Feature Pyramid Netw ...
- 论文阅读笔记四十六:Feature Selective Anchor-Free Module for Single-Shot Object Detection(CVPR2019)
论文原址:https://arxiv.org/abs/1903.00621 摘要 本文提出了基于无anchor机制的特征选择模块,是一个简单高效的单阶段组件,其可以结合特征金字塔嵌入到单阶段检测器中. ...
- 论文笔记:Rich feature hierarchies for accurate object detection and semantic segmentation
在上计算机视觉这门课的时候,老师曾经留过一个作业:识别一张 A4 纸上的手写数字.按照传统的做法,这种手写体或者验证码识别的项目,都是按照定位+分割+识别的套路.但凡上网搜一下,就能找到一堆识别的教程 ...
- 论文阅读笔记三十三:Feature Pyramid Networks for Object Detection(FPN CVPR 2017)
论文源址:https://arxiv.org/abs/1612.03144 代码:https://github.com/jwyang/fpn.pytorch 摘要 特征金字塔是用于不同尺寸目标检测中的 ...
- 目标检测(一)RCNN--Rich feature hierarchies for accurate object detection and semantic segmentation(v5)
作者:Ross Girshick,Jeff Donahue,Trevor Darrell,Jitendra Malik 该论文提出了一种简单且可扩展的检测算法,在VOC2012数据集上取得的mAP比当 ...
- 『计算机视觉』FPN:feature pyramid networks for object detection
对用卷积神经网络进行目标检测方法的一种改进,通过提取多尺度的特征信息进行融合,进而提高目标检测的精度,特别是在小物体检测上的精度.FPN是ResNet或DenseNet等通用特征提取网络的附加组件,可 ...
随机推荐
- vue+webpack+element-ui项目打包优化速度与app.js、vendor.js打包后文件过大
从开通博客到现在也没写什么东西,最近几天一直在研究vue+webpack+element-ui项目打包速度优化,想把这几天的成果记录下来,可能对前端牛人来说我这技术比较菜,但还是希望给有需要的朋友提供 ...
- bootstrap网格系统.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- WebSocket原理及技术简介
摘要: WebSocket用于在Web浏览器和服务器之间进行任意的双向数据传输的一种技术.WebSocket协议基于TCP协议实现,包含初始的握手过程,以及后续的多次数据帧双向传输过程.其目的是在We ...
- Unity5-ABSystem(三):AssetBundle加载
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/lodypig/article/detai ...
- spring cloud 调用接口间歇性返回http 500 - Internal Server Error的错误
查找了各种资料都没找到解决办法,token失效,网络问题,接口服务问题,基础服务问题,都考虑过,但是没能解决,偶尔发现服务器网络配置中存在一个virbr0虚拟网卡,问了下了网管,删除这个对服务并没有影 ...
- Java 中文数字转换为阿拉伯数字
贴出代码,方便学习交流,稍后放出镜像问题的代码 package com.thunisoft.cail.utils; import com.sun.istack.internal.NotNull; im ...
- 读书笔记——《MySQL DBA 工作笔记》
关于前言 作者在前言中提出的一些观点很具有参考价值, 梳理完整的知识体系 这是每一个技术流都应该追逐的,完整的知识体系能够使我们对知识的掌握更加全面,而不仅仅局限于点 建立技术连接的思维,面对需求,永 ...
- 【51nod 1251】 Fox序列的数量(以及带限制插板法讲解)
为什么网上没有篇详细的题解[雾 可能各位聚聚觉得这道题太简单了吧 /kk 题意 首先题目是求满足条件的序列个数,条件为:出现次数最多的数仅有一个 分析 感谢 刚睡醒的 JZ姐姐在咱写题解忽然陷入自闭的 ...
- spring boot 长时间运行上传报临时目录找不到
The temporary upload location [/tmp/tomcat-docbase.3752410576653354473.8899/work/Tomcat/localhost/RO ...
- Java线程池中线程的状态简介
首先明确一下线程在JVM中的各个状态(JavaCore文件中) 1.死锁,Deadlock(重点关注) 2.执行中,Runnable(重点关注) 3.等待资源,Waiting on condition ...