|
a |
|
b/src/ensemble.py |
|
|
1 |
import os |
|
|
2 |
import pandas as pd |
|
|
3 |
import numpy as np |
|
|
4 |
from dataset import LABEL_COLS |
|
|
5 |
|
|
|
6 |
|
|
|
7 |
if __name__ == '__main__': |
|
|
8 |
target_cols = LABEL_COLS |
|
|
9 |
test_csv = "./csv/patient2_kfold/test.csv" |
|
|
10 |
pred_paths = [ |
|
|
11 |
'/logs/prediction/densenet169-mw-512-resume-0/test_0_ckp_tta.npy', |
|
|
12 |
'/logs/prediction/densenet169-mw-512-resume-1/test_1_ckp_tta.npy', |
|
|
13 |
'/logs/prediction/densenet169-mw-512-resume-2/test_2_ckp_tta.npy', |
|
|
14 |
"/logs/prediction/densenet169-mw-512-resume-3/test_3_ckp_tta.npy", |
|
|
15 |
"/logs/prediction/densenet169-mw-512-resume-4/test_4_ckp_tta.npy" |
|
|
16 |
# '/logs/predictions/se_resnext50_32x4d-mw-512-recheck-0/test_0.npy', |
|
|
17 |
] |
|
|
18 |
|
|
|
19 |
test_preds = 0 |
|
|
20 |
for pred in pred_paths: |
|
|
21 |
test_preds += np.load(pred) |
|
|
22 |
|
|
|
23 |
test_preds = test_preds / len(pred_paths) |
|
|
24 |
|
|
|
25 |
test_df = pd.read_csv(test_csv) |
|
|
26 |
test_df["sop_instance_uid"] = "ID_" + test_df["sop_instance_uid"] |
|
|
27 |
test_ids = test_df['sop_instance_uid'].values |
|
|
28 |
|
|
|
29 |
ids = [] |
|
|
30 |
labels = [] |
|
|
31 |
for i, id in enumerate(test_ids): |
|
|
32 |
pred = test_preds[i] |
|
|
33 |
for j, target in enumerate(target_cols): |
|
|
34 |
id_target = id + "_" + target |
|
|
35 |
ids.append(id_target) |
|
|
36 |
labels.append(pred[j]) |
|
|
37 |
# if not with_any: |
|
|
38 |
# id_target = id + "_" + "any" |
|
|
39 |
# ids.append(id_target) |
|
|
40 |
# labels.append(pred.max()) |
|
|
41 |
|
|
|
42 |
submission_df = pd.DataFrame({ |
|
|
43 |
'ID': ids, |
|
|
44 |
'Label': labels |
|
|
45 |
}) |
|
|
46 |
|
|
|
47 |
os.makedirs(f"/logs/prediction/ensemble/", exist_ok=True) |
|
|
48 |
|
|
|
49 |
submission_df.to_csv(f"/logs/prediction/ensemble/densenet169-mww-512-5folds_tta.csv", index=False) |