-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathvote_models.py
164 lines (138 loc) · 10.7 KB
/
vote_models.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
import numpy as np
import os
from tqdm import tqdm
os.environ[
"CURL_CA_BUNDLE"] = "/etc/ssl/certs/ca-certificates.crt" # A workaround in case this happens: https://github.com/mapbox/rasterio/issues/1289
import rasterio
import utils
output_dir = './results/vote_9_3_8/output/t_deploy'
if not os.path.exists(output_dir):
os.makedirs(output_dir)
# model_sub_dirs = ['./results/clean_60_train_deeplabv3plus/output/ep12_56',
# './results/clean_60_train_fcn/output/ep2_58',
# './results/clean_60_train_fcn/output/ep4_56',
# './results/fcn_both_clean_fcnlabel_conv7/output/ep12_57',
# './results/val_train_fcn/output/ep2_57',
# './results/clean_60_train_fpn/output/ep7_55',
# './results/val_60_separate/output/ep4_54',
# './results/clean_60_train_unet/output/ep12_55'] # 0.6171
# model_sub_dirs = ['./results/clean_60_train_deeplabv3plus/output/ep12_56',
# './results/clean_60_train_fcn/output/ep2_58',
# './results/clean_60_train_fcn/output/ep4_56',
# './results/fcn_both_clean_fcnlabel_conv7/output/ep12_57',
# './results/val_train_fcn/output/ep2_57',
# './results/clean_60_train_fpn/output/ep7_55'] # 0.6131
# model_sub_dirs = ['./results/fcn_both_clean_fcnlabel_conv7/output/imprev_ep1_water_ep1',
# './results/fcn_both_clean_fcnlabel_conv7/output/water_nir_ep3',
# './results/val_train_fcn_ep30/output/ep5',
# './results/fcn_both_clean_fcnlabel_conv7/output/lv_ep1_water_ep1'] # 0.5983
# model_sub_dirs = ['./results/clean_60_train_deeplabv3plus/output/ep12_56',
# './results/clean_60_train_fcn/output/ep2_58',
# './results/clean_60_train_fcn/output/ep4_56',
# './results/fcn_both_clean_fcnlabel_conv7/output/ep12_57',
# './results/val_train_fcn/output/ep2_57',
# './results/clean_60_train_fpn/output/ep7_55',
# './results/val_60_separate/output/ep4_54',
# './results/clean_60_train_unet/output/ep12_55',
# './results/val_train_fcn_ep30/output/ep5',
# './results/fcn_both_clean_fcnlabel_conv7/output/water_nir_ep3']
# model_sub_dirs = ['./results/clean_60_train_deeplabv3_18/output/ep7',
# './results/clean_60_train_linknet_18/output/ep7',
# './results/clean_60_train_pspnet_34/output/ep7',
# './results/clean_60_train_pan_34/output/ep7',
# './results/clean_60_train_fpn/output/ep7',
# './results/clean_60_train_unet/output/ep12_55',
# './results/clean_60_train_deeplabv3plus/output/ep12',
# './results/fcn_both_clean_fcnlabel_conv7/output/ep12_57',
# './results/clean_60_train_unet_plus_plus/output/ep7',
# './results/vote_8/output/add_water_ly_up59_4',
# './results/clean_60_train_fcn/output/ep2_58',]
# model_sub_dirs = ['./results/clean_60_train_deeplabv3_18/output/ep7',
# './results/clean_60_train_linknet_18/output/ep7',
# './results/clean_60_train_pspnet_34/output/ep7',
# './results/clean_60_train_pan_34/output/ep7',
# './results/clean_60_train_fpn/output/ep7',
# './results/clean_60_train_unet/output/ep12_55',
# './results/clean_60_train_deeplabv3plus/output/ep12',
# './results/fcn_both_clean_fcnlabel_conv7/output/ep12_57',
# './results/clean_60_train_unet_plus_plus/output/ep7',
# './results/vote_8/output/add_water_ly_up59_4',
# './results/clean_60_train_fcn/output/ep2_58', ]
# model_sub_dirs = ['/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_deeplabv3plus/output/ep12_after_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/fcn_both_clean_fcnlabel_conv7/output/ep12_after_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_unet_plus_plus/output/ep12_after_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_fcn/output/ep2_after_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_fcn/output/ep4_after_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_unet/output/ep16_after_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_fpn/output/ep7_after_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/val_train_fcn/output/ep2_after_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/val_60_separate/output/ep4_54_56ed', ] # 0.6219
# model_sub_dirs = ['/root/DFC2021/dfc2021-msd-baseline/results/val_62_train_fcn/output/ep4_after_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/vote_9_3_6/vote_models_8_ed_13_ed_3_ed_add_water_clean',
# '/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_pan_34/output/ep7',
# '/root/DFC2021/dfc2021-msd-baseline/results/fcn_both_clean_fcnlabel_conv7/output/water_nir_ep1',
# '/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_deeplabv3plus/output/ep12_after_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_unet/output/ep16_after_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/fcn_both_clean_fcnlabel_conv7/output/ep12_after_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/val_60_separate/output/ep4_54_56ed'] #
# model_sub_dirs = ['/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_unet_deploy/output/ep10_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_fpn_deploy/output/ep7_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_deeplabv3plus_deploy/output/ep12_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_fcn_deploy/output/ep4_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_linknet_18_deploy/output/ep7_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_pspnet_deploy/output/ep7_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_unet_plus_plus_deploy/output/ep7_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_pan_deploy/output/ep7_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/val_62_train_fcn/output/ep4_after_56ed', ] #
# model_sub_dirs = ['/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_deeplabv3plus/output/ep12_after_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_pan_34/output/ep7_after_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_unet/output/ep16_after_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/fcn_both_clean_fcnlabel_conv7/output/ep12_after_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/val_60_separate/output/ep4_54_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/val_62_train_fcn/output/ep4_after_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_pspnet_deploy/output/ep7_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_linknet_18_deploy/output/ep7_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_unet_plus_plus_deploy/output/ep7_56ed'] #
# model_sub_dirs = ['/root/DFC2021/dfc2021-msd-baseline/results/val_62_train_fcn/output/ep4_after_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_fpn_deploy/output/ep7_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_unet_deploy/output/ep10_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_deeplabv3_18/output/ep7_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/val_60_separate/output/ep4_54_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/val_62_train_fcn/output/ep4_after_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_linknet_18/output/ep7_after_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_deeplabv3_18/output/ep7_56ed',
# '/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_pspnet_deploy/output/ep7_56ed']
model_sub_dirs = ['/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_deeplabv3_18_deploy/output/t_ep7',
'/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_deeplabv3plus_deploy/output/t_ep12',
'/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_fcn_deploy/output/t_ep4',
'/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_fpn_deploy/output/t_ep7',
'/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_linknet_18_deploy/output/t_ep7',
'/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_pan_deploy/output/t_ep7',
'/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_pspnet_deploy/output/t_ep7',
'/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_unet_deploy/output/t_ep10',
'/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_unet_plus_plus_deploy/output/t_ep7', ]
prediction_names = os.listdir(
'/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_deeplabv3_18_deploy/output/t_ep7')
eye = np.eye(17, dtype=np.uint8)
for name in tqdm(prediction_names):
info = rasterio.open(
os.path.join('/root/DFC2021/dfc2021-msd-baseline/results/clean_60_train_deeplabv3_18_deploy/output/t_ep7',
name))
input_width, input_height = info.width, info.height
input_profile = info.profile.copy()
tmp = np.zeros((input_height, input_width, 17), dtype=np.uint8)
for model_sub in model_sub_dirs:
img_path = os.path.join(model_sub, name)
data = rasterio.open(img_path).read(1)
one_hot = eye[data]
tmp += one_hot
target = tmp.argmax(axis=2).astype(np.uint8)
output_profile = input_profile.copy()
output_profile["driver"] = "GTiff"
output_profile["dtype"] = "uint8"
output_profile["count"] = 1
output_profile["nodata"] = 0
output_fn = os.path.join(output_dir, name)
with rasterio.open(output_fn, "w", **output_profile) as f:
f.write(target, 1)
f.write_colormap(1, utils.NLCD_IDX_COLORMAP)