论文提出增量式少样本目标检测算法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对应的推理,不需要模型再训练
阶段一主要训练ONCE的类可知特征提取器 f f f,使用正常的CentreNet训练方法进行完整训练,目标定位器 h h h不用于阶段二,但后面基类的class code会复用阶段一的
对于训练图片 I ∈ R h × w × 3 I\in \mathcal{R}^{h\times w\times 3} I∈Rh×w×3,提取类可知特征图 m = f ( I ) m=f(I) m=f(I), m ∈ R h r × w r × c m\in \mathcal{R}^{\frac{h}{r}\times \frac{w}{r}\times c} m∈Rrh×rw×c,目标定位器结合学习到的与类 k k k相关的卷积核(class code) c k ∈ R 1 × 1 × c c_k\in \mathcal{R}^{1\times 1\times c} ck∈R1×1×c得到类 k k k的中心点heatmap Y k Y_k Yk
对于目标的定位,先确定局部峰值 P k = { ( x i , y i ) } i = 1 n \mathcal{P}_k=\{(x_i,y_i)\}_{i=1}^n Pk={(xi,yi)}i=1n,局部峰值为bbox输出位置,要求大于等于所有临界像素,最终的bbox结果如公式2, ( δ x i , δ y i ) = O x i , y i ∈ R 1 × 1 × 2 (\delta x_i,\delta y_i)=O_{x_i, y_i}\in \mathcal{R}^{1\times 1\times 2} (δxi,δyi)=Oxi,yi∈R1×1×2为中心偏移, ( h i , w i ) = S x i , y i ∈ R 1 × 1 × 2 (h_i,w_i)=S_{x_i,y_i}\in \mathcal{R}^{1\times 1\times 2} (hi,wi)=Sxi,yi∈R1×1×2为尺寸预测,结合offset code和size code获得,具体方法与上面的类别heatmap获取类似,使用 L 1 L_1 L1回归损失对 f f f的参数和 h h h的参数 c c c进行优化
在阶段一学习到的参数
c
c
c仅包含基类,是固定的。为了适应iFSD场景,使用class code生成器
g
g
g来根据样本图片在线生成新类别的class code。生成器的训练使用matching network的meta-learning策略,从基类中采样大量的少样本训练数据子集,模拟测试时的场景
定义单个iFSD任务
T
T
T为在基类上平均采样获得的类标签集
L
L
L,标签集仅包含一个或几个类别,将标签集中的每个类的图片随机分为辅助集合(meta-training)
S
S
S和查询集(meta-valudation)
Q
Q
Q
在推理阶段,辅助集 S S S用于为每个类别 k k k生成class code
基于class code集合 c ^ k {\hat{c}_k} c^k,按照公式4和公式5在查询图片 I I I上进行目标检测,通过最小化在 Q Q Q上的平均预测误差来优化class code生成器的参数,误差计算使用 L 1 L_1 L1损失 ∣ Y ^ − Z ∣ |\hat{Y}-Z| ∣Y^−Z∣, Z Z Z为GT heatmap
给予少量的标注样本,新类别的meta-testing流程如下:
- 使用少量的标注样本通过公式3获取class code
- 通过公式4获取测试图片的特征
- 通过公式1定位新类别的目标实例
- 找到heatmap中局部最大位置,通过公式2获取所有bbox的坐标进行输出
对于基类的测试在第一步直接使用阶段一学习到class code,通过上述步骤,可以简单且独立地将新类别加入到iFSD中
特征提取器 f f f使用主干为ResNet的Simple baseline,结构如上图,包含encoder-decoder对。首先提取图片 I I I的低分辨率的3D特征图,然后通过可学习的上采样卷积输出高分辨率的特征图 f ( I ) f(I) f(I)。class code生成器使用相同的encoder主干,在进行阶段二之前,生成器的权重拷贝特征提取器的权重进行初始化,最终通过global average pooling输出256维的class code c k c_k ck。鉴于辅助集的数量可能各不一样,最终的class code为类所有辅助图片 I i k , s I_i^{k,s} Iik,s的class code的平均值
Experiments
Non-Incremental Few-Shot Detection
将样本少的新类(10 shot)和样本充足的基类(all)混在一起进行训练,结果如表1
Incremental Few-Shot Object Detection
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采样
ONCE的性能比其它方法优异,尽管在新类别上的准确率普遍较低,但ONCE算是一种不错的快速解决增量式少样本检测的方法
在逐渐增加类别的场景下,ONCE表现稳定,而其它方法的表现则逐渐变差
与same-dataset的结果相差不大
Few-Shot Fashion Landmark Detection
Conclusion
在研究了现实的增量少样本目标检测问题后,论文提出了一个不错的快速解决算法ONCE,能够以推理的形式将新类别进行注册而不需要再使用旧的训练数据,相比其它类似的方法更有效
这里需要注意的是,论文的方法与主流的少样本目标检测算法不太一样,目前很多性能高的方法大都基于比对的方式进行有目标的检测,并且需要大量的数据进行模型训练再应用到新类中,要检测所有的类别则需要全部进行比对,十分耗时。而论文是增量式添加类别到模型,以常规的推理形式直接检测,十分高效且数据需求十分低,虽然最终的性能有点难看,但是这个思路还是可以有很多工作可以补的
如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】