首页 Paddle框架 帖子详情
聚类锚框size对于mAPs的提高效果
收藏
快速回复
Paddle框架 问答模型训练炼丹技巧 1995 16
聚类锚框size对于mAPs的提高效果
收藏
快速回复
Paddle框架 问答模型训练炼丹技巧 1995 16

想请教下各位大牛就是,最近尝试了修改yolov3模型中的锚框尺寸来匹配自己训练集的图片真实框大小以提升检测的mAPs,用的是K-means聚类的方式,生成了9个锚框。

因为我在训练的时候采用的是多尺度训练的方式,每一个epoch下所有的输入图片尺寸都是一样大的,resize的范围是320*320 - 608*608之间。

在K-means生成锚框的时候,也采用的是同样的方式,就是将数据集的所有图片都resize成(480*480)这一个中间尺寸,来拟合整个320-608范围内的锚框大小,但是最后的效果和直接使用coco数据集下的锚框大小相差无几,想请教一下我这样的做法和思路是不是在哪里还存在一些不足呢,因为是第一次尝试从这个角度优化,也没有这方面的经验,所以还望各位前辈指点赐教!

(锚框的拟合过程是正常的,所有的x,y,w,h也都缩放了size)

 

1
收藏
回复
全部评论(16)
时间顺序
m
mar836924042
#2 回复于2020-05

使用聚类的方式生成锚框,貌似主要是提高召回率,对最后的预测精度并没有什么提高,要不你测一下召回率是不是有改变

0
回复
CQ-Shang
#3 回复于2020-05

目标检测可以试试百度自家的轮子

0
回复
水水水的老师
#4 回复于2020-05

 聚类锚框size对于mAPs的提高主要是提高召回率,对最后的预测精度并没有什么提高

0
回复
Henry.coder
#5 回复于2020-05

召回率确实是有提高,谢谢大家了,之前方向可能搞错了

0
回复
AIStudio810258
#6 回复于2020-05
 聚类锚框size对于mAPs的提高主要是提高召回率,对最后的预测精度并没有什么提高

如果在训练集上进行宽高非比例的拉伸(数据增广)会对聚类的效果有什么影响?

0
回复
AIStudio810258
#7 回复于2020-05
使用聚类的方式生成锚框,貌似主要是提高召回率,对最后的预测精度并没有什么提高,要不你测一下召回率是不是有改变

如果在数据增广时进行了任意角度的旋转,聚类锚框还有意义么?

0
回复
AIStudio810258
#8 回复于2020-05
 聚类锚框size对于mAPs的提高主要是提高召回率,对最后的预测精度并没有什么提高

锚框也跟着同比例拉伸,应该可能不影响聚类效果。如果任意角度旋转后改变了标注框的宽高比例呢?聚类锚框还有意义么?

0
回复
m
mar836924042
#9 回复于2020-05
如果在数据增广时进行了任意角度的旋转,聚类锚框还有意义么?

个人理解是,利用“旋转”数据增强一张训练样本时,这个训练样本里目标标记的边界框需要相应变化,相当于边界框尺寸就会发生变化,如果旋转角度不大的话,原先生成的聚类锚框只会是效果下降一些,但如果旋转角度比较大的话,那用原来生成的锚框就没有意义了。

我觉得应该在数据增强后,应该对数据增强后的数据集重新计算生成新的聚类锚框尺寸来使用,这样就没什么问题。

0
回复
AIStudio810258
#10 回复于2020-05
个人理解是,利用“旋转”数据增强一张训练样本时,这个训练样本里目标标记的边界框需要相应变化,相当于边界框尺寸就会发生变化,如果旋转角度不大的话,原先生成的聚类锚框只会是效果下降一些,但如果旋转角度比较大的话,那用原来生成的锚框就没有意义了。 我觉得应该在数据增强后,应该对数据增强后的数据集重新计算生成新的聚类锚框尺寸来使用,这样就没什么问题。
展开

逻辑上,如果使用了任意角度的旋转,聚类就没意义了。但是现实的数据增强往往都是以各个角都都学习模型泛化能力才好啊。

0
回复
AIStudio810258
#11 回复于2020-05
个人理解是,利用“旋转”数据增强一张训练样本时,这个训练样本里目标标记的边界框需要相应变化,相当于边界框尺寸就会发生变化,如果旋转角度不大的话,原先生成的聚类锚框只会是效果下降一些,但如果旋转角度比较大的话,那用原来生成的锚框就没有意义了。 我觉得应该在数据增强后,应该对数据增强后的数据集重新计算生成新的聚类锚框尺寸来使用,这样就没什么问题。
展开

我看后多例子实际都没用旋转增强。

0
回复
AIStudio810258
#12 回复于2020-05
个人理解是,利用“旋转”数据增强一张训练样本时,这个训练样本里目标标记的边界框需要相应变化,相当于边界框尺寸就会发生变化,如果旋转角度不大的话,原先生成的聚类锚框只会是效果下降一些,但如果旋转角度比较大的话,那用原来生成的锚框就没有意义了。 我觉得应该在数据增强后,应该对数据增强后的数据集重新计算生成新的聚类锚框尺寸来使用,这样就没什么问题。
展开

可能因为比赛时追求的是成绩。但实际应用肯定旋转的泛化好。

0
回复
AIStudio810260
#13 回复于2020-05
可能因为比赛时追求的是成绩。但实际应用肯定旋转的泛化好。

可是比赛的时候没用过的测试集也是检验泛化效果的一种啊?如果连比赛的测试集上效果都严重不如,怎么能保证实际的时候就更好用?

0
回复
AIStudio810258
#14 回复于2020-05
个人理解是,利用“旋转”数据增强一张训练样本时,这个训练样本里目标标记的边界框需要相应变化,相当于边界框尺寸就会发生变化,如果旋转角度不大的话,原先生成的聚类锚框只会是效果下降一些,但如果旋转角度比较大的话,那用原来生成的锚框就没有意义了。 我觉得应该在数据增强后,应该对数据增强后的数据集重新计算生成新的聚类锚框尺寸来使用,这样就没什么问题。
展开

这样就不能在内存里做数据增广了。。。

0
回复
AIStudio810258
#15 回复于2020-05
 聚类锚框size对于mAPs的提高主要是提高召回率,对最后的预测精度并没有什么提高

嗯,最后标注框是用回归微调的。

0
回复
AIStudio810258
#16 回复于2020-05
可是比赛的时候没用过的测试集也是检验泛化效果的一种啊?如果连比赛的测试集上效果都严重不如,怎么能保证实际的时候就更好用?

逻辑上成立

0
回复
CQ-Shang
#17 回复于2020-06
可是比赛的时候没用过的测试集也是检验泛化效果的一种啊?如果连比赛的测试集上效果都严重不如,怎么能保证实际的时候就更好用?

有道理啊

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户