Use full range of tanh output rather than [-0.5, +0.5], avoids clipping.

main
Alex J. Champandard 9 years ago
parent c610623b11
commit cf65207a2e

@ -186,9 +186,9 @@ class DataLoader(threading.Thread):
self.data_copied.clear()
i = self.available.pop()
self.orig_buffer[i] = np.transpose(copy / 255.0 - 0.5, (2, 0, 1))
self.orig_buffer[i] = np.transpose(copy / 127.5 - 1.0, (2, 0, 1))
seed = scipy.misc.imresize(copy, size=(self.seed_shape, self.seed_shape), interp='bilinear')
self.seed_buffer[i] = np.transpose(seed / 255.0 - 0.5, (2, 0, 1))
self.seed_buffer[i] = np.transpose(seed / 127.5 - 1.0, (2, 0, 1))
self.ready.add(i)
if len(self.ready) >= args.batch_size:
@ -298,7 +298,7 @@ class Model(object):
"""
offset = np.array([103.939, 116.779, 123.680], dtype=np.float32).reshape((1,3,1,1))
self.network['percept'] = lasagne.layers.NonlinearityLayer(input, lambda x: ((x+0.5).clip(0.0, 1.0)*255.0) - offset)
self.network['percept'] = lasagne.layers.NonlinearityLayer(input, lambda x: ((x+1.0)*127.5) - offset)
self.network['mse'] = self.network['percept']
self.network['conv1_1'] = ConvLayer(self.network['percept'], 64, 3, pad=1)
@ -399,7 +399,7 @@ class Model(object):
return T.mean(1.0 - T.nnet.softplus(d[args.batch_size:]))
def loss_discriminator(self, d):
return T.mean(T.nnet.softminus(d[args.batch_size:]) - T.nnet.softplus(d[:args.batch_size]))
return T.mean(T.nnet.softplus(d[:args.batch_size]) - T.nnet.softminus(d[args.batch_size:]))
def compile(self):
# Helper function for rendering test images during training, or standalone non-training mode.
@ -454,8 +454,8 @@ class NeuralEnhancer(object):
print('{}'.format(ansi.ENDC))
def imsave(self, fn, img):
img = np.transpose(img + 0.5, (1, 2, 0)).clip(0.0, 1.0)
image = scipy.misc.toimage(img * 255.0, cmin=0, cmax=255)
img = np.transpose(img + 1.0, (1, 2, 0)).clip(0.0, 1.0)
image = scipy.misc.toimage(img * 127.5, cmin=0, cmax=255)
image.save(fn)
def show_progress(self, orign, scald, repro):
@ -525,10 +525,10 @@ class NeuralEnhancer(object):
print(ansi.ENDC)
def process(self, image):
img = np.transpose(image / 255.0 - 0.5, (2, 0, 1))[np.newaxis].astype(np.float32)
img = np.transpose(image / 127.5 - 1.0, (2, 0, 1))[np.newaxis].astype(np.float32)
*_, repro = self.model.predict(img)
repro = np.transpose(repro[0] + 0.5, (1, 2, 0)).clip(0.0, 1.0)
return scipy.misc.toimage(repro * 255.0, cmin=0, cmax=255)
repro = np.transpose(repro[0] + 1.0, (1, 2, 0))
return scipy.misc.toimage(repro * 127.5, cmin=0, cmax=255)
if __name__ == "__main__":

Loading…
Cancel
Save