Thinklab-SJTU / R3Det_Tensorflow

Code for AAAI 2021 paper: R3Det: Refined Single-Stage Detector with Feature Refinement for Rotating Object
Apache License 2.0
540 stars 122 forks source link

训练自己的数据,置信度很低 #95

Closed AITTSMD closed 3 years ago

AITTSMD commented 3 years ago

作者您好,我想用R3Det训练自己的数据集(检测车道线),3000多条数据训练了80多轮后,不管是测试集还是训练集,输出车道线的置信度都特别低(低于0.3),位置也不是很准确。想问下您,是哪里需要调整的吗?谢谢~

AITTSMD commented 3 years ago

老哥,我看了一下中间结果,发现build_refine_loss/positive_anchor/image中框的数量很少,有的样本甚至没有框。这是不是说明refined stage阶段正样本数目太少,导致这部分网络训练不充分,而最终的分类score是refined stage 中cls 子网络给出的。这是不是导致置信度低和框不准的原因?如果是,您有什么建议提高refined stage正样本的数目吗?

yangxue0827 commented 3 years ago

需要你提供的几个数据:

  1. cfgs.py中的SAVE_WEIGHTS_INTE是多少
  2. 你数据量多少?
  3. tensorboard中rpn阶段的positive anchor是否充足,如果很少说明anchor参数设置需要调整。
AITTSMD commented 3 years ago

需要你提供的几个数据:

  1. cfgs.py中的SAVE_WEIGHTS_INTE是多少
  2. 你数据量多少?
  3. tensorboard中rpn阶段的positive anchor是否充足,如果很少说明anchor参数设置需要调整。 您好,回答如下: 1、SAVE_WEIGHTS_INTE为2000,即每隔训练2000次保存一次权重。因为我的数据量是3500,用两个gpu训练,batch_size为2,所以训练2000次认为训练了一轮。 2、数据量3500. 3、rpn阶段的positive anchor在tensorboard中数量很充足,全部包含了gt。我仔细阅读了您的代码。rpn产生的positive anchor结合预测的偏移得到proposal,这部分proposal送到refine阶段再去挖掘positive anchor。可不知道为什么refine阶段的positive anchor很少,是预测偏移的问题吗?感谢。 ps: 即使训练到后期(迭代17w+),tensorboard中refine阶段的positive anchor也很少,漏掉很多gt。
yangxue0827 commented 3 years ago

R3Det只支持bs=1,你设置成2不会报错,不过建议改成1。然后基于retinanet的代码前期收敛比较慢,对于小数据集SAVE_WEIGHTS_INTE设置的大一些比较好,比如的数据集可以设置成1w。

AITTSMD commented 3 years ago

@yangxue0827 感谢回复,我是两个卡,每个卡放一张图。想问下您训练的时候,refine 阶段positive anchor是很多吗?下面两个图是训练15次的中间结果,gt是对的,rpn阶段的positive anchor很多,但refine阶段的positive anchor直接没有了。 11 22

yangxue0827 commented 3 years ago

你可以调整一下refine阶段的采样阈值,估计是采样阈值对于你这种大长宽比目标来说要求太高了。

AITTSMD commented 3 years ago

上面是迭代15万次的结果(刚刚打错了)。您指的的旋转矩形的iou阈值吗?我的数据集是这种车道线,长宽比很大。

AITTSMD commented 3 years ago

rpn阶段采用rotate方式会不会有帮助呢?目前是horizontal方式。

yangxue0827 commented 3 years ago

rotate会比较慢,如果你要使用的话也要调低采样阈值

yangxue0827 commented 3 years ago

车道线检测用检测来做不太合适,用分割合适点。

AITTSMD commented 3 years ago

嗯,对的。我们分割模型已经ready,但是分割模型有车道线粘连的问题(比如我想把导流线中每条线单独定位,用分割模型比较困难)。所以才想试试检测模型。

yangxue0827 commented 3 years ago

主要是长宽比态度,偏一点角度误差就会很大。而且基于anchor-based的方法对于这种目标采样十个问题,只能调低证样本的采样阈值。

AITTSMD commented 3 years ago

好的,感谢指导。之前试过centernet,检测中心点,通过中心点回归宽、高、偏转角度。效果还行,但漏检比较多。

peiwenYe commented 3 years ago

R3Det只支持bs=1,你设置成2不会报错,不过建议改成1。然后基于retinanet的代码前期收敛比较慢,对于小数据集SAVE_WEIGHTS_INTE设置的大一些比较好,比如的数据集可以设置成1w。 作者您好,请问batchsize为什么只支持1呢?望指教。

yangxue0827 commented 3 years ago

因为我的代码就是按照bs=1写的,检测不像分类,bs>1谢谢还是挺麻烦的