0.前言
这篇文章的主要任务是,给定多个有标签行人重识别数据集,如何训练一个模型,在各个数据集上表现都好,并且这个模型能“隐式识别出”(Domain Guided Dropout)是哪个数据集。
- paper: CVPR2016 Learning Deep Feature Representations with Domain Guided Dropout for Person Re-identification
- code: caffe
1. Introduction
对于单个数据集,模型已经能达到很好的效果,对于多个数据集,训练一个模型,怎么才能达到也是很好的效果。
思路分为两步:
- 第一步,将多个数据集的训练集融合到一起,用单分类器训练一个模型baseline
- 第二步,用Domain Guided Dropout(DGD)替换标准的dropout,再训练几个epoch,相当于用DGD对模型有针对性的微调。
结论:fine-tune+DGD的组合作用更大一些。
DGD有两种方案:deterministic DGD 和 stochastic DGD.
等会儿看看能不能从caffe代码中找到一些代码,毕竟看不懂caffe代码很伤啊。
实验结果证明了:1. 多个数据集混合训练得到的baseline比单数据集的模型效果要好;2. deterministic DGD 对baseline有提升,而且stochastic DGD 提升效果更好。
2. Related Work
现在对于多个数据集训练一个模型的方法集中在如何学习一个共同的域不变的特征表示空间,但是作者这篇论文提出的模型允许模型学习到与域相关的components和域无关的特征表示空间,我觉得这个思路要更好一些,因为测试是在各个数据集上分别进行测试的,那么如果能学到一些与域相关的components,将特征共享空间与component组合之后得到域相关空间。
3. Method
针对这张图,我是这么理解的,假设模型在训练时特征提取了2048维特征,那么这2048维特征可能前1500维特征是和 domain A 有关,而后1500维特征和 domain B 有关,这里的有关可以暂时理解成对后续的分类结果有比较大的影响,举个极端的例子,在 domain A 中,主要根据第100维特征分类,那么第100维特征的存在对分类结果有很大的影响,而其他维的特征对 domain A 中的数据集分类无关,那么模型只需要每次都把其他维的特征直接变成0即可,只是因为其他域的存在,使得模型不能把其他维的特征每次都变成0,从而影响了 domain A 的特征提取。
后面作者也专门做了研究特征的影响。
3.1 公式定义
符号 | 含义 |
---|---|
D | D个数据集 |
$\lbrace (xi^j, y_i^j){j=1}^{Ni}\rbrace{i=1}^D$ | 数据集的表示,第i个数据集第j个图片 |
$g(\cdot)$ | generic feature extractor |
3.2 baseline
baseline 值得注意的是作者没有采用多个分类器的方法,而是用一个分类器,把所有数据集混在一起,重新排id,来训练。
多个分类器$f_1, f_2, …, f_D$
单分类器$f$
按照作者的说法,这种单分类器能同时学习到domain biases and person id,后续有实验分析证明这个理论。
网络架构:
其中M表示行人类别。其中 fc7 包括:Linear, ReLU, Dropout, 再结合后续的DGD,不难猜测测试特征就是fc7的输出,也就是g(x),这里的dropout灵活处理,因为DGD就是取代的dropout.
3.3 Domain Guided Dropout
定义:$g(x)\in R^d$,第i个元素的影响因子定义为:
其中$g(x)_{\i}$表示将i个元素变成0.
对于每个域,遍历所有图片得到第i个元素的影响因子:
这张图片可以清晰地表明对于不同的 domain,第i个特征的影响程度不同,换句话说,有些特征对 domain A 影响大,对 domain B 影响小,如果能自动学习到哪些特征影响作用大,那么就可以有针对性地训练这些特征并减少其他特征对测试的影响。作者的思路很清晰。
作者实际是用的二阶泰勒展开逼近的$s_i$:
实验证明,这种逼近的精度是可以满足需求的:
定义:mask m,根据上一步得到的s得到mask m,有两种方案:
方案一:deterministic
方法二:stochastic
然后用mask m代替fc7的dropout,再训练10个epoch.在测试的时候,特征也是需要经过mask m的。
4. Experiments
- JSTL: jointly with a single-task learning objective
- DGD: Domain Guided Dropout
- JSTL+DGD: improve JSTL with deterministic Domain Guided Dropout: work on all the domains simultaneously.
- FT-JSTL+DGD: fine-tune the CNN separately on each domain with the stochastic Domain Guided Dropout
- FT-JSTL: fine-tune the CNN separately on each domain with standard dropout
从上图中可以看出,联合训练对大数据集的作用不明显,对小数据集的作用比较明显,从随机初始化开始训练的话,deterministic DGD的作用几乎没有,fine-tune的作用是有的,fine-tune和stochastic DGD 共同起的作用更大一些,也就是说fine-tune本身的作用最大,如果在fine-tune的过程中加入DGD,发挥的作用会更好一些,
其中a图表示对所有的域同时训练,b图表示分别对域微调得到不同的模型。