dpa*_*don 7 python tensorflow tfrecord object-detection-api
重现的确切命令:
python train.py --logtostderr --train_dir=./models/train --pipeline_config_path=mask_rcnn_inception_v2_coco.config
我正在尝试在我自己的数据集上训练 Mask-RCNN 模型(从在 COCO 上训练的模型进行微调),但是一旦填充了 shuffle 缓冲区,该过程就会终止。
在此之前,nvidia-smi 显示内存使用量约为 10669MB/11175MB,但 GPU 使用率仅为 1%。
我尝试调整以下 train_config 设置:
batch_size: 1
batch_queue_capacity: 10
num_batch_queue_threads: 4
prefetch_queue_capacity: 5
Run Code Online (Sandbox Code Playgroud)
对于 train_input_reader:
num_readers: 1
queue_capacity: 10
min_after_dequeue: 5
Run Code Online (Sandbox Code Playgroud)
我相信我的问题类似于TensorFlow Object Detection API - Out of Memory,但我使用的是 GPU 而不是 CPU。
我正在训练的图像比较大(2048*2048),但是我想避免缩小尺寸,因为要检测的对象非常小。我的训练集包含 400 张图像(在 .tfrecord 文件中)。
有没有办法减少 shuffle 缓冲区的大小,看看这是否减少了内存需求?
INFO:tensorflow:Restoring parameters from ./models/train/model.ckpt-0
INFO:tensorflow:Restoring parameters from ./models/train/model.ckpt-0
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Starting Session.
INFO:tensorflow:Starting Session.
INFO:tensorflow:Saving checkpoint to path ./models/train/model.ckpt
INFO:tensorflow:Saving checkpoint to path ./models/train/model.ckpt
INFO:tensorflow:Starting Queues.
INFO:tensorflow:Starting Queues.
INFO:tensorflow:global_step/sec: 0
INFO:tensorflow:global_step/sec: 0
2018-06-19 12:21:33.487840: I tensorflow/core/kernels/data/shuffle_dataset_op.cc:94] Filling up shuffle buffer (this may take a while): 97 of 2048
2018-06-19 12:21:43.547326: I tensorflow/core/kernels/data/shuffle_dataset_op.cc:94] Filling up shuffle buffer (this may take a while): 231 of 2048
2018-06-19 12:21:53.470634: I tensorflow/core/kernels/data/shuffle_dataset_op.cc:94] Filling up shuffle buffer (this may take a while): 381 of 2048
2018-06-19 12:21:57.030494: I tensorflow/core/kernels/data/shuffle_dataset_op.cc:129] Shuffle buffer filled.
Killed
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以尝试以下步骤:
1.设置batch_size=1(或尝试自己的)
2.更改"default value": optional uint32 shuffle_buffer_size = 11 [default = 256](或尝试自己的)代码在这里
models/research/object_detection/protos/input_reader.proto
Line 40 in ce03903
optional uint32 shuffle_buffer_size = 11 [default = 2048];
Run Code Online (Sandbox Code Playgroud)
原集是:
optional uint32 shuffle_buffer_size = 11 [default = 2048]
Run Code Online (Sandbox Code Playgroud)
默认值是2048,它太大了batch_size=1,应该相应修改,我认为它会消耗大量RAM。
3.重新编译Protobuf库
来自张量流/模型/研究/
protoc object_detection/protos/*.proto --python_out=.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5004 次 |
| 最近记录: |