物体检测训练变得越来越慢。随着培训的进行,使用的CPU比GPU多;

时间:2017-12-14 06:39:54

标签: tensorflow object-detection object-detection-api

系统信息

  • 您正在使用的模型的顶级目录是什么:research / object_detection
  • 我是否编写过自定义代码(与使用TensorFlow中提供的库存示例脚本相反):是(只是VGG-16实施更快的RCNN)
  • OS平台和发行版(例如,Linux Ubuntu 16.04):Ubuntu 16.04
  • TensorFlow版本(使用下面的命令):1.4.0
  • CUDA / cuDNN版本:8和6
  • GPU型号和内存:NVIDIA-1060 6GB

我正在尝试使用API​​在我的自定义数据集上使用VGG-16作为特征提取器(paper))训练更快的RCNN。

训练参数与文章中描述的相同,除了,我只运行15k步骤并将图像大小调整为1200x1200,批量大小= 1。 训练运行良好但随着时间的推移训练变得更慢。它正在CPU和GPU之间转换。

screenshot 8

在GPU上运行大约1秒的时间以及在CPU中运行的其他高数字(如〜20secs)的步骤我使用' top'和&nvidia-smi'为什么它在中间的CPU和GPU之间转换?我可以理解模型和日志被保存时的转变,但我不明白为什么。

PS:我正在运行只有火车脚本。我没有运行eval脚本

更新: 随着时间的推移会变得更糟 秒/步增加,从而影响检查点和日志存储的速率

screenshot 9

它应该小于1秒/步,因为这是我开始训练前2k步的速度。我的数据集非常小(300张图片用于培训)。

1 个答案:

答案 0 :(得分:0)

根据我的经验,输入图像的大小可能太大。当您在训练期间查看张量板时,您会发现所有重塑计算都在GPU上运行。因此,也许您可​​以编写一个python脚本来调整输入图像的大小而不改变宽高比,同时您可以将批量大小(可能是4或8)设置得更高一些。然后你可以更快地训练你的数据集,也可以获得相对好的结果(mAP)