赞
踩
目录
链接:https://arxiv.org/pdf/2104.14294
总结贡献点如下:
DINO的名字来自于 self-distillation with no labels (所以我认为读音应该是 /di nəʊ/,如果有其他官方的发音欢迎评论区更正 OHO!)
用自监督训练ViT的灵感来自于BERT和GPT,作者总结了两个属性(同上Abstract),为了下文方便提及,我总结为:
其中语义分割信息似乎是自监督训练的共性,但是KNN上的表现还依赖于其他的trick比如momentum encoder / multi-crop augmentation / ViT中使用更小的patch。
由此,DINO设计了一个教师网络(使用了momentum encoder + 标准的交叉熵损失),对于教师网络的输出,只采用了centering 和 sharpening来防止collapse,而并没有使用一些predictor, advanced normalization 或者 contrastive loss 的组件(这些组件在不管是网络稳定性还是精度上都没什么效果)。
DINO可适用于ViT或者CNN,官方代码写入了 ViTs 和 ResNet-50,后续会提到。
训练速度:2个8-GPU服务器,3天,ImageNet数据集。
我一般不会特意去看related work,不过这篇paper非常明确提到了自己与相关工作的差异点:
文中的示意图已经足够我们理解方法的框架,下面会解释一些细节和步骤:
教师网络的更新: 即上文提过的momentum encoder(对于momentum encoder,在后文写了个补充介绍),更新公式是 θt ← λθt + (1 − λ)θs, 在每个iter,将教师网络的参数更新为当前时刻的教师网络和学生网络参数的加权和,这个加权系数由 λ 控制。λ 取值为 0.996 - 1之间,以余弦方式变化。(可以发现每次只是更新很小权重的学生网络影响)
示意图中深灰色的gs / gt由两部分组成,f & h。其中f为backbone,如ViT;h为projection head,如图。需要注意的是,projection head存在的目的是为了辅助训练,下游任务的特征来自于 f 的输出!
DINO中的centering和sharpening:
centering避免一部分特征占据主导地位,具体是通过添加一个偏差项c到teacher模型中:gt(x) ← gt(x) + c,偏差项c是根据前段时刻的教师网络参数更新的,最终使不同batch激活值都在一个相近的范围内。
sharpening是在教师网络最后的softmax归一化中,通过一个小的温度系数τt,使最后的分布更加锐化
centering和sharpening其实可以看做是对抗学习,使参数不断抖动并收敛。
不太能理解DINO的可视化方案,先记录在此,有空补上笔记
【学习ing ……
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。