-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathevaluate_pytorch.py
63 lines (41 loc) · 1.55 KB
/
evaluate_pytorch.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
import os
import glob
import time
import argparse
import torch
from torch import nn
from model.densedepth import Model
from model.fcrn import ResNet
from utils import evaluate
from matplotlib import pyplot as plt
# Argument Parser
parser = argparse.ArgumentParser(description='High Quality Monocular Depth Estimation via Transfer Learning')
parser.add_argument('--model_type', default='densedepth', type=str, help='Depth estimation network for evaluation')
parser.add_argument('--layers', default=161, type=int, help='number of layers of encoder')
args = parser.parse_args()
# Custom object needed for inference and training
# Load test data
print('Loading test data...', end='')
import numpy as np
from zipfile import ZipFile
def extract_zip(input_zip):
input_zip=ZipFile(input_zip)
return {name: input_zip.read(name) for name in input_zip.namelist()}
data = extract_zip('/media/dsshim/nyu_v2/nyu_test.zip')
from io import BytesIO
rgb = np.load(BytesIO(data['eigen_test_rgb.npy']))
depth = np.load(BytesIO(data['eigen_test_depth.npy']))
crop = np.load(BytesIO(data['eigen_test_crop.npy']))
print('Test data loaded.\n')
if args.model_type == 'densedepth':
model = Model()
else:
model = ResNet(layers=args.layers)
model.load_state_dict(torch.load('checkpoints/%s_%d.pth'%(args.model_type, args.layers)))
model = model.cuda()
model.eval()
start = time.time()
print('Testing...')
e = evaluate(model, rgb, depth, crop, batch_size=1)
end = time.time()
print('\nTest time', end-start, 's')