为什么loss一直震荡 难以收敛
BatchSize: 12 base lr: 1e-5 epoch: 40
best result: AP: 0.8621 MR: 0.5121 JI: 0.7651 epoch: 18
不管我怎么更改lr, loss都会震荡, 例如, 从2.6->1.8->2.4 不知道是不是CrowdHuman数据集的问题, 请问您训练过程中有这样的情况吗 谢谢
我跑了他的代码 我的loss也有震荡的 因为他是每个GPU上的loss都print了一下 最后结果和readme差不多 或许跟你的batch size有什么关系?它最后的lr我记得是根据bs和卡数来算的 你看下能不能最后对上0.02的lr ps 一直想问下作者,该实现和mmdet上faster rcnn的实现除了以下几点还有别的区别吗:
- RPN是all level NMS
- RPN的anchor不考虑ignore region
- RCNN的roi考虑ignore region 感觉42.4的MR好高啊 一直跑不出来...orz
我跑了他的代码 我的loss也有震荡的 因为他是每个GPU上的loss都print了一下 最后结果和readme差不多 或许跟你的batch size有什么关系?它最后的lr我记得是根据bs和卡数来算的 你看下能不能最后对上0.02的lr ps 一直想问下作者,该实现和mmdet上faster rcnn的实现除了以下几点还有别的区别吗:
- RPN是all level NMS
- RPN的anchor不考虑ignore region
- RCNN的roi考虑ignore region 感觉42.4的MR好高啊 一直跑不出来...orz
谢谢 我再试试
我跑了他的代码 我的loss也有震荡的 因为他是每个GPU上的loss都print了一下 最后结果和readme差不多 或许跟你的batch size有什么关系?它最后的lr我记得是根据bs和卡数来算的 你看下能不能最后对上0.02的lr ps 一直想问下作者,该实现和mmdet上faster rcnn的实现除了以下几点还有别的区别吗:
- RPN是all level NMS
- RPN的anchor不考虑ignore region
- RCNN的roi考虑ignore region 感觉42.4的MR好高啊 一直跑不出来...orz
这三个是关键影响点数的区别,别的大小差异应该没啥影响点数的了。
我跑了他的代码 我的loss也有震荡的 因为他是每个GPU上的loss都print了一下 最后结果和readme差不多 或许跟你的batch size有什么关系?它最后的lr我记得是根据bs和卡数来算的 你看下能不能最后对上0.02的lr ps 一直想问下作者,该实现和mmdet上faster rcnn的实现除了以下几点还有别的区别吗:
- RPN是all level NMS
- RPN的anchor不考虑ignore region
- RCNN的roi考虑ignore region 感觉42.4的MR好高啊 一直跑不出来...orz
谢谢 我再试试
显示的loss小范围震荡是正常的,大的跨度上应该是稳定下降的。
我跑了他的代码 我的loss也有震荡的 因为他是每个GPU上的loss都print了一下 最后结果和readme差不多 或许跟你的batch size有什么关系?它最后的lr我记得是根据bs和卡数来算的 你看下能不能最后对上0.02的lr ps 一直想问下作者,该实现和mmdet上faster rcnn的实现除了以下几点还有别的区别吗:
- RPN是all level NMS
- RPN的anchor不考虑ignore region
- RCNN的roi考虑ignore region 感觉42.4的MR好高啊 一直跑不出来...orz
这三个是关键影响点数的区别,别的大小差异应该没啥影响点数的了。
好的 谢谢 那我再试试 我最高只到过44.x 而且会牺牲AP的数值🤣
batch size应该是0.00125*12=0.015
我跑了他的代码 我的loss也有震荡的 因为他是每个GPU上的loss都print了一下 最后结果和readme差不多 或许跟你的batch size有什么关系?它最后的lr我记得是根据bs和卡数来算的 你看下能不能最后对上0.02的lr ps 一直想问下作者,该实现和mmdet上faster rcnn的实现除了以下几点还有别的区别吗:
- RPN是all level NMS
- RPN的anchor不考虑ignore region
- RCNN的roi考虑ignore region 感觉42.4的MR好高啊 一直跑不出来...orz
请问你AP和JI能跑出paper里的结果吗,我用paddledet复现的faster r-cnn AP能到87.0,但JI(78.4)和MR(44.5)都差了1到2个点,
我已经注意到了MR相关的问题,该版本相对于megengine开源版本点数较低。似乎由一个非常坑爹的bug/feature导致,我会在一到两天内解决。
我跑了他的代码 我的loss也有震荡的 因为他是每个GPU上的loss都print了一下 最后结果和readme差不多 或许跟你的batch size有什么关系?它最后的lr我记得是根据bs和卡数来算的 你看下能不能最后对上0.02的lr ps 一直想问下作者,该实现和mmdet上faster rcnn的实现除了以下几点还有别的区别吗:
- RPN是all level NMS
- RPN的anchor不考虑ignore region
- RCNN的roi考虑ignore region 感觉42.4的MR好高啊 一直跑不出来...orz
请问你AP和JI能跑出paper里的结果吗,我用paddledet复现的faster r-cnn AP能到87.0,但JI(78.4)和MR(44.5)都差了1到2个点,
我MR也最高到44.几,但是之前我对齐的时候发现RCNN阶段如果考虑ignore区域会经常存在roi凑不满512个(因为考虑到ignore,可能bg挑出来后不能当做bg),但是我看crowddet存在的情况比较少,但是具体哪里导致这个问题我还是没有找到...
MR相关感觉没问题了,修改fpn_anchor_target,py和learning rate decay即可。
没碰到过。。
那请问 你的图片数据是怎么存放的呢?是解压在一个文件夹里么? 这个repo的代码训练一直有问题,不知道是配置的问题....
那请问 你的图片数据是怎么存放的呢?是解压在一个文件夹里么? 这个repo的代码训练一直有问题,不知道是配置的问题....
你说的有问题指的具体是什么问题呢? 图片数据都解压到一个文件夹就可以了。
我使用的是Crowddet的数据集,train和val的图片是在一个文件夹里的 训练时 常常出现loss为inf 或 RuntimeError: CUDA error: device-side assert triggered 的错误 请问可以解答一下吗
我使用的是Crowddet的数据集,train和val的图片是在一个文件夹里的 训练时 常常出现loss为inf 或 RuntimeError: CUDA error: device-side assert triggered 的错误 请问可以解答一下吗 loss为inf我在8卡上跑的时候很少碰到,实在多了可以调一下learning rate。 RuntimeError: CUDA error 没有碰到过。
你好谢谢你的解答。我定位到的问题是
Assertion index >= -sizes[i] && index < sizes[i] && "index out of bounds" failed.
但不明白是不是数据集加载过程中出现了问题。
你好谢谢你的解答。我定位到的问题是 Assertion
index >= -sizes[i] && index < sizes[i] && "index out of bounds"failed. 但不明白是不是数据集加载过程中出现了问题。
这个assertion并不发生在我的代码内部,我也说不准是什么原因,具体位置你得自行定位排查了。
MR相关感觉没问题了,修改fpn_anchor_target,py和learning rate decay即可。
看起来fpn_anchor_target的修改是为了在一个gt匹配到多个anchor且IOU一样大时能有一个随机性而不是每次固定样本,对吗?但是这种case实际的时候会发生吗?IOU什么情况下会一样大?感觉只有gt匹配的gt的时候才会严格一样
MR相关感觉没问题了,修改fpn_anchor_target,py和learning rate decay即可。
看起来fpn_anchor_target的修改是为了在一个gt匹配到多个anchor且IOU一样大时能有一个随机性而不是每次固定样本,对吗?但是这种case实际的时候会发生吗?IOU什么情况下会一样大?感觉只有gt匹配的gt的时候才会严格一样
是的,为了避免每次训练都选择固定方位的anchor。gt和anchor进行匹配的时候,很可能出现anchor从gt一条边上边扫过去,iou是相等的这种情况。
我跑了他的代码 我的loss也有震荡的 因为他是每个GPU上的loss都print了一下 最后结果和readme差不多 或许跟你的batch size有什么关系?它最后的lr我记得是根据bs和卡数来算的 你看下能不能最后对上0.02的lr ps 一直想问下作者,该实现和mmdet上faster rcnn的实现除了以下几点还有别的区别吗:
- RPN是all level NMS
- RPN的anchor不考虑ignore region
- RCNN的roi考虑ignore region 感觉42.4的MR好高啊 一直跑不出来...orz
请问你AP和JI能跑出paper里的结果吗,我用paddledet复现的faster r-cnn AP能到87.0,但JI(78.4)和MR(44.5)都差了1到2个点,
我MR也最高到44.几,但是之前我对齐的时候发现RCNN阶段如果考虑ignore区域会经常存在roi凑不满512个(因为考虑到ignore,可能bg挑出来后不能当做bg),但是我看crowddet存在的情况比较少,但是具体哪里导致这个问题我还是没有找到...
你好,想和你交流mmdet上融入该算法的问题,根据你说的差异的这三点,对于第一点和第二点,麻烦问一下具体代码体现在哪里
@hanyanLWD 第一点只需要改config就可以了 https://github.com/open-mmlab/mmdetection/blob/11b1ef830aa7c8c054d8b5346fe0966e643d473c/configs/base/models/faster_rcnn_r50_fpn.py#L75 把nms_across_levels改成True 第二点的话不用管的 只要把不ignore的gt拿去算label就可以了
@zehuichen123 谢谢,我把emd部分移植到了mmdet faster rcnn中,但是map的结果很差,但是loss正常下降,不知道是什么原因
@hanyanLWD 如果很差的话应该是哪里写错了 我在simpledet上复现了一下emd 虽然baseline没达到这个repo上的点 但是最后加上emd涨点的幅度跟这篇差不多= =
@zehuichen123 在我的数据集中密集物体是比较少的,对于只有一个gt的图片,我是在gt中额外生成了一个gt=[0,0,0,0,-1],就是说这个假的gt框是全零,label是-1 ,这样做法对吗
额 那得看mmdet是怎么计算cls和reg loss的 你可以写一个demo调用一下它的cls 和 reg loss看看你这个label是不是不算[0,0,0,0,-1]的loss了
File "/home/liangminghao.srtp2020/anaconda3/envs/fasterRCNN/lib/python3.7/site-packages/torch/autograd/grad_mode.py", line 15, in decorate_context
return func(*args, **kwargs)
File "../lib/det_oprs/find_top_rpn_proposals.py", line 31, in find_top_rpn_proposals
offsets = rpn_bbox_offsets_list[l][bid]
IndexError: index 1 is out of bounds for dimension 0 with size 1
File "../lib/det_oprs/find_top_rpn_proposals.py", line 52, in find_top_rpn_proposals batch_proposals, box_min_size * im_info[bid, 2]) File "../lib/det_oprs/bbox_opr.py", line 8, in filter_boxes_opr keep = (ws >= min_size) * (hs >= min_size) File "/home/liangminghao.srtp2020/anaconda3/envs/fasterRCNN/lib/python3.7/site-packages/torch/tensor.py", line 28, in wrapped return f(*args, **kwargs) RuntimeError: CUDA error: an illegal memory access was encountered
File "../lib/det_oprs/fpn_anchor_target.py", line 76, in fpn_anchor_target boxes[bid], im_info[bid], anchors_perlvl) File "../lib/det_oprs/fpn_anchor_target.py", line 32, in fpn_anchor_target_opr_core_impl valid_gt_boxes = gt_boxes[:int(im_info[5]), :] RuntimeError: CUDA error: misaligned address
你好,我们在用visdrone的数据集训练,训练环境是2080四卡,连一个完整的epoch都跑不了
File "/home/liangminghao.srtp2020/anaconda3/envs/fasterRCNN/lib/python3.7/site-packages/torch/autograd/grad_mode.py", line 15, in decorate_context return func(*args, **kwargs) File "../lib/det_oprs/find_top_rpn_proposals.py", line 31, in find_top_rpn_proposals offsets = rpn_bbox_offsets_list[l][bid] IndexError: index 1 is out of bounds for dimension 0 with size 1
File "../lib/det_oprs/find_top_rpn_proposals.py", line 52, in find_top_rpn_proposals batch_proposals, box_min_size * im_info[bid, 2]) File "../lib/det_oprs/bbox_opr.py", line 8, in filter_boxes_opr keep = (ws >= min_size) * (hs >= min_size) File "/home/liangminghao.srtp2020/anaconda3/envs/fasterRCNN/lib/python3.7/site-packages/torch/tensor.py", line 28, in wrapped return f(*args, **kwargs) RuntimeError: CUDA error: an illegal memory access was encountered
File "../lib/det_oprs/fpn_anchor_target.py", line 76, in fpn_anchor_target boxes[bid], im_info[bid], anchors_perlvl) File "../lib/det_oprs/fpn_anchor_target.py", line 32, in fpn_anchor_target_opr_core_impl valid_gt_boxes = gt_boxes[:int(im_info[5]), :] RuntimeError: CUDA error: misaligned address
你好,我们在用visdrone的数据集训练,训练环境是2080四卡,连一个完整的epoch都跑不了
试试减小batch size或者减小input的大小。
@hanyanLWD Hi, I'm trying to remodel the EMD part on mmdet, but several problems happened. Could you like to share your model on mmdet with me?
我跑了他的代码 我的loss也有震荡的 因为他是每个GPU上的loss都print了一下 最后结果和readme差不多 或许跟你的batch size有什么关系?它最后的lr我记得是根据bs和卡数来算的 你看下能不能最后对上0.02的lr ps 一直想问下作者,该实现和mmdet上faster rcnn的实现除了以下几点还有别的区别吗:
- RPN是all level NMS
- RPN的anchor不考虑ignore region
- RCNN的roi考虑ignore region 感觉42.4的MR好高啊 一直跑不出来...orz
请问你AP和JI能跑出paper里的结果吗,我用paddledet复现的faster r-cnn AP能到87.0,但JI(78.4)和MR(44.5)都差了1到2个点,
我MR也最高到44.几,但是之前我对齐的时候发现RCNN阶段如果考虑ignore区域会经常存在roi凑不满512个(因为考虑到ignore,可能bg挑出来后不能当做bg),但是我看crowddet存在的情况比较少,但是具体哪里导致这个问题我还是没有找到...
请问,现在你和readme对齐了吗?MR部分我仍然还没对齐