CIoU icon indicating copy to clipboard operation
CIoU copied to clipboard

请问论文中1/(w^2+h^2) 替换成1如何实现?

Open KoapT opened this issue 3 years ago • 2 comments

今天阅读您的论文,提到ciou loss中 v对h和w求偏导时的问题。 由于w和h可能会非常小,所以为避免梯度爆炸您将1/(w^2+h^2) 替换成了1。 请问这在pytorch、tf这类自动求导的框架中如何实现? 我看您的pytorch实现是增加了条件S:

S = (iou>0.5).float()
alpha= S*v/(1-iou+v)

是否能理解为,使用Iou>0.5这个条件,过滤掉了w和h很小的情况,从而1/(w^2+h^2) 不按照原论文替换为1?

KoapT avatar Oct 22 '20 07:10 KoapT

因为我们发现在Pytorch中CIoU自动求导可以正常进行,限制在IoU>0.5是因为我们认为IoU<0.5长宽比不是那么重要。

Zzh-tju avatar Oct 22 '20 07:10 Zzh-tju

因为我们发现在Pytorch中CIoU自动求导可以正常进行,限制在IoU>0.5是因为我们认为IoU<0.5长宽比不是那么重要。

好的。谢谢回复! 我在用tf1实现yolov4的时候,也在ciou loss的地方遇到了nan of inf的error, 不知道是不是您文中所说的问题导致。 我实现ciou的时候没有读paper,照着博客瞎写的,没有S的限制,也没有停止alpha的梯度。 还是该直接读paper的。

KoapT avatar Oct 22 '20 07:10 KoapT