0

系统信息

  • 您正在使用的模型的顶级目录是什么:research/object_detection
  • 我是否编写了自定义代码(而不是使用 TensorFlow 中提供的股票示例脚本):是的(仅用于 Faster RCNN 的 VGG-16 实现)
  • 操作系统平台和发行版(例如,Linux Ubuntu 16.04):Ubuntu 16.04
  • TensorFlow 版本(使用下面的命令):1.4.0
  • CUDA/cuDNN 版本:8 和 6
  • GPU型号和内存:NVIDIA-1060 6GB

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

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

截图 8

在 GPU 上运行大约 1 秒的时间和在 CPU 中运行大约 20 秒的其他高数字的步骤我使用“top”和“nvidia-smi”交叉验证了它们。为什么它在中间的 CPU 和 GPU 之间切换?当模型和日志被保存时,我可以理解这种转变,但这我不明白为什么。

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

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

截图 9

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

4

1 回答 1

0

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

于 2017-12-15T14:43:01.130 回答