写在最前面:最大的敌人就是自己。多检查,多思考,多受益。
Batch Normalization layer对于新接触机器学习的同学来说是一个大坑,AI模型摸爬滚打一年,总结BN相关实战经验:
1、网络使用BN层,数据一定要做归一化,RGB除以255,单分类标签为0/1,一定要做!!!
2、使用数据增强,一定要可视化看一下增强后的图像与标签,特别是多分类任务,图像处理差值后标签容易出现改变!
3、均值和方差不一定要算,数据量小(小于10g)的情况下建议直接使用ImageNet等大型数据集均值方差,效果可能更好。
4、一次训练任务,精度上升非常快,出现集精度高(iou 0.5),验证集精度低(1e-12),由于dataset的filelist[index]在测试的时候加了一个编号,写为filelist[0],导致对第一张一直训练,搞到凌晨三点没找到原因,写出来提醒他人。
5、少量数据训练情况下,可直接冻结BN层。