def evaluate(args): content_image = utils.tensor_load_rgbimage(args.content_image, size=args.content_size, keep_asp=True) content_image = content_image.unsqueeze(0) style = utils.tensor_load_rgbimage(args.style_image, size=args.style_size) style = style.unsqueeze(0) style = utils.preprocess_batch(style) style_model = Net(ngf=args.ngf) style_model.load_state_dict(torch.load(args.model), False) if args.cuda: style_model.cuda() content_image = content_image.cuda() style = style.cuda() style_v = Variable(style) content_image = Variable(utils.preprocess_batch(content_image)) style_model.setTarget(style_v) output = style_model(content_image) output = utils.color_match(output, style_v) utils.tensor_save_bgrimage(output.data[0], args.output_image, args.cuda)
def color_map(frame: np.array, start_x: int = 0, start_y: int = 0) -> Dict[str, float]: """ Creates a color mapping for the passed frame """ m = dict() for r, row in enumerate(frame): for c, col in enumerate(row): key = f"{c + start_x}|{r + start_y}" if key in m: raise Exception(f"Duplicate key {key}") m[key] = color_match(col, REFERENCE_COLOR, DM_THRESH, DA_THRESH) return m
xP=[x.replace('lfw','lfw_aegan') for x in P] xQ=[x.replace('lfw','lfw_aegan') for x in Q] PF=model.mean_F(utils.image_feed(xP[:K],image_dims)) QF=model.mean_F(utils.image_feed(xQ[:K],image_dims)) if config.scaling=='beta': WF=(QF-PF)/((QF-PF)**2).mean() elif config.scaling=='none': WF=(QF-PF) max_iter=config.iter init=o # for each interpolation step for delta in delta_params: print(xX,b,delta) t2=time.time() Y=model.F_inverse(XF+WF*delta,max_iter=max_iter,initial_image=init) t3=time.time() print('{} minutes to reconstruct'.format((t3-t2)/60.0)) result[-1].append(Y) max_iter=config.iter//2 init=Y result=numpy.asarray(result) original=numpy.asarray(original) if 'color' in postprocess: result=utils.color_match(numpy.expand_dims(original,1),result) m=imageutils.montage(numpy.concatenate([numpy.expand_dims(original,1),result],axis=1)) imageutils.write('results/demo1.png',m) print('Output is results/demo1.png') t1=time.time() print('{} minutes ({} minutes per image).'.format((t1-t0)/60.0,(t1-t0)/60.0/result.shape[0]/result.shape[1]))
t2=time.time() Y=model.F_inverse(XF+WF*delta,max_iter=max_iter,initial_image=init) t3=time.time() print('{} minutes to reconstruct'.format((t3-t2)/60.0)) result.append(Y) max_iter=config.iter//2 init=Y result=numpy.asarray([result]) original=numpy.asarray([original]) X_mask=prefix_path+'-mask.png' if 'mask' in postprocess and os.path.exists(X_mask): mask=imageutils.resize(imageutils.read(X_mask),image_dims) result*=mask result+=original*(1-mask) if 'color' in postprocess: result=utils.color_match(numpy.asarray([original]),result) if 'mask' in postprocess and os.path.exists(X_mask): result*=mask result+=original*(1-mask) if config.include_original: m=imageutils.montage(numpy.concatenate([numpy.expand_dims(original,1),result],axis=1)) else: m=imageutils.montage(result) if config.output: opath=config.output else: opath='{}_{}_{}{}.{}'.format(prefix_path,timestamp,config.method,postfix_comment,config.output_format) imageutils.write(opath,m) opathlist.append(opath) print('Outputs are {}'.format(' '.join(opathlist))) t1=time.time()
delta = delta0 while delta <= delta1: print('Starting frame #{:06}, {}'.format(i + 1, (time.time() - t0) / 60.0)) result = model.F_inverse(XF + WF * delta, max_iter=max_iter, initial_image=init) max_iter = config.step_iter init = result i = i + 1 delta = delta + ddelta if 'mask' in postprocess and os.path.exists(X_mask): result *= mask result += original * (1 - mask) if 'color' in postprocess: result = utils.color_match(numpy.asarray([original]), numpy.asarray([[result]]))[0, 0] if 'mask' in postprocess and os.path.exists(X_mask): result *= mask result += original * (1 - mask) imageutils.write( prefix_path + postfix_comment + '/{:06}.png'.format(i), result) # generate movie cmd = [ 'ffmpeg', '-y', '-f', 'image2', '-i', prefix_path + postfix_comment + '/%06d.png', '-crf', '19', '-g', '60', '-r', '30', '-s', '{}x{}'.format(original.shape[1], original.shape[0]), '-pix_fmt', 'yuv420p', prefix_path + postfix_comment + '_movie.{}'.format(config.output_format) ] print(' '.join(pipes.quote(x) for x in cmd))