|
| 1 | +import tempfile |
1 | 2 | from dataclasses import dataclass |
2 | 3 | from pathlib import Path |
3 | 4 |
|
|
12 | 13 | ) |
13 | 14 | from valor_lite.semantic_segmentation.evaluator import Filter |
14 | 15 | from valor_lite.semantic_segmentation.loader import Loader as CachedLoader |
| 16 | +from valor_lite.semantic_segmentation.metric import Metric, MetricType |
15 | 17 |
|
16 | 18 | """ |
17 | 19 | Usage |
@@ -45,7 +47,7 @@ class Metadata: |
45 | 47 |
|
46 | 48 | class Evaluator(CachedEvaluator): |
47 | 49 | """ |
48 | | - Segmentation Evaluator |
| 50 | + Legacy Segmentation Evaluator |
49 | 51 | """ |
50 | 52 |
|
51 | 53 | @property |
@@ -95,10 +97,36 @@ def create_filter( |
95 | 97 | predictions=None, |
96 | 98 | ) |
97 | 99 |
|
| 100 | + def compute_precision_recall_iou( |
| 101 | + self, filter_: Filter | None = None |
| 102 | + ) -> dict[MetricType, list[Metric]]: |
| 103 | + if filter_ is not None: |
| 104 | + with tempfile.TemporaryDirectory() as tmpdir: |
| 105 | + filtered_evaluator = super().filter( |
| 106 | + directory=tmpdir, |
| 107 | + name="filtered", |
| 108 | + filter_expr=filter_, |
| 109 | + ) |
| 110 | + return filtered_evaluator.compute_precision_recall_iou() |
| 111 | + return super().compute_precision_recall_iou() |
| 112 | + |
| 113 | + def evaluate( |
| 114 | + self, filter_: Filter | None = None |
| 115 | + ) -> dict[MetricType, list[Metric]]: |
| 116 | + """ |
| 117 | + Computes all available metrics. |
| 118 | +
|
| 119 | + Returns |
| 120 | + ------- |
| 121 | + dict[MetricType, list[Metric]] |
| 122 | + Lists of metrics organized by metric type. |
| 123 | + """ |
| 124 | + return self.compute_precision_recall_iou(filter_=filter_) |
| 125 | + |
98 | 126 |
|
99 | 127 | class DataLoader(CachedLoader): |
100 | 128 | """ |
101 | | - Segmentation DataLoader. |
| 129 | + Legacy Segmentation DataLoader. |
102 | 130 | """ |
103 | 131 |
|
104 | 132 | def finalize(self): |
|
0 commit comments