把hyp.scratch.yaml文件中的mosaic:设置为1.0,表示对全部数据做mosaic数据增强;把mosaic设置成0.0表示不做mosaic数据增强。
mosaic: 1.0时,跑了10个epoch,mAP@.5就能达到70%的准确率;而mosaic: 0.0时,跑50个epoch,mAP@.5才能达到70%的准确率。
我感觉原因是mosaic数据增强时,做平移、旋转、放缩等变换,增强了数据集的多样性;同时,把多个图片混合在一起,相当于增大了batch size,所以收敛速度更快。
(但是在相同学习率的条件下,比较大的batch size只是保证相邻两个epoch之间梯度更新更加平滑,但是不能提高收敛速度,所以这个说法存疑。)
若是以后遇到每张图片只有1~2个特征时,都试试mosaic数据增强,或者用GAN在图片上多生成一些特征。