-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtest.py
80 lines (64 loc) · 2.47 KB
/
test.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
from __future__ import print_function
from models.litmodel import LitModel
from dataloader import lit_custom_data
from pytorch_lightning import loggers
from runstats import Statistics, Regression
import os
import cv2
import numpy as np
import timeit
def test(model, iterator):
print("Starting test")
verbose = True
iouStats = Statistics()
fpsStats = Statistics()
fourcc = cv2.VideoWriter_fourcc('F', 'M', 'P', '4')
outwrite = cv2.VideoWriter('output.mp4', fourcc, 60.0, (500, 500))
model.freeze()
model.eval()
its = 0
for i, batch in enumerate(iterator):
image = batch['input'].cuda()
target = batch['target']
real = batch['real']
its += 1
clear = True if its % 10 == 0 else False
# clear = True if np.random.randn() > 0.9 else False
start = timeit.default_timer()
out = model(image, clear, choose=1 if not clear else 0)
end = timeit.default_timer()
t = target.detach().cpu().squeeze().numpy()
o = out.detach().cpu().squeeze().numpy() > 0.5
iou = np.sum(np.bitwise_and(t.astype(bool), o.astype(bool))) / \
np.sum(np.bitwise_or(t.astype(bool), o.astype(bool)))
fpsStats.push(1/(end-start))
iouStats.push(iou)
if verbose:
print(f"frametime: {(end-start)*1000}ms, iou: {iou} avgfps: {fpsStats.mean()}, avgiou:{iouStats.mean()}")
img = np.transpose(
(real*255)[0].numpy().astype("uint8"), (1, 2, 0))
overlay = np.zeros(img.squeeze().shape)
overlay[:, :, 2] = o
overlay[:, :, 0] = t
overlay = (overlay*255).astype("uint8")
out = cv2.addWeighted(img, 1, overlay, 0.5, 0)
out = cv2.resize(out, (500, 500), interpolation=cv2.INTER_AREA)
outwrite.write(out)
# cv2.imshow('Out', out)
# if cv2.waitKey(25) & 0xFF == ord('q'):
# break
outwrite.release()
cv2.destroyAllWindows()
print("||STATS||")
print('Avg fps', fpsStats.mean(), '+-', fpsStats.variance())
print('Avg IoU', iouStats.mean(), '+-', iouStats.variance())
print("Output Video Stored as output.mp4")
if __name__ == '__main__':
hparams = {
'lr': 0.01
}
model = LitModel.load_from_checkpoint(
"I:/dataset/cv/trained/LSTM_Sequential/checkpoints/epoch=119-step=55559.ckpt").cuda()
dataset = lit_custom_data()
dataset.setup()
test(model, dataset.test_dataloader())