即使分类和本地化损失都接近0,也不会绘制边界框:TensorFlow对象检测API

时间:2019-02-26 21:54:41

标签: tensorflow object-detection-api

系统信息

* **Linux Ubuntu 16.04**:

* **TensorFlow installed from source**:

* **TensorFlow version 1.12.0**:

* **CUDA/cuDNN version : 410.86**:

* **GPU model : 1080Ti**:

描述问题

我正在使用TensorFlow对象检测API训练对象检测算法。

配置文件:https://github.com/tensorflow/models/blob/master/research/object_detection/samples/configs/ssd_resnet50_v1_fpn_shared_box_predictor_640x640_coco14_sync.config

我的配置文件:https://drive.google.com/open?id=1oOqvTyZDWtECWPo_5qYgUsOgZMwAVDlk

型号名称:SSD_resnet50_v1_fpn

使用对象检测API进行约100000个全局步骤的训练模型后,total_loss变为零。 Tensorboard中显示的分类和本地化损失也为零 https://drive.google.com/open?id=1FMEyC2pt5Ud-4CJGzN0HTO55MzrN2mHX

但是对测试图像的评估效果不佳,并绘制了任何边界框。 以下是用于评估的张量板 https://drive.google.com/open?id=1aseVoKWQMjFC2N0X437DnBRIJej3xXYn

我已经多次检查数据的正确性,一切都正确。

1 个答案:

答案 0 :(得分:0)

似乎您训练了10k步,而不是100k步(x10由于批处理大小,所以有100k的示例,但没有100k的步)。 从学习率图上可以看到,您只经过了5k的预热(那里有正斜率)。我建议您要么让培训课程继续进行,直到学习率大大降低,例如完成50k(配置文件中设置的数字)。如果您不想等待那么长时间/训练集不是那么大,则可以将num_steps中的train_configtotal_steps中的optimizer修改为您想要的号码,例如10k。不要忘记相应地修改warmup_steps,例如到total_steps的1/10。我还建议尝试使用较小的初始学习率,例如0.01,最重要的是-赋予正则化较小的权重/赋予分类和局部化更大的权重,因为正则化看起来使您的损失不堪重负。