目录
概括
本文提出了一种可以更加充分利用训练集的训练方式,可直接应用到分类模型,也可推广到下游任务
在训练阶段,混合训练历史信息,迭代的把上一个iteration的batch缩小后粘贴在当前batch进行训练,当然也会相应的调整当前batch的标注文件(分类标注)和损失函数的构成
此法可以强化模型学习多尺度信息,通过对比学习使模型具有目标识别时空间不变性的优点
使模型增加很小的训练代价获得更好的鲁棒性
融合训练历史
上图三个图片对应了三个iteration,前一个iter的输入缩小后会粘贴在下一个iter的输入,然后递归的往后执行相同操作,所以第三个iter的输入会同时包含三张图片,当然之前的图片信息会越来越小。
公式(1)解释了这一操作,M是一张(0 - 1)mask,它和图片一样大。值是1的区域代表当前iter要被上一个iter的输入覆盖的区域,覆盖前会先把图片缩小成相应大小;1 - M是剩余区域。
由公式(2)粘贴的区域有多大由λ决定,λ 代表前一个iter图片缩小的比例,它更是代表了历史信息的占比程度
标注文件也要相应的调整,就像第二个式子那样,上一个标注乘以 λ 和当前标注乘以 λ-1 后相加,效果如下,第一个灰灰的柱子刚开始一定是1了,后来就这样迭代地加权相加
第3、4个式子就表明这是个迭代操作,上标 t 代表当前代,上标 h 代表上一代
构造损失
公式(3)描述了由输入得到多标签概率输出 p 的过程,F是特征提取网络,得到特征图,然后池化、全连接得到概率输出向量p。之后就可以和前面处理过的新标注求损失Loss-CE了。
公式(4)又提取了一种输出,把当前iter被历史覆盖的区域抠出来再过一遍模型得到局部视野的多标签概率输出 p_roi。作者把这个操作理解为了“mask-rcnn”的RoIAlign(把被粘贴覆盖的那块区域当作RPN输出的Anchor,不懂得朋友可以去查一下),其中最后的线性层和全局输出是不同的。
这个过程如上图,p_roi显然是要和上一个iter的输出求损失了,因为他们的从局部视野来看输入缩放后是相同的,不过因为网络参数不同还有整体的输入不同,输出当然是不同的了,不过我们希望他们在一定程度上是相似的。所以这部分的损失使用了KL-散度,它可以衡量两个分布之间的相似度,图中两者也确实从直观上很像是两个离散型随机变量分布律。他没有采用平时采用的交叉熵,因为求损失的双方不再是像概率输出和multi-hot编码那样。
最终的损失是两种损失的加权和,w是配重超参,λ也起到配重的作用。