我正在使用Tensorflow Object Detection API来训练我自己的物体探测器。我从模型动物园(here)下载了faster_rcnn_inception_v2_coco_2018_01_28
,并创建了我自己的数据集(train.record(~221Mo),test.record和标签贴图)来微调它。
但是当我运行它时:
python train.py --logtostderr --pipeline_config_path=/home/username/Documents/Object_Detection/training/faster_rcnn_inception_v2_coco_2018_01_28/pipeline.config --train_dir=/home/username/Documents/Object_Detection/training/
该过程在填充shuffle缓冲区操作期间被杀死,看起来像一个OOM问题(16Go RAM)......
2018-06-07 12:02:51.107021: I tensorflow/core/kernels/data/shuffle_dataset_op.cc:94] Filling up shuffle buffer (this may take a while): 410 of 2048
Process stopped
是否存在减少shuffle缓冲区大小的方法?它的大小有什么影响?
然后,我添加了一些交换(115Go交换+ 16Go RAM)和填充shuffle缓冲区操作完成,但我的训练占用了所有的RAM并在步骤4后交换,而我的train.record只是大约221 Mo!
我已经将这些行添加到我的pipeline.config> train_config:
batch_size: 1
batch_queue_capacity: 10
num_batch_queue_threads: 8
prefetch_queue_capacity: 9
和这些到我的pipeline.config> train_input_reader:
queue_capacity: 2
min_after_dequeue: 1
num_readers: 1
关注post。
我知道我的图像非常(非常非常)大:每个25Mo,但因为我只拍了9张图像来制作我的train.record(只是为了测试我的安装是否顺利),它不应该是这样的内存消耗权?
关于它为什么使用这么多RAM的任何其他想法?
(顺便说一句,我只使用CPU)
答案 0 :(得分:2)
图像数量不是问题。问题是您输入的图像分辨率(在您的设置.config文件中)。您需要在此处更改高度和宽度值(与.config文件类似):
image_resizer {
# TODO(shlens): Only fixed_shape_resizer is currently supported for NASNet
# featurization. The reason for this is that nasnet.py only supports
# inputs with fully known shapes. We need to update nasnet.py to handle
# shapes not known at compile time.
fixed_shape_resizer {
height: 1200
width: 1200
}
}
设置为较小的宽度和高度值,您将可以完美地训练。