我现在一直在尝试训练对象检测模型,即“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}
“localization_loss”始终保持在 0.0 可能是由于 tfrecords 文件中的错误,或者很可能是 label_map 中的错误。检查您的 label_map 是否与 tfrecords 文件中的类匹配并且格式正确。
当你的定位和正则化损失为零时,这意味着生成 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 不应再为零。
几分钟前我遇到了同样的问题,并根据你们的建议修复了它。对于其他遇到此问题的人。确保将 x 轴坐标除以图像的宽度,并将 y 轴坐标除以高度。
如何正确格式化和生成 tfrecords 的一个很好的例子
https://github.com/datitran/raccoon_dataset/blob/master/generate_tfrecord.py