import path from 'path' const name = 'pix2pix' const cwd = process.env.PIX2PIX_CWD || path.join(process.env.HOME, 'code/' + name + '/') /* what are all the tasks that pix2pix has to do? - fetch url - fetch youtube - ffmpeg movie into frames - unzip zip file into sequence - list sequences */ const fetch = { type: 'perl', script: 'get.pl', params: (task) => { console.log(task) return [ task.module, task.opt.url ] }, listen: (task, line, i) => { // relay the new dataset name from youtube-dl or w/e if ( line.match(/^created dataset: /) ) { let filename = line.split(': ')[1].trim() task.dataset = filename.split('.')[0] task.opt.filename = filename return { type: 'progress', action: 'resolve_dataset', task, } } return null } } const combine_folds = { type: 'pytorch', script: 'datasets/combine_A_and_B.py', params: (task) => { return [ '--fold_A', task.module + '/a_b/' + task.dataset + '/A', '--fold_B', task.module + '/a_b/' + task.dataset + '/B', '--fold_AB', task.module + '/datasets/' + task.dataset, ] } } const train = { type: 'pytorch', script: 'train.py', params: (task) => { return [ '--dataroot', path.join(cwd, 'datasets', task.dataset), '--name', task.dataset, '--model', 'pix2pix', '--loadSize', opt.load_size || 264, '--fineSize', 256, '--which_model_netG', 'unet_256', '--which_direction', 'AtoB', '--lambda_B', 100, '--dataset_mode', 'aligned', '--epoch_count', task.epochs, '--which_epoch', 'latest', '--continue_train', '--no_lsgan', '--norm', 'batch', '--pool_size', '0', '--cortex_module', task.module, ] }, } const generate = { type: 'pytorch', script: 'test.py', params: (task) => { return [ '--dataroot', '/sequences/' + task.module + '/' + task.dataset, '--name', task.dataset, '--start_img', '/sequences/' + task.module + '/' + task.dataset + '/frame_00001.png', '--how_many', 1000, '--model', 'test', '--aspect_ratio', 1.777777, '--which_model_netG', 'unet_256', '--which_direction', 'AtoB', '--dataset_mode', 'test', '--loadSize', 256, '--fineSize', 256, '--norm', 'batch' ] }, } const live = { type: 'pytorch', script: 'live-mogrify.py', params: (task) => { console.log(task) return [ '--dataroot', path.join(cwd, 'sequences', task.module, task.dataset), '--start_img', path.join(cwd, 'sequences', task.module, task.dataset, 'frame_00001.png'), '--checkpoint-name', task.checkpoint, '--experiment', task.checkpoint, '--name', task.checkpoint, '--module-name', task.module, '--sequence-name', task.dataset, '--recursive', '--recursive-frac', 0.1, '--sequence', '--sequence-frac', 0.3, '--process-frac', 0.5, '--nThreads', 1, '--transition', '--transition-min', 0.05, '--how_many', 1000000, '--transition-period', 1000, '--loadSize', 256, '--fineSize', 256, '--just-copy', '--poll_delay', task.opt.poll_delay || 0.09, '--model', 'test', '--which_model_netG', 'unet_256', '--which_direction', 'AtoB', '--dataset_mode', 'recursive', '--which_epoch', 'latest', '--norm', 'batch', ] }, } export default { name, cwd, activities: { fetch, combine_folds, train, generate, live, } }