From afb7ec8651d919f9d052a01edd0bc35ec9737de1 Mon Sep 17 00:00:00 2001
From: Ge Zheng <gezheng121@foxmail.com>
Date: Tue, 11 Jun 2019 14:55:24 +0800
Subject: [PATCH] Avoid log(0) in iou_loss, which will lead to Nan. (#733)

* Update losses.py

* Update losses.py
---
 mmdet/core/loss/losses.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/mmdet/core/loss/losses.py b/mmdet/core/loss/losses.py
index 8db7118..388b98f 100644
--- a/mmdet/core/loss/losses.py
+++ b/mmdet/core/loss/losses.py
@@ -214,7 +214,7 @@ def weighted_iou_loss(pred,
         loss = bounded_iou_loss(
             pred[inds], target[inds], beta=beta, eps=eps, reduction='sum')
     else:
-        loss = iou_loss(pred[inds], target[inds], reduction='sum')
+        loss = iou_loss(pred[inds], target[inds], eps=eps, reduction='sum')
     loss = loss[None] / avg_factor
     return loss
 
@@ -248,8 +248,8 @@ def _expand_binary_labels(labels, label_weights, label_channels):
     return bin_labels, bin_label_weights
 
 
-def iou_loss(pred_bboxes, target_bboxes, reduction='mean'):
-    ious = bbox_overlaps(pred_bboxes, target_bboxes, is_aligned=True)
+def iou_loss(pred_bboxes, target_bboxes, eps=1e-6, reduction='mean'):
+    ious = bbox_overlaps(pred_bboxes, target_bboxes, is_aligned=True) + eps
     loss = -ious.log()
 
     reduction_enum = F._Reduction.get_enum(reduction)
-- 
GitLab