yolo3-pytorch icon indicating copy to clipboard operation
yolo3-pytorch copied to clipboard

为什么get_ignore需要网络的输出呢

Open bonne658 opened this issue 2 years ago • 6 comments

请问, get_ignore在忽略样本时,用了yolov3的输出,一般正负样本会在训练之前生成吧,这是yolov3的设定吗?

bonne658 avatar Jun 01 '22 09:06 bonne658

是设定。

bubbliiiing avatar Jun 01 '22 11:06 bubbliiiing

是设定。

哦哦,3Q

bonne658 avatar Jun 01 '22 11:06 bonne658

是设定。

这个问题我也觉得奇怪,论文中也没有明说,小哥是看的yolov3源码吗? 另外,不用模型输出,直接用targets进行encode的对比实验有做过吗?谢谢!

xiao-an-qi avatar Jul 09 '22 05:07 xiao-an-qi

我看的是qqwweee keras yolo3的源码,你去掉的话,yolo3的正样本本就一个,负样本太多了。

bubbliiiing avatar Jul 09 '22 05:07 bubbliiiing

我看的是qqwweee keras yolo3的源码,你去掉的话,yolo3的正样本本就一个,负样本太多了。

不是去掉,正负样本的定义代码没有问题,我只是说对于可忽略anchor(iou大于0.5但非最大)的确定逻辑,如果不用模型输出,而直接用target,直接在self.get_target函数中找出target与所有anchor的iou在0.5到最大值之间的anchor,这些anchor直接判为可忽略,这样正负样本和可忽略样本相当于都是训练前就定义好的,是静态的而不是动态(你这份代码的可忽略anchor的定义相当于是动态的)的,这样模型拟合会不会快一些,同时精度上会不会有提升呢?

xiao-an-qi avatar Jul 09 '22 06:07 xiao-an-qi

不会有提升应该,你该理解为什么要用预测框,因为预测的结果和真实框比较接近,代表这个预测框对应的先验框是预测这个真实框的,所以忽略。直接用先验框匹配比较暴力,而且和yolo原来的匹配方式也相差较大。

bubbliiiing avatar Jul 09 '22 15:07 bubbliiiing