【Tensorflow object_detection API】使用iou loss训练时出现nan情况

  1. 以SSD来举例,打开"object_detection/meta_architectures/ssd_meta_arch.py", 之后在文档前面加上如下这一行:
from object_detection.core import losses
  1. 替换该文档中损失函数(loss)的如下几行:
if self.groundtruth_has_field(fields.InputDataFields.is_annotated):
  losses_mask = tf.stack(self.groundtruth_lists(
      fields.InputDataFields.is_annotated))

# TODO: start from here to fix the bug!!

if isinstance(self._localization_loss, losses.WeightedIOULocalizationLoss) :
  anchors = self.anchors.get()
  batch_reg_targets, _ = self._batch_decode(batch_reg_targets, anchors)
  predict_decoded, _ = self._batch_decode(prediction_dict['box_encodings'], anchors)
else:
  predict_decoded = prediction_dict['box_encodings']

location_losses = self._localization_loss(
  predict_decoded,
  batch_reg_targets,
  ignore_nan_targets=True,
  weights=batch_reg_weights,
  losses_mask=losses_mask)

参考:tensorflow代码仓问题区解决

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值