首先引用https://blog.csdn.net/Nire_Yeyu/article/details/105403220
1.调小score_threshold
这种方法属于见效快,但是治标不治本。在验证阶段直接调小score_threshold,可以将mAP快速提升,但是实际上你的模型预测的结果,置信度还是很低。
2.调小batch_size
将原本的batch_size调小,同时增大learning_rate,batch_size可以尝试慢慢调小,因为batch_size小,训练速度会变慢,batch_size大训练速度会相对快一些。
原理是假设你正在看一本书,书的总页数是固定的(相当于数据集的大小)batch_size越大,相当于你每次同时看batch_size页的书,虽然learning_rate较低,即每次看的较慢,但是最终花费的时间短,理解的东西会比较片面,导致阅读质量下降,即预测结果置信度很低,即评估只能通过设置很小的score_threshold,来提升mAP。
所以解决方法是,调小的batch_size,同时增大learning_rate。即每次看较少数量的内容,但是提高阅读速度,总花费时间较长,但理解的东西比较深刻,即最终模型训练的结果也会较好,评估阶段置信度较高。
3.如果是YOLOV3训练
- 我遇到的问题是,前期precision很低,recall相对较高,查看结果是预测结果太多了,我的解决方法是提高nms阶段的score_threshold,原本0.01我调整到0.1又调到0.05,最终发现0.05效果较好。
- 加更,nms阶段的score_threshold可以继续增加,也可以提升一部分的mAP
- 更换优化器,即optimizer_name,可尝试替换其他优化器,查看效果
总结
上述是我将kmeans应用到YOLOV3中,更换自己的anchors时,mAP一直很低,自己多次调整之后,总结的经验。加油自己!离成功又近了一步~