-
Notifications
You must be signed in to change notification settings - Fork 2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
docs(samples): add video-intelligence beta samples (#156)
* Adding video-intelligence beta samples * Skipping tests till fixed
- Loading branch information
1 parent
15efac0
commit 163f6b1
Showing
19 changed files
with
1,461 additions
and
0 deletions.
There are no files selected for viewing
77 changes: 77 additions & 0 deletions
77
automl/test/automlVideoIntelligenceClassificationDataset.v1beta1.test.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
/** | ||
* Copyright 2019, Google LLC | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
'use strict'; | ||
|
||
const {assert} = require('chai'); | ||
const execa = require('execa'); | ||
|
||
/** Tests for AutoML Video Intelligence Classification "Dataset API" sample. */ | ||
|
||
const cmdDataset = 'node automlVideoIntelligenceDataset.js'; | ||
|
||
// TODO(developer): Before running the test cases, | ||
// set the environment variables PROJECT_ID, REGION_NAME and | ||
// change the value of datasetId | ||
const projectId = process.env.PROJECT_ID; | ||
//const computeRegion = process.env.REGION_NAME; | ||
const bucket = projectId + '-video'; | ||
const datasetName = 'test_video_dataset'; | ||
const filter = 'videoClassificationDatasetMetadata:*'; | ||
const datasetId = 'VCN1802794449273618432'; | ||
const importDataCsv = 'gs://automl-video-demo-data/hmdb_split1.csv'; | ||
|
||
const exec = async cmd => (await execa.shell(cmd)).stdout; | ||
|
||
describe.skip(`DatasetAPI`, () => { | ||
it(`should create, import and delete a dataset`, async () => { | ||
// Create dataset | ||
let output = await exec(`${cmdDataset} create-dataset "${datasetName}"`); | ||
const parsedOut = output.split('\n'); | ||
const outputDatasetId = parsedOut[1].split(':')[1].trim(); | ||
assert.match(output, /Dataset display name:/); | ||
|
||
// Import data | ||
output = await exec( | ||
`${cmdDataset} import-data "${outputDatasetId}" "${importDataCsv}"` | ||
); | ||
assert.match(output, /Processing import.../); | ||
|
||
// Delete dataset | ||
output = await exec(`${cmdDataset} delete-dataset "${outputDatasetId}"`); | ||
assert.match(output, /Dataset delete details:/); | ||
}); | ||
|
||
it(`should list datasets`, async () => { | ||
// List dataset | ||
const output = await exec(`${cmdDataset} list-datasets "${filter}"`); | ||
assert.match(output, /List of datasets:/); | ||
}); | ||
|
||
it(`should get preexisting dataset`, async () => { | ||
// Get dataset | ||
const output = await exec(`${cmdDataset} get-dataset "${datasetId}"`); | ||
assert.match(output, /Dataset display name:/); | ||
}); | ||
|
||
it(`should export dataset`, async () => { | ||
// Export data | ||
const outputUri = 'gs://' + bucket + '/' + datasetId; | ||
const output = await exec( | ||
`${cmdDataset} export-data "${datasetId}" "${outputUri}"` | ||
); | ||
assert.match(output, /Processing export.../); | ||
}); | ||
}); |
102 changes: 102 additions & 0 deletions
102
automl/test/automlVideoIntelligenceClassificationModel.v1beta1.test.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
/** | ||
* Copyright 2019, Google LLC | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
'use strict'; | ||
|
||
const {assert} = require('chai'); | ||
const execa = require('execa'); | ||
|
||
/** Tests for AutoML Video Intelligence Classification "Model API" sample. */ | ||
|
||
const cmdModel = 'node automlVideoIntelligenceModel.js'; | ||
|
||
// TODO(developer): Before running the test cases, | ||
// set the environment variables PROJECT_ID, REGION_NAME and | ||
// change the values of datasetId | ||
//const projectId = process.env.PROJECT_ID; | ||
//const computeRegion = process.env.REGION_NAME; | ||
const filter = 'videoClassificationModelMetadata:*'; | ||
const datasetId = 'VCN1653190499151904768'; | ||
const testModelName = 'test_video_model'; | ||
|
||
const exec = async cmd => (await execa.shell(cmd)).stdout; | ||
|
||
describe.skip(`Video Intelligence ModelAPI`, () => { | ||
it(`should create a model`, async () => { | ||
// Create model | ||
let output = await exec( | ||
`${cmdModel} create-model "${datasetId}" "${testModelName}"` | ||
); | ||
const operationName = output | ||
.split('\n')[0] | ||
.split(':')[1] | ||
.trim(); | ||
assert.match(output, /Training started.../); | ||
|
||
output = await exec(`${cmdModel} get-operation-status "${operationName}"`); | ||
assert.match(output, /Operation details:/); | ||
}); | ||
|
||
it(`should list models, get and delete a model. list, get and display model | ||
evaluations from preexisting models`, async () => { | ||
// List models | ||
let output = await exec(`${cmdModel} list-models "${filter}"`); | ||
const parsedOut = output.split('\n'); | ||
const ouputModelId = parsedOut[3].split(':')[1].trim(); | ||
assert.match(output, /List of models:/); | ||
|
||
// Get model | ||
output = await exec(`${cmdModel} get-model "${ouputModelId}"`); | ||
assert.match(output, /Model name:/); | ||
|
||
// List model evaluations | ||
output = await exec(`${cmdModel} list-model-evaluations "${ouputModelId}"`); | ||
const parsedModelEvaluation = output.split('\n'); | ||
const modelEvaluationId = parsedModelEvaluation[3].split(':')[1].trim(); | ||
assert.match(output, /Model evaluation Id:/); | ||
|
||
// Get model evaluation | ||
output = await exec( | ||
`${cmdModel} get-model-evaluation "${ouputModelId}" ` + | ||
`"${modelEvaluationId}"` | ||
); | ||
assert.match(output, /Model evaluation Id:/); | ||
|
||
// Display evaluation | ||
output = await exec(`${cmdModel} display-evaluation "${ouputModelId}"`); | ||
assert.match(output, /Model Evaluation ID:/); | ||
|
||
// Delete model | ||
output = await exec(`${cmdModel} delete-model "${ouputModelId}"`); | ||
assert.match(output, /Model delete details:/); | ||
}); | ||
|
||
it(`should list and get operation status`, async () => { | ||
// List operation status | ||
let output = await exec(`${cmdModel} list-operations-status`); | ||
const operationFullId = output | ||
.split('\n')[3] | ||
.split(':')[1] | ||
.trim(); | ||
assert.match(output, /Operation details:/); | ||
|
||
// Get operation status | ||
// Poll operation status, here confirming that operation is not complete yet | ||
output = await exec( | ||
`${cmdModel} get-operation-status "${operationFullId}"` | ||
); | ||
assert.match(output, /Operation details:/); | ||
}); | ||
}); |
45 changes: 45 additions & 0 deletions
45
automl/test/automlVideoIntelligenceClassificationPredict.v1beta1.test.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
/** | ||
* Copyright 2019, Google LLC | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
'use strict'; | ||
|
||
const {assert} = require('chai'); | ||
const execa = require('execa'); | ||
|
||
/** Tests for AutoML Video Intelligence Classification "Prediction API" sample. | ||
*/ | ||
|
||
const cmdPredict = 'node automlVideoIntelligencePrediction.js'; | ||
|
||
// TODO(developer): Before running the test cases, | ||
// set the environment variables PROJECT_ID, REGION_NAME and | ||
// change the values of modelId, inputUri and outputUriPrefix | ||
//const projectId = process.env.PROJECT_ID; | ||
//const computeRegion = process.env.REGION_NAME; | ||
const modelId = 'VCN5018751611309129728'; | ||
const inputUri = 'gs://video-intelligence/input-csv/annotateVideo.csv'; | ||
const outputUriPrefix = 'gs://video-intelligence/'; | ||
|
||
const exec = async cmd => (await execa.shell(cmd)).stdout; | ||
|
||
describe.skip(`Video Intelligence PredictionAPI`, () => { | ||
it(`should run prediction from preexisting model`, async () => { | ||
// Run prediction on 'annotate_video.csv' from gcs inputUri | ||
const output = await exec( | ||
`${cmdPredict} predict "${modelId}" "${inputUri}" "${outputUriPrefix}"` | ||
); | ||
assert.match(output, /Operation name:/); | ||
}); | ||
}); |
68 changes: 68 additions & 0 deletions
68
automl/video-intelligence/classification/create-dataset.v1beta1.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
/** | ||
* Copyright 2019, Google LLC | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
`use strict`; | ||
async function main( | ||
projectId = 'YOUR_PROJECT_ID', | ||
computeRegion = 'YOUR_REGION_NAME', | ||
datasetName = 'YOUR_DATASET_NAME' | ||
) { | ||
// [START automl_video_intelligence_classification_create_dataset] | ||
const automl = require(`@google-cloud/automl`); | ||
const util = require(`util`); | ||
const client = new automl.v1beta1.AutoMlClient(); | ||
|
||
/** | ||
* Demonstrates using the AutoML client to create a dataset. | ||
* TODO(developer): Uncomment the following lines before running the sample. | ||
*/ | ||
// const projectId = '[PROJECT_ID]' e.g., "my-gcloud-project"; | ||
// const computeRegion = '[REGION_NAME]' e.g., "us-central1"; | ||
// const datasetName = '[DATASET_NAME]' e.g., "myDataset”; | ||
|
||
// A resource that represents Google Cloud Platform location. | ||
const projectLocation = client.locationPath(projectId, computeRegion); | ||
|
||
// Set dataset name and metadata. | ||
const myDataset = { | ||
displayName: datasetName, | ||
videoClassificationDatasetMetadata: {}, | ||
}; | ||
|
||
// Create a dataset with the dataset metadata in the region. | ||
client | ||
.createDataset({parent: projectLocation, dataset: myDataset}) | ||
.then(responses => { | ||
const dataset = responses[0]; | ||
|
||
// Display the dataset information. | ||
console.log(`Dataset name: ${dataset.name}`); | ||
console.log(`Dataset Id: ${dataset.name.split(`/`).pop(-1)}`); | ||
console.log(`Dataset display name: ${dataset.displayName}`); | ||
console.log(`Dataset example count: ${dataset.exampleCount}`); | ||
console.log( | ||
`Video classification dataset metadata: ${util.inspect( | ||
dataset.videoClassificationDatasetMetadata, | ||
false, | ||
null | ||
)}` | ||
); | ||
}) | ||
.catch(err => { | ||
console.error(err); | ||
}); | ||
// [END automl_video_intelligence_classification_create_dataset] | ||
} | ||
main(...process.argv.slice(2)).catch(console.error()); |
59 changes: 59 additions & 0 deletions
59
automl/video-intelligence/classification/create-model.v1beta1.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
/** | ||
* Copyright 2019, Google LLC | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
`use strict`; | ||
async function main( | ||
projectId = 'YOUR_PROJECT_ID', | ||
computeRegion = 'YOUR_REGION_NAME', | ||
datasetId = 'YOUR_DATASET_ID', | ||
modelName = 'MODEL_NAME' | ||
) { | ||
// [START automl_video_intelligence_classification_create_model] | ||
const automl = require(`@google-cloud/automl`); | ||
const client = new automl.v1beta1.AutoMlClient(); | ||
|
||
/** | ||
* Demonstrates using the AutoML client to create a model. | ||
* TODO(developer): Uncomment the following lines before running the sample. | ||
*/ | ||
// const projectId = '[PROJECT_ID]' e.g., "my-gcloud-project"; | ||
// const computeRegion = '[REGION_NAME]' e.g., "us-central1"; | ||
// const datasetId = '[DATASET_ID]' e.g., "VCN7209576908164431872"; | ||
// const modelName = '[MODEL_NAME]' e.g., "myModel"; | ||
|
||
// A resource that represents Google Cloud Platform location. | ||
const projectLocation = client.locationPath(projectId, computeRegion); | ||
|
||
// Set datasetId, model name and model metadata for the dataset. | ||
const myModel = { | ||
displayName: modelName, | ||
datasetId: datasetId, | ||
videoClassificationModelMetadata: {}, | ||
}; | ||
|
||
// Create a model with the model metadata in the region. | ||
client | ||
.createModel({parent: projectLocation, model: myModel}) | ||
.then(responses => { | ||
const initialApiResponse = responses[1]; | ||
console.log(`Training operation name: ${initialApiResponse.name}`); | ||
console.log(`Training started...`); | ||
}) | ||
.catch(err => { | ||
console.error(err); | ||
}); | ||
// [END automl_video_intelligence_classification_create_model] | ||
} | ||
main(...process.argv.slice(2)).catch(console.error()); |
Oops, something went wrong.