From 09b4d1541e6e06563a40f8829048e4225ed8fcf9 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Wed, 20 Jun 2018 16:12:38 +0200 Subject: mandatory results folder --- app/client/common/folderList.component.js | 8 ++-- app/client/dashboard/dashboard.actions.js | 2 +- app/client/dataset/dataset.component.js | 1 + app/client/dataset/dataset.loader.js | 19 ++++++++ app/client/modules/pix2pixhd/pix2pixhd.actions.js | 11 +++-- app/client/modules/pix2pixhd/pix2pixhd.tasks.js | 6 +-- .../modules/pix2pixhd/views/pix2pixhd.live.js | 53 ++++++++++++++-------- .../modules/pix2pixhd/views/pix2pixhd.results.js | 22 ++++----- .../modules/pix2pixhd/views/pix2pixhd.show.js | 1 - app/relay/modules/pix2pixhd.js | 27 +++++++++++ 10 files changed, 109 insertions(+), 41 deletions(-) (limited to 'app') diff --git a/app/client/common/folderList.component.js b/app/client/common/folderList.component.js index ccf9848..b609685 100644 --- a/app/client/common/folderList.component.js +++ b/app/client/common/folderList.component.js @@ -16,15 +16,17 @@ export default function FolderList ({ db, path, emptyText }) { ) - } else if (! db.data.folders.length && emptyText) { + } + let folderList = db.data.folders.filter(folder => !! folder.generated) + if (! folderList.length && emptyText) { return (
{emptyText}
) } - console.log(db.data.folders) - const folders = db.data.folders.map(raw_folder => { + console.log(folders) + const folders = folderList.map(raw_folder => { const folder = db.data.folderLookup[raw_folder.id] const fileCount = folder.files ? folder.files.length : 0 const [ className, size ] = util.hush_null(fileCount) diff --git a/app/client/dashboard/dashboard.actions.js b/app/client/dashboard/dashboard.actions.js index 7a6aa1d..567f2cb 100644 --- a/app/client/dashboard/dashboard.actions.js +++ b/app/client/dashboard/dashboard.actions.js @@ -5,7 +5,7 @@ import util from '../util' export const load = () => (dispatch) => { util.allProgress([ actions.task.index({ limit: 40, orderBy: 'created_at desc', }), - actions.folder.index(), + actions.folder.index({ activity: 'dataset', }), actions.file.index({ module: 'samplernn', generated: 1, limit: 10, orderBy: 'created_at desc', }) ], (percent, i, n) => { console.log('dashboard load progress', i, n) diff --git a/app/client/dataset/dataset.component.js b/app/client/dataset/dataset.component.js index 09a1b86..7df1b9c 100644 --- a/app/client/dataset/dataset.component.js +++ b/app/client/dataset/dataset.component.js @@ -46,6 +46,7 @@ class DatasetComponent extends Component { let { module, data, folder, fields, runner, onPickDataset, onPickFile, datasetActions } = this.props fields = fieldSet(fields) const { datasetLookup, fileLookup } = data + if (!datasetLookup) { return
} const { mapFn, sortFn } = util.sort.orderByFn('date desc') const moduleOnCPU = runner && runner.cpu.task && runner.cpu.task.module === module.name const moduleOnGPU = runner && runner.gpu.task && runner.gpu.task.module === module.name diff --git a/app/client/dataset/dataset.loader.js b/app/client/dataset/dataset.loader.js index ad42e46..f6b8d21 100644 --- a/app/client/dataset/dataset.loader.js +++ b/app/client/dataset/dataset.loader.js @@ -52,6 +52,8 @@ export const load = module => { let folderLookup = {} let fileLookup = {} + let resultsFolder = {} + // take all of the folders and put them in a lookup folderLookup = folders.reduce((folderLookup, folder) => { folderLookup[folder.id] = { @@ -61,11 +63,27 @@ export const load = module => { files: [], datasets: [], } + resultsFolder = resultsFolder || (folder.name === 'results' && folder) return folderLookup }, { unsorted: unsortedFolder(module, true) }) + if (! resultsFolder) { + console.log('creating results folder...') + actions.folder.create({ + module, + name: 'results', + activity: 'results', + }).then(folder => { + console.log('created folder', folder) + folderLookup.results = folder + }) + } + else { + console.log('got results folder', resultsFolder) + } + // prepare the files by splitting into two groups const generatedFiles = files.filter(file => file.generated) const ungeneratedFiles = files.filter(file => !file.generated) @@ -108,6 +126,7 @@ export const load = module => { folders, files, unsortedFolder: folderLookup.unsorted, + resultsFolder, } }).catch(e => { console.error(e) diff --git a/app/client/modules/pix2pixhd/pix2pixhd.actions.js b/app/client/modules/pix2pixhd/pix2pixhd.actions.js index caf6b45..917b375 100644 --- a/app/client/modules/pix2pixhd/pix2pixhd.actions.js +++ b/app/client/modules/pix2pixhd/pix2pixhd.actions.js @@ -31,15 +31,16 @@ export const load_directories = (id) => (dispatch) => { folders, files, unsortedFolder, + resultsFolder, } = datasetApiReport // console.log(datasetUsage) const sequenceDirectories = sequences.filter(s => s.dir) - console.log(sequenceDirectories) + // console.log(sequenceDirectories) sequenceDirectories.forEach(dir => { const dataset = datasetLoader.getDataset(module, datasetLookup, dir.name) dataset.isBuilt = true - console.log(dir.name, dataset) + // console.log(dir.name, dataset) }) datasets.filter(s => s.dir).forEach(dir => { @@ -119,6 +120,7 @@ export const load_directories = (id) => (dispatch) => { sequences: sequenceDirectories, datasets, checkpoints: checkpointDirectories, + resultsFolder, }, }) if (id) { @@ -137,9 +139,9 @@ export const load_directories = (id) => (dispatch) => { } export const load_results = (id) => (dispatch) => { - console.log('hi') const module = pix2pixhdModule.name util.allProgress([ + actions.folder.index({ name: 'results' }), actions.file.index({ module, generated: 1 }), actions.socket.list_sequences({ module, dir: 'results' }), actions.socket.list_directory({ module, dir: 'renders' }), @@ -147,11 +149,12 @@ export const load_results = (id) => (dispatch) => { console.log('pix2pixhd load progress', i, n) dispatch({ type: types.app.load_progress, progress: { i, n }}) }).then(res => { - const [files, results, renders] = res //, datasets, results, output, datasetUsage, lossReport] = res + const [folders, files, results, renders] = res //, datasets, results, output, datasetUsage, lossReport] = res console.log(files, results, renders) dispatch({ type: types.pix2pixhd.load_results, results: { + folder: folders[0], files, results, renders, diff --git a/app/client/modules/pix2pixhd/pix2pixhd.tasks.js b/app/client/modules/pix2pixhd/pix2pixhd.tasks.js index 2e7cbbd..f3c5342 100644 --- a/app/client/modules/pix2pixhd/pix2pixhd.tasks.js +++ b/app/client/modules/pix2pixhd/pix2pixhd.tasks.js @@ -31,21 +31,21 @@ export const train_task = (dataset, folder_id, epochs=1) => dispatch => { epochs: epochs, opt: { folder_id: folder_id, - load_size: 264, // switch to 256 for pix2wav } } console.log(task) return actions.queue.add_task(task) } -export const live_task = (sequence, checkpoint) => dispatch => { +export const live_task = (sequence, checkpoint, opt) => dispatch => { const task = { module: module.name, activity: 'live', dataset: sequence, checkpoint, opt: { - poll_delay: 0.09, + ...opt, + poll_delay: 0.01, } } console.log(task) diff --git a/app/client/modules/pix2pixhd/views/pix2pixhd.live.js b/app/client/modules/pix2pixhd/views/pix2pixhd.live.js index 3f027a1..5dd4153 100644 --- a/app/client/modules/pix2pixhd/views/pix2pixhd.live.js +++ b/app/client/modules/pix2pixhd/views/pix2pixhd.live.js @@ -4,7 +4,7 @@ import { connect } from 'react-redux' import { ParamGroup, Param, Player, - Slider, Select, Button, Loading + Slider, Select, TextInput, Button, Loading } from '../../../common/' import { startRecording, stopRecording, saveFrame, toggleFPS } from '../../../live/player' @@ -52,10 +52,12 @@ class Pix2PixHDLive extends Component { } start(){ // console.log(this.props) - const sequence = this.props.pix2pixhd.data.sequences[0].name - const checkpoint = this.props.pix2pixhd.data.checkpoints[0].name + const sequence = this.props.live.opt.sequence_name + const checkpoint = this.props.live.opt.checkpoint_name console.log('starting up!', sequence, checkpoint) - this.props.actions.tasks.live_task(sequence, checkpoint) + this.props.actions.tasks.live_task(sequence, checkpoint, { + folder_id: resultsFolder.id, + }) } interrupt(){ this.props.actions.queue.stop_task('gpu') @@ -121,21 +123,10 @@ class Pix2PixHDLive extends Component { /> {this.renderRestartButton()} - + {this.renderRecordButton()} + // ) + } } function timeInSeconds(n){ return n.toFixed(1) + ' s.' diff --git a/app/client/modules/pix2pixhd/views/pix2pixhd.results.js b/app/client/modules/pix2pixhd/views/pix2pixhd.results.js index ac0bb74..af8d90a 100644 --- a/app/client/modules/pix2pixhd/views/pix2pixhd.results.js +++ b/app/client/modules/pix2pixhd/views/pix2pixhd.results.js @@ -18,20 +18,21 @@ class Pix2pixHDResults extends Component { render(){ if (! this.props.pix2pixhd.results) return - const { results, renders, files } = this.props.pix2pixhd.results -console.log(results) + const { resultsFolder, results, renders, files } = this.props.pix2pixhd.results + console.log(results) + return (

Pix2PixHD Results

- -

results

+ { e.preventDefault() e.stopPropagation() @@ -39,7 +40,7 @@ console.log(results) this.handlePick(file) }} /> - +

renders

-

files

+

results

{ e.preventDefault() e.stopPropagation() diff --git a/app/client/modules/pix2pixhd/views/pix2pixhd.show.js b/app/client/modules/pix2pixhd/views/pix2pixhd.show.js index 5777ac0..d58ee80 100644 --- a/app/client/modules/pix2pixhd/views/pix2pixhd.show.js +++ b/app/client/modules/pix2pixhd/views/pix2pixhd.show.js @@ -86,7 +86,6 @@ class Pix2PixHDShow extends Component { const input = pix2pixhd.data.fileLookup[dataset.input[0]] if (! input) return null if (input.name && input.name.match(/(gif|jpe?g|png)$/i)) return null - console.log(dataset) return (
diff --git a/app/relay/modules/pix2pixhd.js b/app/relay/modules/pix2pixhd.js index 4c169e8..8f1db54 100644 --- a/app/relay/modules/pix2pixhd.js +++ b/app/relay/modules/pix2pixhd.js @@ -122,6 +122,32 @@ const live = { '--norm', 'batch', ] }, + listen: (task, res, i) => { + // relay the new dataset name from youtube-dl or w/e + const lines = res.split('\n') + for (let line of lines) { + console.log(line) + if ( line.match(/^rename result: /) ) { + let tag = line.split(': ')[1].trim() + task.dataset = tag + console.log(">>>>>> created dataset", tag) + return { type: 'progress', action: 'resolve_dataset', task } + } + } + return null + }, + after: 'render', +} +const render = { + type: 'perl', + script: 'dir-to-movie.pl', + params: (task) => { + return [ + '--tag', task.dataset, + '--module', task.module, + '--endpoint', process.env.API_REMOTE + '/api/folder/' + task.opt.folder_id + '/upload/', + ] + } } export default { @@ -132,5 +158,6 @@ export default { train, generate, live, + render, } } -- cgit v1.2.3-70-g09d2