使用 Tensorflow 对象检测 API,BoxClassifierLoss/localization_loss 和 Loss/regularization_loss 也为零

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

我现在一直在尝试训练对象检测模型,即“faster_rcnn_resnet152_v1_640x640_coco17_tpu-8”模型。然而,在整个训练过程中,BoxClassifierLoss/localization_loss 或 Loss/regularization_loss 都没有高于零。

其他人有类似的问题吗,或者有人知道解决方案吗? (我认为这就是我的模型至少表现非常非常差的原因)

INFO:tensorflow:{'Loss/BoxClassifierLoss/classification_loss': 0.011540242,
 'Loss/BoxClassifierLoss/localization_loss': 0.0,
 'Loss/RPNLoss/localization_loss': 0.05603733,
 'Loss/RPNLoss/objectness_loss': 0.021345321,
 'Loss/regularization_loss': 0.0,
 'Loss/total_loss': 0.08892289,
 'learning_rate': 0.090500005}
I1105 01:40:26.982768 16300 model_lib_v2.py:705] {'Loss/BoxClassifierLoss/classification_loss': 0.011540242,
 'Loss/BoxClassifierLoss/localization_loss': 0.0,
 'Loss/RPNLoss/localization_loss': 0.05603733,
 'Loss/RPNLoss/objectness_loss': 0.021345321,
 'Loss/regularization_loss': 0.0,
 'Loss/total_loss': 0.08892289,
 'learning_rate': 0.090500005}
deep-learning object-detection tensor loss-function object-detection-api
3个回答
0
投票

“localization_loss”始终保持在 0.0 可能是由于 tfrecords 文件中的错误,或者很可能是 label_map 中的错误。检查您的 label_map 是否与 tfrecords 文件中的类匹配并且格式正确。


0
投票

当你的定位和正则化损失为零时,这意味着生成 tfrecords 文件存在问题。为图像文件创建注释时,您的标签应与标签映射文件一致。

从示例 tf 记录中提取

feature {
    key: "image/object/class/text"
    value {
      bytes_list {
        value: "paragraph"
        value: "paragraph"
        value: "table"
        value: "paragraph"
      }
    }
  }

现在,当您创建 labelmap.pbtxt 时,它应该与上面的值完全匹配

从示例标签映射文件中提取

item {
 name: "paragraph"
 id: 1
     }
item {
 name: "table"
 id: 2
     }

进行此更改后,localization_loss 不应再为零。


0
投票

几分钟前我遇到了同样的问题,并根据你们的建议修复了它。对于其他遇到此问题的人。确保将 x 轴坐标除以图像的宽度,并将 y 轴坐标除以高度。

如何正确格式化和生成 tfrecords 的一个很好的例子

https://github.com/datitran/raccoon_dataset/blob/master/generate_tfrecord.py

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