From 787833689f59430f5fd71c5ea53fead22c01abb9 Mon Sep 17 00:00:00 2001
From: "Raymond Tunstill (Kirk)" <ray.tunstill@live.co.uk>
Date: Wed, 25 Sep 2019 08:29:42 +0100
Subject: [PATCH] Fixed coco_eval bug where seg length check could be wrong
 (#1376) (#1384)

* Fixed coco_eval bug where seg length check could be wrong (#1376)

* Added check for segm counts field to check if the decode method is present

* Changed classes length check to more general check

* Fixed coco_utils.py to be more robust condition for mask lasbelling

* Added seg length check to ensure two objects exist

* Added type check over len check

* Check for only tuple
---
 mmdet/core/evaluation/coco_utils.py | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/mmdet/core/evaluation/coco_utils.py b/mmdet/core/evaluation/coco_utils.py
index 325d396..f6f5ac0 100644
--- a/mmdet/core/evaluation/coco_utils.py
+++ b/mmdet/core/evaluation/coco_utils.py
@@ -142,7 +142,7 @@ def segm2json(dataset, results):
 
             # segm results
             # some detectors use different score for det and segm
-            if len(seg) == 2:
+            if isinstance(seg, tuple):
                 segms = seg[0][label]
                 mask_score = seg[1][label]
             else:
@@ -153,7 +153,8 @@ def segm2json(dataset, results):
                 data['image_id'] = img_id
                 data['score'] = float(mask_score[i])
                 data['category_id'] = dataset.cat_ids[label]
-                segms[i]['counts'] = segms[i]['counts'].decode()
+                if isinstance(segms[i]['counts'], bytes):
+                    segms[i]['counts'] = segms[i]['counts'].decode()
                 data['segmentation'] = segms[i]
                 segm_json_results.append(data)
     return bbox_json_results, segm_json_results
-- 
GitLab