summaryrefslogtreecommitdiff
path: root/test.py
blob: 0274fe4e48bccbe27790cdd48d0b48044c5afeb6 (plain)
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
75
76
import os
from options.test_options import TestOptions
from data import CreateRecursiveDataLoader
from models import create_model
from util.visualizer import Visualizer
from util.util import mkdirs
from util import html
from shutil import move, copyfile
from PIL import Image, ImageOps
from skimage.transform import resize
from scipy.misc import imresize
from shutil import copyfile

import subprocess
from time import sleep

if __name__ == '__main__':
    opt = TestOptions().parse()
    opt.nThreads = 1   # test code only supports nThreads = 1
    opt.batchSize = 1  # test code only supports batchSize = 1
    opt.serial_batches = True  # no shuffle
    opt.no_flip = True  # no flip
    opt.experiment = opt.start_img.split("/")[-1].split(".")[0]

    render_dir = opt.results_dir + opt.name + "/exp:" + opt.experiment + "/"

    mkdirs(render_dir)
    copyfile(opt.start_img, render_dir + "frame_00000.png")

    data_loader = CreateRecursiveDataLoader(opt)
    dataset = data_loader.load_data()
    ds = dataset.dataset
    model = create_model(opt)
    visualizer = Visualizer(opt)
    # create website
    web_dir = os.path.join(opt.results_dir, opt.name, '%s_%s' % (opt.phase, opt.which_epoch))
    webpage = html.HTML(web_dir, 'Experiment = %s, Phase = %s, Epoch = %s' % (opt.name, opt.phase, opt.which_epoch))
    # test
    print(dataset.name())
    for i, data in enumerate(data_loader):
        if i >= opt.how_many:
            break
        model.set_input(data)
        model.test()
        visuals = model.get_current_visuals()
        img_path = model.get_image_paths()
        print('%04d: process image... %s' % (i, img_path))
        ims = visualizer.save_images(webpage, visuals, img_path, aspect_ratio=opt.aspect_ratio)
        if dataset.name() == 'RecursiveDatasetDataLoader':
            # print(visuals.keys())
            im = visuals['fake_B']
            save_path = render_dir + "frame_{:05d}_tmp.png".format(i+1)
            final_path = render_dir + "frame_{:05d}.png".format(i+1)
            s = 256
            p = 8
            im = imresize(im, (s-p, s-p), interp='bicubic')
            image_pil = Image.fromarray(im)
            image_pil = ImageOps.expand(image_pil, p)
            image_pil.save(save_path)
            copyfile(save_path, final_path)
            image_pil = Image.fromarray(im)
            image_pil.save(save_path)
    webpage.save()

    os.remove(render_dir + "frame_00000.png")

    cmd = ("/usr/bin/ffmpeg", "-i", render_dir + "/frame_%05d_tmp.png", "-c:v", "libx264", "-vf", "fps=30", "-pix_fmt", "yuv420p", render_dir + opt.name + "_" + opt.experiment + ".mp4")
    process = subprocess.Popen(cmd, stdout=subprocess.PIPE)
    output, error = process.communicate()

    cmd = ("scp", render_dir + opt.name + "_" + opt.experiment + ".mp4", "jules@asdf.us:asdf/neural/")
    process = subprocess.Popen(cmd, stdout=subprocess.PIPE)
    output, error = process.communicate()

    print("\n")
    print("https://asdf.us/neural/" + opt.name + "_" + opt.experiment + ".mp4")