yangxue0827 / FPN_Tensorflow

A Tensorflow implementation of FPN detection framework.
416 stars 150 forks source link

您好,请问训练中途停止是什么原因呢? #45

Open lilmangolil opened 5 years ago

lilmangolil commented 5 years ago

所报错误是ResourceExhaustedError (see above for traceback): OOM when allocating tensor with shape[320992,1962] [[Node: rpn_losses/rpn_minibatch/rpn_find_positive_negative_samples/iou_caculate/Maximum_1 = Maximum[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/gpu:0"](rpn_losses/rpn_minibatch/rpn_find_positive_negative_samples/iou_caculate/split, rpn_losses/rpn_minibatch/rpn_find_positive_negative_samples/iou_caculate/unstack)]] [[Node: gradients/fast_rcnn_roi/Gather_2_grad/Reshape_1/_3699 = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/cpu:0", send_device="/job:localhost/replica:0/task:0/gpu:0", send_device_incarnation=1, tensor_name="edge_19918_gradients/fast_rcnn_roi/Gather_2_grad/Reshape_1", tensor_type=DT_INT64, _device="/job:localhost/replica:0/task:0/cpu:0"]()]] 非常感谢!

yangxue0827 commented 5 years ago

显存不够 @lilmangolil

yangxue0827 commented 5 years ago

正常就应该有四个文件 @lilmangolil

yangxue0827 commented 5 years ago

我提供的应该也是四个文件,可以直接用看效果 @lilmangolil

lilmangolil commented 5 years ago

显存不够 @lilmangolil

您好,我调整了batch size之后训练还是总中断,请问中断过后重新运行train.py是在中断之前的基础上继续训练吗?感谢您的回复Thanks♪(・ω・)ノ

yangxue0827 commented 5 years ago

batch size 只能是1,训练中断后它会找查询是否有保存的模型,有的话导入接着训练,没有的话从头训练。 @lilmangolil

lilmangolil commented 5 years ago

batch size 只能是1,训练中断后它会找查询是否有保存的模型,有的话导入接着训练,没有的话从头训练。 @lilmangolil

感谢您的回复,我降低了例如RPN_MINIBATCH_SIZE、FAST_RCNN_MINIBATCH_SIZE的参数,另外,减少了数据库的图片数,结果发现更频繁的中断,大概迭代2000次就会报错,请问报错之后我继续运行train.py文件,是接着中断之前的继续训练吗?如果是接着中断之前训练的话,在中断后运行train.py文件之后,在tensorboard上面看到的分类显示的image,仍然是中断之前看到的那几张,请问是什么原因呢?望您解答(#^.^#)

yangxue0827 commented 5 years ago

可能你的tfrecord有问题 @lilmangolil

lilmangolil commented 5 years ago

可能你的tfrecord有问题 @lilmangolil

您好,本来我的训练数据库里面有一万多张图,总是出现中断的问题,之后我尝试用一半或者五分之一的数据训练,没有出现中断的情况,可能是数据库出现问题了吧。另外想请问下,如果我想加入hard negative挖掘的策略,或者要控制正负样本的比例的话,请问要在在哪里添加呢?

ethanyhzhang commented 5 years ago

@lilmangolil 我也出现类似问题,请问你发现生成tfrecord哪一步出了什么问题么?

lilmangolil commented 5 years ago

@lilmangolil 我也出现类似问题,请问你发现生成tfrecord哪一步出了什么问题么?

你好,我把原有的数据库选出一半来训练,就没有报错了,我也不太清楚是什么原因。

ethanyhzhang commented 5 years ago

@yangxue0827 实际网络要求的显存不高,因为batchsize设为1了(如果撤掉fast rcnn部分,会更小),但是训练过程中为什么代码占用了接近8G的显存呢?之后就会出现类似lilmangolil所描述的问题

yangxue0827 commented 5 years ago

有如下几个原因会造成显存过大:

  1. 输入图片过大,这也是为什么会在输入图片时约束最短边的边长
  2. anchor的比例和尺度过多导致anchor过多
  3. fpn在rpn不共享参数
  4. rpn阶段的卷积输出通道数,以及第二阶段的全链接数 @lilmangolil @ethanyhzhang
lilmangolil commented 5 years ago

@yangxue0827 实际网络要求的显存不高,因为batchsize设为1了(如果撤掉fast rcnn部分,会更小),但是训练过程中为什么代码占用了接近8G的显存呢?之后就会出现类似lilmangolil所描述的问题

你好,我又用全部的数据库尝试了一遍,发现用resnet101训练会中断,用resnet50训练不会中断

yangxue0827 commented 5 years ago

是OOM的错误的话就是显存不够,可能你的数据中存在长宽比特别大的情况 @lilmangolil

yangxue0827 commented 5 years ago

Recommend improved code: https://github.com/DetectionTeamUCAS/FPN_Tensorflow. @ethanyhzhang

ethanyhzhang commented 5 years ago

thanks! 不知道改进点在哪呢,或者比较多?

yangxue0827 commented 5 years ago

整体的框架还是差不多的,用法也相似,主要是特征融合以及roi分配处重写了。 @ethanyhzhang