增量学习不只有finetune,三星AI提出增量式少样本目标检测算法ONCE | CVPR 2020
论文提出增量式少样本目标检测算法ONCE,与主流的少样本目标检测算法不太一样,目前很多性能高的方法大都基于比对的方式进行有目标的检测,并且需要大量的数据进行模型训练再应用到新类中,要检测所有的类别则需要全部进行比对,十分耗时。而论文是增量式添加类别到模型,以常规的推理形式直接检测,十分高效且数据需求十分低,虽然最终的性能有点难看,但是这个思路还是可以有很多工作可以补的
来源:晓飞的算法工程笔记 公众号
论文: Incremental Few-Shot Object Detection
Introduction
论文研究了非常有意义的增量式少样本目标检测场景iFSD(Incremental Few-Shot Detection),场景设置如下:
- 检测模型可以在包含充足样本的基础类别上进行训练
- 训练好后,iFSD能够应用到真实世界中,任何新类别在任何时候都能通过少量标注样本进行注册
- 对于无限的新类别的学习,在内存使用量、存储用量和计算量上都应该是可行的,理想情况下,模型可以发布在资源有限的设备上,如手机和机器人
目前的常规目标检测算法大都难以适用于iFSD的场景设置,一般的做法是对新类别进行fine-tune,但这样既耗时效果又一般。为此,论文提出无限制CentreNet(OpeN-ended Centre nEt, ONCE),在原CentreNet(CenterNet?)的基础上,采用基于特征的知识迁移策略,将网络分成类可知和类不可知模块进行增量式少样本学习。首先使用基类训练一个通用的特征提取器,然后基于meta-learning学习class code生成器,最后通过结合特征和class code进行目标定位
论文的主要贡献如下:
- 在增量式少样本目标检测问题上,论文首次尝试减少常规需要深度训练的目标检测算法对大量训练数据进行批量训练的依赖
- 提出无限制CentreNet(OpeN-ended Centre nEt, ONCE),将CentreNet适应到增量式少样本场景中
- 在目标检测和服装关键点检测实验上,ONCE都比目前的方法要好
Methodology
增量式少样本目标检测算法(Incremental Few-Shot Detection, iFSD)的目标为获得能够仅使用少量样本就能进行增量式学习新类别学习器,将目标类别分为足够样本的基础类别和少量样本的新类别,分别用于系统初始化和增量式学习,注意在增量式学习期间不能使用基类数据
Object Detection Architecture
常规的目标检测算法由于两阶段设计以及softmax分类器的使用,导致很难动态直接加入新类别。论文选择了CentreNet作为基础模型,出于以下两点考虑:
- 高效的one-stage目标检测pipeline
- 类别独立的建模范式(per-class heatmap centroid prediction),新类能够以插件形式接入
CentreNet将目标检测定义为point-attribute的回归问题,结构如图1,将中心点和空间大小(宽和高)作为回归目标,每个目标使用2D heatmap进行表示,而heatmap是类间独立的
Incremental Few-shot Object Detection
由于CentreNet是批量学习的模型,不适合iFSD场景,在其结构上引入meta-learning的思想,即文中的无限制CentreNet(OpeN-ended Centre nEt , ONCE)
Model formulation,ONCE将CtreNet分为两部分:(i) 通用的特征提取器,将输入转化为3D特征图 (ii) 目标定位器,包含用于将特征图成heatmap的类特定编码(class code)。为了脱离批量学习的形式,类特定编码(class code)由meta-learned network(class code generator)根据辅助集生成
Meta-Training: Learning a Few-Shot Detector,为了充分压榨基础类别的作用,将ONCE训练分别两个串行的阶段。第一阶段训练类不可知的特征提取器,第二阶段固定特征提取器,联合训练目标定位器和meta-network,meta-network根据给定的辅助集生成类特定编码,目标定位器则结合类编码和特征进行少样本目标定位学习
Meta-Testing: Enrolling New Classes,给予包含少量标注图片的新类别辅助集,直接使用学习到的特征提取器、目标定位器和meta-network。先通过meta-network生成类特定编码参数化目标定位器,然后直接进行图2 stage I对应的推理,不需要模型再训练
Stage I: Feature Extractor Learning
阶段一主要训练ONCE的类可知特征提取器$f$,使用正常的CentreNet训练方法进行完整训练,目标定位器$h$不用于阶段二,但后面基类的class code会复用阶段一的
对于训练图片$I\in \mathcal{R}^{h\times w\times 3}$,提取类可知特征图$m=f(I)$, $m\in \mathcal{R}^{\frac{h}{r}\times \frac{w}{r}\times c}$,目标定位器结合学习到的与类$k$相关的卷积核(class code)$c_k\in \mathcal{R}^{1\times 1\times c}$得到类$k$的中心点heatmap$Y_k$
对于目标的定位,先确定局部峰值$\mathcal{P}k={(x_i,y_i)}{i=1}^n$,局部峰值为bbox输出位置,要求大于等于所有临界像素,最终的bbox结果如公式2,$(\delta x_i,\delta y_i)=O_{x_i, y_i}\in \mathcal{R}^{1\times 1\times 2}$为中心偏移,$(h_i,w_i)=S_{x_i,y_i}\in \mathcal{R}^{1\times 1\times 2}$为尺寸预测,结合offset code和size code获得,具体方法与上面的类别heatmap获取类似,使用$L_1$回归损失对$f$的参数和$h$的参数$c$进行优化
Stage II: Class Code Generator Learning
在阶段一学习到的参数$c$仅包含基类,是固定的。为了适应iFSD场景,使用class code生成器$g$来根据样本图片在线生成新类别的class code。生成器的训练使用matching network的meta-learning策略,从基类中采样大量的少样本训练数据子集,模拟测试时的场景
定义单个iFSD任务$T$为在基类上平均采样获得的类标签集$L$,标签集仅包含一个或几个类别,将标签集中的每个类的图片随机分为辅助集合(meta-training)$S$和查询集(meta-valudation)$Q$
在推理阶段,辅助集$S$用于为每个类别$k$生成class code
基于class code集合${\hat{c}_k}$,按照公式4和公式5在查询图片$I$上进行目标检测,通过最小化在$Q$上的平均预测误差来优化class code生成器的参数,误差计算使用$L_1$损失$|\hat{Y}-Z|$,$Z$为GT heatmap
Meta Testing: Enrolling New Classes
给予少量的标注样本,新类别的meta-testing流程如下:
- 使用少量的标注样本通过公式3获取class code
- 通过公式4获取测试图片的特征
- 通过公式1定位新类别的目标实例
- 找到heatmap中局部最大位置,通过公式2获取所有bbox的坐标进行输出
对于基类的测试在第一步直接使用阶段一学习到class code,通过上述步骤,可以简单且独立地将新类别加入到iFSD中
Architecture
特征提取器$f$使用主干为ResNet的Simple baseline,结构如上图,包含encoder-decoder对。首先提取图片$I$的低分辨率的3D特征图,然后通过可学习的上采样卷积输出高分辨率的特征图$f(I)$。class code生成器使用相同的encoder主干,在进行阶段二之前,生成器的权重拷贝特征提取器的权重进行初始化,最终通过global average pooling输出256维的class code $c_k$。鉴于辅助集的数量可能各不一样,最终的class code为类所有辅助图片$I_i^{k,s}$的class code的平均值
Experiments
Non-Incremental Few-Shot Detection
将样本少的新类(10 shot)和样本充足的基类(all)混在一起进行训练,结果如表1
Incremental Few-Shot Object Detection
Experimental setup
same-dataset实验,将COCO的60类作为基类,其余20类作为新类别。对于meta-training,从基类随机采样32个任务,每个任务包含3个类别,每个类别包含5个标注的bbox。对于meta-testing,使用全部20个新类别,每个类别随机采样几张图片,有两种测试方法,一种是一次性加入全部类别(incremental batch learning),另一种是逐步加入类别(continuous incremental learning)
cross-dataset实验,跟上述类似,只是meta-training的基类从COCO采样,meta-testing的新类从VOC采样
Object detection on COCO
ONCE的性能比其它方法优异,尽管在新类别上的准确率普遍较低,但ONCE算是一种不错的快速解决增量式少样本检测的方法
在逐渐增加类别的场景下,ONCE表现稳定,而其它方法的表现则逐渐变差
Object detection transfer from COCO to VOC
与same-dataset的结果相差不大
Few-Shot Fashion Landmark Detection
Conclusion
在研究了现实的增量少样本目标检测问题后,论文提出了一个不错的快速解决算法ONCE,能够以推理的形式将新类别进行注册而不需要再使用旧的训练数据,相比其它类似的方法更有效
这里需要注意的是,论文的方法与主流的少样本目标检测算法不太一样,目前很多性能高的方法大都基于比对的方式进行有目标的检测,并且需要大量的数据进行模型训练再应用到新类中,要检测所有的类别则需要全部进行比对,十分耗时。而论文是增量式添加类别到模型,以常规的推理形式直接检测,十分高效且数据需求十分低,虽然最终的性能有点难看,但是这个思路还是可以有很多工作可以补的
如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】
增量学习不只有finetune,三星AI提出增量式少样本目标检测算法ONCE | CVPR 2020的更多相关文章
- AI佳作解读系列(五) - 目标检测二十年技术综述
计算机视觉中的目标检测,因其在真实世界的大量应用需求,比如自动驾驶.视频监控.机器人视觉等,而被研究学者广泛关注. 上周四,arXiv新出一篇目标检测文献<Object Detection ...
- 谷歌大脑提出:基于NAS的目标检测模型NAS-FPN,超越Mask R-CNN
谷歌大脑提出:基于NAS的目标检测模型NAS-FPN,超越Mask R-CNN 朱晓霞发表于目标检测和深度学习订阅 235 广告关闭 11.11 智慧上云 云服务器企业新用户优先购,享双11同等价格 ...
- 超越Mask-RCNN:谷歌大脑的AI,自己写了个目标检测AI
这是一只AI生出的小AI. 谷歌大脑的Quoc Le团队,用神经网络架构搜索 (NAS) ,发现了一个目标检测模型.长这样: △ 看不清请把手机横过来 它的准确率和速度都超过了大前辈Mask-RCNN ...
- AI R-CNN目标检测算法
Region-CNN,简称R-CNN,是首次将深度学习应用于目标检测的算法. bounding box IOU 非极大值抑制 selective search 参考链接: https://blog.c ...
- AI SSD目标检测算法
Single Shot multibox Detector,简称SSD,是一种目标检测算法. Single Shot意味着SSD属于one stage方法,multibox表示多框预测. CNN 多尺 ...
- AI佳作解读系列(二)——目标检测AI算法集杂谈:R-CNN,faster R-CNN,yolo,SSD,yoloV2,yoloV3
1 引言 深度学习目前已经应用到了各个领域,应用场景大体分为三类:物体识别,目标检测,自然语言处理.本文着重与分析目标检测领域的深度学习方法,对其中的经典模型框架进行深入分析. 目标检测可以理解为是物 ...
- 《垃圾回收的算法与实现》——增量式垃圾回收与RC Immix算法
增量式垃圾回收 为了控制最大暂停时间,通过逐渐推进垃圾回收即垃圾回收与mutator交替执行. 三色标记算法 以标记-清除算法为例使用三色标记算法. 利用降低吞吐量来缩短最大停顿时间. 基础 将GC中 ...
- 旷世提出类别正则化的域自适应目标检测模型,缓解场景多样的痛点 | CVPR 2020
论文基于DA Faster R-CNN系列提出类别正则化框架,充分利用多标签分类的弱定位能力以及图片级预测和实例级预测的类一致性,从实验结果来看,类该方法能够很好地提升DA Faster R-CNN系 ...
- 带你读AI论文丨用于目标检测的高斯检测框与ProbIoU
摘要:本文解读了<Gaussian Bounding Boxes and Probabilistic Intersection-over-Union for Object Detection&g ...
随机推荐
- Django-on_delete
一.外键的删除 关于on_delete的总结 1.常见的使用方式(设置为null) class BookModel(models.Model): """ 书籍表 &quo ...
- 9.Metasploit制作木马后门
01木马与后门 木马?后门? 木马和后门都有害,尤其是木马,它由攻击者主动发起,稍不留心就会被利用:后门原来是留给自己方便用的,但也有可能被非法利用,这两种程序都会给用户带来损失. 木马是指潜伏在 ...
- jmeter发送Query String Parameters格式参数报错
当发起一次GET请求时,参数会以url string的形式进行传递.即?后的字符串则为其请求参数,并以&作为分隔符 当参数为json格式时,这时需要勾选编码,否则会报错
- Python GUI——tkinter菜鸟编程(中)
8. Radiobutton 选项按钮:可以用鼠标单击方式选取,一次只能有一个选项被选取. Radiobutton(父对象,options,-) 常用options参数: anchor,bg,bitm ...
- python图片拼接
python图片拼接 这两天看到一张图片,想用python来实现类似的图片拼接 先分析图片: 很明显,这张图片是由多张图片叠加拼接而成 从最后一张开始开始叠加,之后的每张图片都往上平移了一个固定的距 ...
- Java第二十六天,多线程等待换新机制(严格执行化)
代码: 1.老板类: package com.lanyue.day26; public class bossRunnable implements Runnable { public myLock l ...
- C/C++内存详解
众所周知,堆和栈是数据结构中的两种数据结构类型,堆是一种具有优先顺序的完全二叉树(或者说是一种优先队列,因为它在一定的优先顺序下满足队列先进先出的特点),排队打饭就是它的典型实例,栈是一种后进先出的数 ...
- P4015 运输问题【zkw费用流】
输入输出样例 输入 #1复制 2 3 220 280 170 120 210 77 39 105 150 186 122 输出 #1复制 48500 69140zuixiaofeiyo 说明/提示 1 ...
- 在linux中使用mailx发送邮件
[root@ml ~]# yum -y install mailx #安装 [root@ml ~]# vim /etc/mail.rc 在最后一行添加(我这里使用的是qq邮箱): @qq.com ...
- vueThink框架搭建与填坑(new)
自己跟着官网搭建vueThink框架,发现github上文档有很多坑.所以总结一下(仅针对WIN端下载使用) 1.安装node.js 前端部分是基于node.js上运行的,所以必须先安装node.js ...