diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2018-06-20 16:12:38 +0200 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2018-06-20 16:12:38 +0200 |
| commit | 09b4d1541e6e06563a40f8829048e4225ed8fcf9 (patch) | |
| tree | 4d4547b855f3f006dd0b7fc28e558b7167af278d /app | |
| parent | 4ccd160957e84c95c4f311333385f3eda130652c (diff) | |
mandatory results folder
Diffstat (limited to 'app')
| -rw-r--r-- | app/client/common/folderList.component.js | 8 | ||||
| -rw-r--r-- | app/client/dashboard/dashboard.actions.js | 2 | ||||
| -rw-r--r-- | app/client/dataset/dataset.component.js | 1 | ||||
| -rw-r--r-- | app/client/dataset/dataset.loader.js | 19 | ||||
| -rw-r--r-- | app/client/modules/pix2pixhd/pix2pixhd.actions.js | 11 | ||||
| -rw-r--r-- | app/client/modules/pix2pixhd/pix2pixhd.tasks.js | 6 | ||||
| -rw-r--r-- | app/client/modules/pix2pixhd/views/pix2pixhd.live.js | 53 | ||||
| -rw-r--r-- | app/client/modules/pix2pixhd/views/pix2pixhd.results.js | 22 | ||||
| -rw-r--r-- | app/client/modules/pix2pixhd/views/pix2pixhd.show.js | 1 | ||||
| -rw-r--r-- | app/relay/modules/pix2pixhd.js | 27 |
10 files changed, 109 insertions, 41 deletions
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 }) { <Loading progress={db.progress} /> </div> ) - } else if (! db.data.folders.length && emptyText) { + } + let folderList = db.data.folders.filter(folder => !! folder.generated) + if (! folderList.length && emptyText) { return ( <div class='col folderList'> {emptyText} </div> ) } - 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 <div></div> } 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 { /> <Slider live name='frame_delay' - min={0.05} max={2.0} type='float' + min={0.0} max={2.0} type='float' /> {this.renderRestartButton()} - <Button - title={ - this.props.opt.savingVideo - ? 'Saving video...' - : this.props.opt.recording - ? 'Recording (' + timeInSeconds(this.props.opt.recordFrames/25) +')' - : 'Record video' - } - onClick={this.toggleRecording} - > - {this.props.opt.savingVideo ? 'Saving' : this.props.opt.recording ? 'Recording' : 'Record'} - </Button> + {this.renderRecordButton()} <Button title={'Save frame'} onClick={saveFrame} @@ -143,12 +134,20 @@ class Pix2PixHDLive extends Component { Save </Button> <ParamGroup - title='Render on server' + title='Record video' name='store_b' onToggle={(value) => { // now storing frames on server... }} > + <TextInput + title='Video name' + name='final_tag' + value={this.props.opt.final_tag} + onSave={value => { + this.props.actions.live.set_param('final_tag', value) + }} + /> </ParamGroup> <p class='last_message'>{this.props.last_message}</p> @@ -264,6 +263,7 @@ class Pix2PixHDLive extends Component { ) } renderRestartButton(){ + console.log(this.props.runner.gpu) if (this.props.runner.gpu.status === 'IDLE') { return ( <Button @@ -307,6 +307,23 @@ class Pix2PixHDLive extends Component { </div> ) } + renderRecordButton(){ + return null + // return ( + // <Button + // title={ + // this.props.opt.savingVideo + // ? 'Saving video...' + // : this.props.opt.recording + // ? 'Recording (' + timeInSeconds(this.props.opt.recordFrames/25) +')' + // : 'Record video' + // } + // onClick={this.toggleRecording} + // > + // {this.props.opt.savingVideo ? 'Saving' : this.props.opt.recording ? 'Recording' : 'Record'} + // </Button> + // ) + } } 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 <Loading progress={this.props.pix2pixhd.progress} /> - const { results, renders, files } = this.props.pix2pixhd.results -console.log(results) + const { resultsFolder, results, renders, files } = this.props.pix2pixhd.results + console.log(results) + return ( <div className='app pix2pixhd'> <div className='heading row middle'> <h1>Pix2PixHD Results</h1> </div> <div class='rows params renders'> - - <h3>results</h3> + <FileList - files={results} + linkFiles + files={files} orderBy='date desc' - fields={'name date count'} + fields={'name date size'} onClick={(file, e) => { e.preventDefault() e.stopPropagation() @@ -39,7 +40,7 @@ console.log(results) this.handlePick(file) }} /> - + <h3>renders</h3> <FileList files={renders} @@ -53,12 +54,11 @@ console.log(results) }} /> - <h3>files</h3> + <h3>results</h3> <FileList - linkFiles - files={files} + files={results} orderBy='date desc' - fields={'name date size'} + fields={'name date count'} onClick={(file, e) => { 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 ( <div> <div class={'actions'}> 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, } } |
