Browse Source

fix seg dataset analysis and evaluate bug

jiangjiajun 5 years ago
parent
commit
6f43a30119
4 changed files with 15 additions and 13 deletions
  1. 7 3
      paddlex/__init__.py
  2. 5 7
      paddlex/cv/datasets/analysis.py
  3. 2 2
      paddlex/cv/models/utils/seg_eval.py
  4. 1 1
      setup.py

+ 7 - 3
paddlex/__init__.py

@@ -14,7 +14,7 @@
 
 from __future__ import absolute_import
 
-__version__ = '1.2.3'
+__version__ = '1.2.4'
 
 import os
 if 'FLAGS_eager_delete_tensor_gb' not in os.environ:
@@ -29,9 +29,13 @@ import paddle
 version = paddle.__version__.strip().split('.')
 if version[0] == '1':
     if version[1] != '8':
-        raise Exception('For running paddlex(v{}), Version of paddlepaddle should be greater than 1.8.3'.format(__version__))
+        raise Exception(
+            'For running paddlex(v{}), Version of paddlepaddle should be greater than 1.8.3'.
+            format(__version__))
 elif version[0] == '2':
-    print("[WARNING] You are using paddlepaddle(v{}) which may not compatible with paddlex(v{}), paddlepaddle==1.8.4 is strongly recommended.".format(paddle.__version__, __version__))
+    print(
+        "[WARNING] You are using paddlepaddle(v{}) which may not compatible with paddlex(v{}), paddlepaddle==1.8.4 is strongly recommended.".
+        format(paddle.__version__, __version__))
     paddle.enable_static()
 
 from .utils.utils import get_environ_info

+ 5 - 7
paddlex/cv/datasets/analysis.py

@@ -134,8 +134,7 @@ class Seg:
             self.label_value_list[id] = unique
             self.label_value_num_list[id] = counts
 
-    def _get_clipped_mean_std(self, start, end, clip_min_value,
-                              clip_max_value):
+    def _get_clipped_mean_std(self, start, end, clip_min_value, clip_max_value):
         for id in range(start, end):
             full_path_im, full_path_label = self.file_list[id]
             image, label = Compose.decode_image(full_path_im, full_path_label)
@@ -158,9 +157,9 @@ class Seg:
         self.im_std_list = [[] for i in range(len(self.file_list))]
         self.im_value_list = [[] for i in range(len(self.file_list))]
         self.im_value_num_list = [[] for i in range(len(self.file_list))]
-        self.im_height_list = np.zeros(len(self.file_list), dtype='int32')
-        self.im_width_list = np.zeros(len(self.file_list), dtype='int32')
-        self.im_channel_list = np.zeros(len(self.file_list), dtype='int32')
+        self.im_height_list = np.zeros(len(self.file_list), dtype='int64')
+        self.im_width_list = np.zeros(len(self.file_list), dtype='int64')
+        self.im_channel_list = np.zeros(len(self.file_list), dtype='int64')
         self.label_value_list = [[] for i in range(len(self.file_list))]
         self.label_value_num_list = [[] for i in range(len(self.file_list))]
 
@@ -171,8 +170,7 @@ class Seg:
             start = one_worker_file * i
             end = one_worker_file * (
                 i + 1) if i < num_workers - 1 else len(self.file_list)
-            t = threading.Thread(
-                target=self._get_image_info, args=(start, end))
+            t = threading.Thread(target=self._get_image_info, args=(start, end))
             threads.append(t)
         for t in threads:
             t.start()

+ 2 - 2
paddlex/cv/models/utils/seg_eval.py

@@ -169,8 +169,8 @@ class ConfusionMatrix(object):
                 recall = 0
             else:
                 recall = self.confusion_matrix[c][c] / vij[c]
-            if vji[c] == 0 and vij[c] == 0:
-                f1score = 0
+            if recall + precision <= 1e-06:
+                f1_score = 0
             else:
                 f1score = 2 * precision * recall / (recall + precision)
             f1score_list.append(f1score)

+ 1 - 1
setup.py

@@ -19,7 +19,7 @@ long_description = "PaddlePaddle Entire Process Development Toolkit"
 
 setuptools.setup(
     name="paddlex",
-    version='1.2.3',
+    version='1.2.4',
     author="paddlex",
     author_email="paddlex@baidu.com",
     description=long_description,