forked from ciupava/testingML
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathevaluate.py
57 lines (44 loc) · 1.53 KB
/
evaluate.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
"""
"""
# Built-in
import os
# Libs
import albumentations as A
from albumentations.pytorch import ToTensorV2
# Own modules
from mrs_utils import misc_utils, eval_utils
from network import network_io, network_utils
import torch
# Settings
GPU = 0
MODEL_DIR = r'/home/wh145/models/ecvgg16_dcunet_dsmnih_lre1e-03_lrd1e-02_ep80_bs5_ds50_dr0p1'
LOAD_EPOCH = 80
DATA_DIR = r'/home/wh145/mnih'
PATCHS_SIZE = (512, 512)
def main():
# device, _ = misc_utils.set_gpu(GPU)
device_str = "cuda" if torch.cuda.is_available() else "mps" if torch.backends.mps.is_available() else "cpu"
device = torch.device(device_str)
# init model
args = network_io.load_config(MODEL_DIR)
model = network_io.create_model(args)
if LOAD_EPOCH:
args['trainer']['epochs'] = LOAD_EPOCH
ckpt_dir = os.path.join(MODEL_DIR, 'epoch-{}.pth.tar'.format(args['trainer']['epochs']))
network_utils.load(model, ckpt_dir)
print('Loaded from {}'.format(ckpt_dir))
model.to(device)
model.eval()
# eval on dataset
mean = (0.485, 0.456, 0.406)
std = (0.229, 0.224, 0.225)
tsfm_valid = A.Compose([
A.Normalize(mean=mean, std=std),
ToTensorV2(),
])
save_dir = os.path.join(r'/home/wh145/results/mrs/mass_roads', os.path.basename(network_utils.unique_model_name(args)))
evaluator = eval_utils.Evaluator('mnih', DATA_DIR, tsfm_valid, device)
evaluator.evaluate(model, PATCHS_SIZE, 2*model.lbl_margin,
pred_dir=save_dir, report_dir=save_dir)
if __name__ == '__main__':
main()