-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathevaluate.py
More file actions
74 lines (54 loc) · 2.16 KB
/
evaluate.py
File metadata and controls
74 lines (54 loc) · 2.16 KB
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
from argparse import ArgumentParser
import os
def build_parser():
parser = ArgumentParser()
parser.add_argument('--model', type=str,
dest='model', help='model path',
metavar='MODEL', required=True)
parser.add_argument('--input', type=str,
dest='input', help='input image path',
metavar='INPUT', required=True)
parser.add_argument('--output', type=str,
dest='output', help='output image path',
metavar='OUTPUT', required=True)
parser.add_argument('-p', '--pad',
help='add reflection padding to input image',
dest='pad', action='store_true')
parser.add_argument('-b', '--border-size', type=str,
help='border size of reflection padding',
dest='border_size', default=30)
return parser
def check_opts(options):
assert os.path.exists(options.model), "model path not found!"
assert os.path.exists(options.input), "input path not found!"
def pad(img, border_size):
return np.pad(img, ((border_size, border_size),
(border_size, border_size),
(0,0)), mode='reflect')
def unpad(img, border_size):
return img[border_size: -border_size, border_size: -border_size]
parser = build_parser()
options = parser.parse_args()
check_opts(options)
from keras.layers import Input
from keras.models import Model
from keras.preprocessing import image
import numpy as np
from scipy.misc import imsave
from transform import TransformNet
# Get input image
input_img = image.load_img(options.input)
input_img = image.img_to_array(input_img)
if options.pad:
input_img = pad(input_img, options.border_size)
input_img = np.expand_dims(input_img, axis=0)
# Load model
_, h, w, c = input_img.shape
inputs = Input(shape=(h, w, c))
transform_net = TransformNet(inputs)
model = Model(inputs, transform_net)
model.load_weights(options.model)
output_img = model.predict([input_img])[0]
if options.pad:
output_img = unpad(output_img, options.border_size)
imsave(options.output, output_img)