def iou(self, target_bbox, presence, per_timestep=False, reduce=True, start_t=1):
pred_bbox, target_bbox, presence = [i[start_t:] for i in (self.pred_bbox, target_bbox, presence)]
if not per_timestep:
return _loss.intersection_over_union(pred_bbox, target_bbox, presence)
else:
iou = _loss.intersection_over_union(pred_bbox, target_bbox, reduce=False)
iou = tf.where(presence, iou, tf.zeros_like(iou))
iou = tf.reduce_sum(iou, (1, 2))
p = tf.reduce_sum(tf.to_float(presence), (1, 2))
if reduce:
p = tf.maximum(p, tf.ones(tf.shape(presence)[0]))
iou /= p
return iou
else:
return iou, p
评论列表
文章目录