Finetuning #
为了从图像中提取物体的位置信息,对物体进行了分割。使用 resnet18 分别对物体的 mask 和 rgb 图像进行特征提取,联合起来作为观测输入。这样在训练时任务的成功率有明显提高,但在测试时发现成功率接近0. 经过排查,发现测试时 mlp 预测的物体位置与真实值差异很大,并且预测值的分布比较集中。 针对上述问题进行排查,大部分原因集中在 BN 层的处理上:
- BN 层在 model.train 的时候使用当前 batch 与历史的均值和方差的加权平均进行归一化,而 model.eval 时使用全局均值和方差进行归一化。因此导致验证成功率低的原因之一可能是训练时和测试时的输入分布不一致。经过排查发现每次输入的图像都进行了缩放和归一化,因此并不是这个原因。
- 未能在测试时正确地 model.eval。eval 模式下可以禁用 dropout,并使 BN 层根据全局均值和方差进行归一化。
- 训练时冻结了 BN 层的预训练参数,导致在 resnet 中的 bn 层所学习到的参数是基于Imagenet数据集的数据分布的并且被冻结后不会再学习,如果在验证时使用了其它分布上的验证集,会是预测精度降低。这个原因和 a 类似。经过排查发现验证集的分布和训练时的分布一致,并不是这个原因。
超参数 #
Conv lr=1e-5,att lr=1e-4
mask+rgb背景/噪声背景
resnet14【2,2,1,1】
- Finetune 时卷积层的学习率设置为 1e-5 比较好
- Finetune 时 BN 层需要冻结 rm,rv,冻结 weight 和 bias 对训练效果影响不大
- Adam 和 AdamW 区别不大