选择tensorflow物体检测API的训练超参数

8

我正在基于最近发布的tensorflow对象检测API建立对象检测管道。 我使用arXiv作为指南。 我希望了解以下内容,以便在自己的数据集上进行训练。

  1. 他们是如何选择学习率计划的并且这将如何根据可供训练的GPU数量而改变尚不清楚。 如何根据可用于训练的GPU数量更改训练速率时间表? 该论文提到使用了9个GPU。 如果我只想使用1个GPU,应该如何更改培训速率?

  2. 针对Pascal VOC使用Faster R-CNN的发布示例培训配置文件中的初始学习率= 0.0001。 这比原始的Faster-RCNN论文中发布的低10倍。 这是由于假定可用于训练的GPU数量还是由于其他原因导致的?

  3. 当我从COCO检测检查点开始训练时,培训损失应该如何下降? 查看tensorboard时,使用batch size为1时,我的数据集上的培训损失很低-每次迭代在0.8到1.2之间。 下图显示了来自tensorboard的各种损失情况。 这是预期行为吗?
    Training loss- Faster RCNN

1个回答

10
针对问题1和2:我们的实现与原始论文有一些细微差别,并且我们内部使用约10个GPU的异步SGD来训练所有检测器。我们的学习率是根据这个设置进行校准的(如果您像宠物漫步一样决定通过Cloud ML Engine进行培训,则也将拥有此设置)。如果您使用其他设置,则需要进行一些超参数探索。对于单个GPU,保持学习率不变可能不会影响性能,但您可以通过增加它来获得更快的收敛速度。
针对问题3:训练损失会出现不规则下降,并且只有在您随着时间平滑地画出图表后才能看到下降趋势。此外,仅从训练损失来判断模型性能如何,很难明确说明您的评估指标做得如何。我建议查看mAP随时间变化的图表以及图像可视化结果,以真正了解您的模型是否“起飞”。
希望这有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接