定义
问题背景:希望模型在学习了一定类别的大量数据后,对于新的类别,只需要少量的样本就能快速学习
定义:
- novel class:没有见过的类别
- 支撑集(support sample):CK个数据的训练集,如果K为1,则为one-shot
- 预测对象(query set):又称作batch,在支撑集上训练以后,需要在该set上进行预测
具体过程:
有一个数据集D,分为
D
b
a
s
e
D_{base}
Dbase和
D
n
o
v
e
l
D_{novel}
Dnovel。模型首先在
D
b
a
s
e
D_{base}
Dbase进行统一的训练,主要有两种训练方式:
- 训练过程模拟测试过程,每一次训练,选择k个类别,每个类别选择n个样本(k-way n-shot),剩下的图片中选择部分来作为query samples,通过两者的距离分类,计算loss
- 训练过程正常,也就是训练了一个鲁棒的特征提取器。
我的策略:
- 1.sample少量训练数据,训练n轮(训练数据包含了所有类别,各个类别有k个数据——k-shot)
- 2.训练完毕,在除了训练数据以外的剩下数据上进行测试
- 3.多次进行1,2,其F1值得mean和std.
其中,std计算公式如下: