跑 Faster-RCNN 出现:RuntimeWarning: invalid value encountered in greater_equal 等这样的warning

匿名 (未验证) 提交于 2019-12-02 22:56:40

但是可能会出现这样或者类似的warning:

RuntimeWarning: invalid value encountered in true_divide

RuntimeWarning: invalid value encountered in greater_equal

...

接着可能就会出现loss = nan的情况,且一直不见好转


通过一步步调试和网上搜集,发现可能的原因:

就是这篇博客给出的原因,具体讨论也可以参照rbg大佬github官方issue

由于我们更换了数据集,所以在制作自己的数据集的annotation时候,可能会出现bbox的宽w和高h为0的情况,这样导致在代码中计算偏移的时候,

或者

为负无穷大。

这样求得的rpn_loc和gt_rpn_loc算rpn loss的时候会使得loss = nan


具体做法:尝试修改rpn网络中把anchor转location的地方添加一个限制,即限制

不能太小

参考代码:

     BBOX_XFORM_CLIP = np.log(bbox_min / img_max) # bbox: 16 img_max: 1000      tw = np.maximum(tw, BBOX_XFORM_CLIP)     th = np.maximum(th, BBOX_XFORM_CLIP)

其中bbox_min是预先设置的bbox的最小框宽高,img_max是在crop图片时候保留的最大宽高,也是bbox的最大框宽高。

当然,网上也有方法说降低学习率,比如讲1e-3改成1e-4

或者改RNG_SEED = 3到RNG_SEED = 4


参考:

【1】https://www.jianshu.com/p/1168fe20cc23

【2】https://github.com/rbgirshick/py-faster-rcnn/issues/65

【3】https://github.com/chenyuntc/simple-faster-rcnn-pytorch

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!