6
6
7
7
from metrics import cal_sod_matrics
8
8
from utils .generate_info import get_datasets_info , get_methods_info
9
- from utils .misc import make_dir
10
- from utils .recorders import METRIC_MAPPING
9
+ from utils .recorders import SUPPORTED_METRICS
11
10
12
11
13
12
def get_args ():
14
13
parser = argparse .ArgumentParser (
15
14
description = textwrap .dedent (
16
15
r"""
17
- INCLUDE:
16
+ A Powerful Evaluation Toolkit based on PySODMetrics.
17
+
18
+ INCLUDE: More metrics can be set in `utils/recorders/metric_recorder.py`
18
19
19
20
- F-measure-Threshold Curve
20
21
- Precision-Recall Curve
21
22
- MAE
22
23
- weighted F-measure
23
24
- S-measure
24
- - max/average/adaptive F-measure
25
- - max/average/adaptive E-measure
26
- - max/average Precision
27
- - max/average Sensitivity
28
- - max/average Specificity
29
- - max/average F-measure
30
- - max/average Dice
31
- - max/average IoU
25
+ - max/average/adaptive/binary F-measure
26
+ - max/average/adaptive/binary E-measure
27
+ - max/average/adaptive/binary Precision
28
+ - max/average/adaptive/binary Recall
29
+ - max/average/adaptive/binary Sensitivity
30
+ - max/average/adaptive/binary Specificity
31
+ - max/average/adaptive/binary F-measure
32
+ - max/average/adaptive/binary Dice
33
+ - max/average/adaptive/binary IoU
32
34
33
35
NOTE:
34
36
@@ -37,11 +39,27 @@ def get_args():
37
39
38
40
EXAMPLES:
39
41
40
- python eval_all.py \
41
- --dataset-json configs/datasets/json/rgbd_sod.json \
42
- --method-json configs/methods/json/rgbd_other_methods.json configs/methods/json/rgbd_our_method.json --metric-npy output/rgbd_metrics.npy \
42
+ python eval_image.py \
43
+ --dataset-json configs/datasets/rgbd_sod.json \
44
+ --method-json \
45
+ configs/methods/json/rgbd_other_methods.json \
46
+ configs/methods/json/rgbd_our_method.json \
47
+ --metric-names sm wfm mae fmeasure em \
48
+ --num-bits 4 \
49
+ --num-workers 4 \
50
+ --metric-npy output/rgbd_metrics.npy \
43
51
--curves-npy output/rgbd_curves.npy \
44
- --record-tex output/rgbd_results.txt
52
+ --record-txt output/rgbd_results.txt
53
+ --to-overwrite \
54
+ --record-xlsx output/test-metric.xlsx \
55
+ --include-dataset \
56
+ dataset-name1-from-dataset-json \
57
+ dataset-name2-from-dataset-json \
58
+ dataset-name3-from-dataset-json
59
+ --include-methods \
60
+ method-name1-from-method-json \
61
+ method-name2-from-method-json \
62
+ method-name3-from-method-json
45
63
"""
46
64
),
47
65
formatter_class = argparse .RawTextHelpFormatter ,
@@ -95,20 +113,16 @@ def get_args():
95
113
"--metric-names" ,
96
114
type = str ,
97
115
nargs = "+" ,
98
- default = ["mae" , "fm " , "em" , "sm" , "wfm" ],
99
- choices = METRIC_MAPPING . keys () ,
116
+ default = ["mae" , "fmeasure" , "precision" , "recall " , "em" , "sm" , "wfm" ],
117
+ choices = SUPPORTED_METRICS ,
100
118
help = "Names of metrics" ,
101
119
)
102
120
args = parser .parse_args ()
103
121
104
- if args .metric_npy is not None :
105
- make_dir (os .path .dirname (args .metric_npy ))
106
- if args .curves_npy is not None :
107
- make_dir (os .path .dirname (args .curves_npy ))
108
- if args .record_txt is not None :
109
- make_dir (os .path .dirname (args .record_txt ))
110
- if args .record_xlsx is not None :
111
- make_dir (os .path .dirname (args .record_xlsx ))
122
+ os .makedirs (os .path .dirname (args .metric_npy ), exist_ok = True )
123
+ os .makedirs (os .path .dirname (args .curves_npy ), exist_ok = True )
124
+ os .makedirs (os .path .dirname (args .record_txt ), exist_ok = True )
125
+ os .makedirs (os .path .dirname (args .record_xlsx ), exist_ok = True )
112
126
if args .to_overwrite and not args .record_txt :
113
127
warnings .warn ("--to-overwrite only works with a valid --record-txt" )
114
128
return args
@@ -132,7 +146,7 @@ def main():
132
146
)
133
147
134
148
# 确保多进程在windows上也可以正常使用
135
- cal_sod_matrics .cal_sod_matrics (
149
+ cal_sod_matrics .cal_image_matrics (
136
150
sheet_name = "Results" ,
137
151
to_append = not args .to_overwrite ,
138
152
txt_path = args .record_txt ,
@@ -143,7 +157,6 @@ def main():
143
157
metrics_npy_path = args .metric_npy ,
144
158
num_bits = args .num_bits ,
145
159
num_workers = args .num_workers ,
146
- use_mp = False ,
147
160
metric_names = args .metric_names ,
148
161
ncols_tqdm = 119 ,
149
162
)
0 commit comments