diff --git a/mmocr/metrics/hmean_iou_metric.py b/mmocr/metrics/hmean_iou_metric.py index 4a8f6f93..ea95831c 100644 --- a/mmocr/metrics/hmean_iou_metric.py +++ b/mmocr/metrics/hmean_iou_metric.py @@ -171,15 +171,15 @@ class HmeanIOUMetric(BaseMetric): dataset_pred_num[i] += np.sum(~pred_ignore_flags) for i, pred_score_thr in enumerate(self.pred_score_thrs): - precision, recall, hmean = compute_hmean( + recall, precision, hmean = compute_hmean( int(dataset_hit_num[i]), int(dataset_hit_num[i]), int(dataset_gt_num), int(dataset_pred_num[i])) eval_results = dict( precision=precision, recall=recall, hmean=hmean) - logger.info(f'prediction score threshold: {pred_score_thr}, ' - f'recall: {eval_results["recall"]:.3f}, ' - f'precision: {eval_results["precision"]:.3f}, ' - f'hmean: {eval_results["hmean"]:.3f}\n') + logger.info(f'prediction score threshold: {pred_score_thr:.2f}, ' + f'recall: {eval_results["recall"]:.4f}, ' + f'precision: {eval_results["precision"]:.4f}, ' + f'hmean: {eval_results["hmean"]:.4f}\n') if eval_results['hmean'] > best_eval_results['hmean']: best_eval_results = eval_results return best_eval_results diff --git a/tests/test_metrics/test_hmean_iou.py b/tests/test_metrics/test_hmean_iou.py index b2d53d21..75952147 100644 --- a/tests/test_metrics/test_hmean_iou.py +++ b/tests/test_metrics/test_hmean_iou.py @@ -68,9 +68,10 @@ class TestHmeanIOU(unittest.TestCase): pred_data_sample = TextDetDataSample() pred_data_sample.pred_instances = InstanceData() pred_data_sample.pred_instances.polygons = [ + torch.FloatTensor([0, 0, 1, 0, 1, 1, 0, 1]), torch.FloatTensor([0, 0, 1, 0, 1, 1, 0, 1]) ] - pred_data_sample.pred_instances.scores = torch.FloatTensor([0.8]) + pred_data_sample.pred_instances.scores = torch.FloatTensor([1, 0.95]) predictions.append(pred_data_sample.to_dict()) self.predictions = predictions @@ -81,7 +82,7 @@ class TestHmeanIOU(unittest.TestCase): metric.process(self.gt, self.predictions) eval_results = metric.evaluate(size=2) - precision = 3 / 4 + precision = 3 / 5 recall = 3 / 4 hmean = 2 * precision * recall / (precision + recall) target_result = {