-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathtest.py
executable file
·41 lines (31 loc) · 1.24 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
import torch
from tqdm import tqdm
def calculate_video_results(output_buffer, video_id, test_results, class_names):
video_outputs = torch.stack(output_buffer)
average_scores = torch.mean(video_outputs, dim=0)
sorted_scores, locs = torch.topk(average_scores, k=1)
video_results = []
for i in range(sorted_scores.size(0)):
video_results.append({
'label': class_names[locs[i].item()],
'score': sorted_scores[i].item()
})
test_results.put([video_id, video_results])
def test(data_loader, model, opt, class_names, test_results):
print('test')
model.eval()
output_buffer = []
previous_video_id = ''
i = 0
for (inputs, targets, _) in tqdm(data_loader, disable=opt.rank!=0):
with torch.no_grad():
outputs = model(inputs.cuda())
for j in range(outputs.size(0)):
if not (i == 0 and j == 0) and targets[j] != previous_video_id:
calculate_video_results(output_buffer, previous_video_id,
test_results, class_names)
output_buffer = []
output_buffer.append(outputs[j].data.cpu())
previous_video_id = targets[j]
i += 1
test_results.put(-1)