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

问题描述 投票:0回答:1

System information

* **Linux Ubuntu 16.04**:

* **TensorFlow installed from source**:

* **TensorFlow version 1.12.0**:

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

* **GPU model : 1080Ti**:

Describe the problem

我正在使用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的张量板

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

tensorflow object-detection-api
1个回答
0
投票

你似乎训练了10k步,而不是100k(x10因为批量大小,所以100k例子,但不是100k步)。正如你可以从学习率图中看到的那样,你只通过了5k的热身(正斜率)。我建议你让训练课程继续,直到学习率明显降低,例如完成50k(配置文件中设置的数字)。如果您不想等待那么久/训练集不是那么大,您可以将num_steps中的train_configtotal_steps中的optimizer修改为您想要的数字,例如: 10K。不要忘记相应地修改warmup_steps,例如到total_steps的1/10。我还建议尝试较小的初始学习率,例如0.01,最重要的是 - 给予正则化较小的权重/给予分类和定位更大的权重,因为看起来正则化压倒了你的损失。

© www.soinside.com 2019 - 2024. All rights reserved.