Rotular vídeos usando a linha de comando
Este guia de início rápido aborda os seguintes processos:
- Como copiar um conjunto de vídeo para o Cloud Storage
- Como criar arquivos CSV que listam vídeos e os respectivos rótulos
- Como usar o AutoML Video para criar seu conjunto de dados, além de treinar e usar o modelo
Antes de começar
Configurar o projeto
- Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
- Instale a CLI do Google Cloud.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
Crie ou selecione um projeto do Google Cloud.
-
Crie um projeto do Google Cloud:
gcloud projects create PROJECT_ID
Substitua
PROJECT_ID
por um nome para o projeto do Google Cloud que você está criando. -
Selecione o projeto do Google Cloud que você criou:
gcloud config set project PROJECT_ID
Substitua
PROJECT_ID
pelo nome do projeto do Google Cloud.
-
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Ative as APIs AutoML and Cloud Storage:
gcloud services enable storage-component.googleapis.com
automl.googleapis.com storage-api.googleapis.com - Instale a CLI do Google Cloud.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
Crie ou selecione um projeto do Google Cloud.
-
Crie um projeto do Google Cloud:
gcloud projects create PROJECT_ID
Substitua
PROJECT_ID
por um nome para o projeto do Google Cloud que você está criando. -
Selecione o projeto do Google Cloud que você criou:
gcloud config set project PROJECT_ID
Substitua
PROJECT_ID
pelo nome do projeto do Google Cloud.
-
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Ative as APIs AutoML and Cloud Storage:
gcloud services enable storage-component.googleapis.com
automl.googleapis.com storage-api.googleapis.com - Defina a variável de ambiente
PROJECT_ID
como seu ID do projeto.export PROJECT_ID=PROJECT_ID
As chamadas de API AutoML e os nomes dos recursos incluem seu código do projeto. A variável de ambientePROJECT_ID
é uma maneira conveniente de especificar o ID.
Crie um conjunto de dados e importe dados de treinamento
criar um conjunto de dados
Escolha um nome para o conjunto de dados e use os seguintes comandos curl
ou do PowerShell para criar um novo conjunto de dados com esse nome.
REST
Antes de usar os dados da solicitação, faça as substituições a seguir:
- dataset-name: nome do conjunto de dados a ser exibido na interface
- Observação:
- project-number: o número do seu projeto
- location-id: a região do Cloud em que a anotação deve ocorrer. As regiões de nuvem compatíveis são:
us-east1
,us-west1
,europe-west1
easia-east1
. Se nenhuma região for especificada, uma região será determinada com base na localização do arquivo de vídeo.
Método HTTP e URL:
POST https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/datasets
Corpo JSON da solicitação:
{ "displayName": "dataset-name", "videoClassificationDatasetMetadata": { } }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-number" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
" https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/datasets"
PowerShell
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-number" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri " https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/datasets" | Select-Object -Expand Content
name
para sua operação. Veja a seguir um exemplo dessa resposta, em que project-number
é o número do projeto e operation-id
é o ID da operação de longa duração criada para a solicitação.
Importar dados de treinamento
REST
Para importar seus dados de treinamento, use o métodoimportData
. Esse método exige que você forneça dois parâmetros:
- o caminho para o CSV que contém caminhos para o treinamento,
- os arquivos CSV de dados de teste. Observação: arquivos são disponibilizados no bucket "automl-video-demo-data" no Cloud Storage.
Antes de usar os dados da solicitação, faça as substituições a seguir:
- input-uri: um bucket do Cloud Storage que contém o arquivo que você quer anotar, incluindo o nome do arquivo. Precisa começar com gs://. Por exemplo:
"inputUris": ["gs://automl-video-demo-data/hmdb_split1.csv"]
- dataset-id: substitua pelo identificador do conjunto de dados do seu conjunto de dados (e não pelo nome de exibição). Por exemplo:
VCN4798585402963263488
- Observação:
- project-number: o número do seu projeto
- location-id: a região do Cloud em que a anotação deve ocorrer. As regiões de nuvem compatíveis são:
us-east1
,us-west1
,europe-west1
easia-east1
. Se nenhuma região for especificada, uma região será determinada com base na localização do arquivo de vídeo.
Método HTTP e URL:
POST https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/datasets/dataset-id:importData
Corpo JSON da solicitação:
{ "inputConfig": { "gcsSource": { "inputUris": input-uri } } }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-number" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
" https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/datasets/dataset-id:importData"
PowerShell
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-number" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri " https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/datasets/dataset-id:importData" | Select-Object -Expand Content
VCN7506374678919774208
.
Ver o status da operação de importação
Consulte o status da operação de importação de dados usando os seguintes comandos curl
ou do PowerShell.
REST
Antes de usar os dados da solicitação, faça as substituições a seguir:
- operation-id: substitua pelo código da operação de importação de dados.
- Observação:
- project-number: o número do seu projeto
- location-id: a região do Cloud em que a anotação deve ocorrer. As regiões de nuvem compatíveis são:
us-east1
,us-west1
,europe-west1
easia-east1
. Se nenhuma região for especificada, uma região será determinada com base na localização do arquivo de vídeo.
Método HTTP e URL:
GET https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id
Para enviar a solicitação, escolha uma destas opções:
curl
execute o seguinte comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-number" \
"https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id"
PowerShell
execute o seguinte comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-number" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id" | Select-Object -Expand Content
done: true
no status da operação sem erros listados, conforme mostrado no exemplo abaixo.
Listar todos os conjuntos de dados
Use os comandos do curl
ou do PowerShell a seguir para receber uma lista dos conjuntos de dados e o número de vídeos de amostra que foram importados para o conjunto de dados.
REST
Antes de usar os dados da solicitação, faça as substituições a seguir:
- project-number: o número do seu projeto
- location-id: a região do Cloud em que a anotação deve ocorrer. As regiões de nuvem compatíveis são:
us-east1
,us-west1
,europe-west1
easia-east1
. Se nenhuma região for especificada, uma região será determinada com base no local do arquivo de vídeo.
Método HTTP e URL:
https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/datasets
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
Treine o modelo
Como lançar uma operação de treinamento de modelo
Depois de criar o conjunto de dados e importar seus dados de treinamento para seu conjunto de dados, você poderá treinar seu modelo.
Treine seu modelo usando os seguintes comandos curl
ou PowerShell.
REST
Antes de usar os dados da solicitação, faça as substituições a seguir:
- dataset-id: o código é o último elemento do nome do conjunto de dados.
Por exemplo, se o nome do conjunto de dados for
projects/434039606874/locations/us-central1/datasets/VCN3104518874390609379
, o ID do modelo seráVCN3104518874390609379
- Observação:
- project-number: o número do seu projeto
- location-id: a região do Cloud em que a anotação deve ocorrer. As regiões de nuvem compatíveis são:
us-east1
,us-west1
,europe-west1
easia-east1
. Se nenhuma região for especificada, uma região será determinada com base na localização do arquivo de vídeo.
Método HTTP e URL:
POST https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/models
Corpo JSON da solicitação:
{ "displayName": "test_model", "dataset_id": "dataset-id", "videoClassificationModelMetadata": {} }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-number" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/models"
PowerShell
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-number" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/models" | Select-Object -Expand Content
{ "name": "projects/project-number/locations/location-id/operations/operation-id", "metadata": { "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata", "progressPercentage": 100, "createTime": "2020-02-27T01:56:28.395640Z", "updateTime": "2020-02-27T02:04:12.336070Z" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.automl.v1beta1.Model", "name": "projects/project-number/locations/location-id/models/operation-id", "createTime": "2020-02-27T02:00:22.329970Z", "videoClassificationModelMetadata": { "trainBudget": "1", "trainCost": "1", "stopReason": "BUDGET_REACHED" }, "displayName": "a_98487760535e48319dd204e6394670" } }
Ver o status da operação de treinamento do modelo
Treine seu modelo usando os seguintes comandos curl
ou PowerShell.
REST
Antes de usar os dados da solicitação, faça as substituições a seguir:
- operation-id: substitua pelo ID da operação de treinamento.
- Observação:
- project-number: o número do seu projeto
- location-id: a região do Cloud em que a anotação deve ocorrer. As regiões de nuvem compatíveis são:
us-east1
,us-west1
,europe-west1
easia-east1
. Se nenhuma região for especificada, uma região será determinada com base na localização do arquivo de vídeo.
Método HTTP e URL:
GET https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id
Para enviar a solicitação, escolha uma destas opções:
curl
execute o seguinte comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-number" \
"https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id"
PowerShell
execute o seguinte comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-number" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id" | Select-Object -Expand Content
done: true
sem erros listados.
Verificar se o modelo está disponível
Após a conclusão da operação de treinamento do modelo, verifique se o modelo está disponível usando os seguintes comandos curl
ou PowerShell para listar os modelos do projeto.
REST
Antes de usar os dados da solicitação, faça as substituições a seguir:
- dataset-id: substitua pelo identificador do conjunto de dados do seu conjunto de dados (e não pelo nome de exibição).
- model-name: substitua por um nome escolhido para o modelo
- Observação:
- project-number: o número do seu projeto
- location-id: a região do Cloud em que a anotação deve ocorrer. As regiões de nuvem compatíveis são:
us-east1
,us-west1
,europe-west1
easia-east1
. Se nenhuma região for especificada, uma região será determinada com base na localização do arquivo de vídeo.
Método HTTP e URL:
GET https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id
Para enviar a solicitação, escolha uma destas opções:
curl
execute o seguinte comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-number" \
"https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id"
PowerShell
execute o seguinte comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-number" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id" | Select-Object -Expand Content
Por exemplo:
VCN1741767155885539328
.
Fazer uma previsão
É possível solicitar anotações (predições) para vídeos com o comando batchPredict
. O comando batchPredict
usa, como entrada, um arquivo CSV armazenado no bucket do Cloud Storage que contém os caminhos para os vídeos a serem anotados, bem como os horários de início e término que identificam o segmento de vídeo a ser anotado. Para este guia de início rápido, o arquivo CSV se chama hmdb_split1_test_gs_predict.csv
.
Execute os seguintes comandos curl
ou PowerShell para fazer uma solicitação de predição em lote (assíncrona).
REST
Antes de usar os dados da solicitação, faça as substituições a seguir:
- input-uri: um bucket do Cloud Storage que contém o arquivo que você quer anotar, incluindo o nome do arquivo. Precisa começar com gs://. Por exemplo:
"inputUris": ["gs://automl-video-demo-data/hmdb_split1_test_gs_predict.csv"]
- output-bucket substitua pelo nome do bucket no Cloud Storage. Por exemplo:
my-project-vcm
- object-id: substitua pelo código da operação de importação de dados.
- Observação:
- project-number: o número do seu projeto
- location-id: a região do Cloud em que a anotação deve ocorrer. As regiões de nuvem compatíveis são:
us-east1
,us-west1
,europe-west1
easia-east1
. Se nenhuma região for especificada, uma região será determinada com base na localização do arquivo de vídeo.
Método HTTP e URL:
POST https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/models/model-id:batchPredict
Corpo JSON da solicitação:
{ "inputConfig": { "gcsSource": { "inputUris": [input-uri] } }, "outputConfig": { "gcsDestination": { "outputUriPrefix": "gs://output-bucket/object-id" } } }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-number" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/models/model-id:batchPredict "
PowerShell
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-number" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/models/model-id:batchPredict " | Select-Object -Expand Content
Você vai receber um ID de operação para sua solicitação de previsão em lote. Por exemplo: VCN926615623331479552
.
Receber status da operação de previsão
É possível consultar o status da operação de predição em lote usando os seguintes comandos curl
ou do PowerShell.
REST
Antes de usar os dados da solicitação, faça as substituições a seguir:
- operation-id: substitua pelo código da operação de importação de dados.
- Observação:
- project-number: o número do seu projeto
- location-id: a região do Cloud em que a anotação deve ocorrer. As regiões de nuvem compatíveis são:
us-east1
,us-west1
,europe-west1
easia-east1
. Se nenhuma região for especificada, uma região será determinada com base na localização do arquivo de vídeo.
Método HTTP e URL:
GET https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id
Para enviar a solicitação, escolha uma destas opções:
curl
execute o seguinte comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-number" \
"https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id"
PowerShell
execute o seguinte comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-number" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id" | Select-Object -Expand Content
done: true
no status da operação sem erros listados, conforme mostrado no exemplo a seguir.
Quando a tarefa de previsão em lotes é concluída, a saída da previsão é armazenada no bucket do Cloud Storage especificado no seu comando. Há um arquivo JSON para cada trecho de vídeo. Por exemplo:
my-video-01.avi.json
{ "inputUris": ["gs://automl-video-demo-data/sample_video.avi"] "segment_classification_annotations": [ { "annotation_spec": { "display_name": "ApplyLipstick", "description": "ApplyLipstick" }, "segments": [ { "segment": { "start_time_offset": { }, "end_time_offset": { "seconds": 4, "nanos": 960000000 } }, "confidence": 0.43253016 }, { "segment": { "start_time_offset": { }, "end_time_offset": { "seconds": 4, "nanos": 960000000 } }, "confidence": 0.56746984 } ], "frames": [ ] } ], "shot_classification_annotations": [ { "annotation_spec": { "display_name": "ApplyLipstick", "description": "ApplyLipstick" }, "segments": [ { "segment": { "start_time_offset": { }, "end_time_offset": { "seconds": 5 } }, "confidence": 0.43253016 }, { "segment": { "start_time_offset": { }, "end_time_offset": { "seconds": 5 } }, "confidence": 0.56746984 } ], "frames": [ ] } ], "one_second_sliding_window_classification_annotations": [ { "annotation_spec": { "display_name": "ApplyLipstick", "description": "ApplyLipstick" }, "segments": [ ], "frames": [ { "time_offset": { "nanos": 800000000 }, "confidence": 0.54533803 }, { "time_offset": { "nanos": 800000000 }, ... "confidence": 0.57945728 }, { "time_offset": { "seconds": 4, "nanos": 300000000 }, "confidence": 0.42054281 } ] } ], "object_annotations": [ ], "error": { "details": [ ] } }
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados nesta página, exclua o projeto do Google Cloud com esses recursos.
Se você não precisa mais do modelo e o respectivo conjunto de dados, é possível excluí-los.
Listar modelos
É possível listar os modelos do projeto, juntamente com os identificadores deles, usando os seguintes comandos curl
ou PowerShell:
REST
Antes de usar os dados da solicitação, faça as substituições a seguir:
- model-name: o nome completo do modelo fornecido pela resposta quando você o criou. O nome completo tem o formato: projects/project-number/locations/location-id/models
- Observação:
- project-number: o número do seu projeto
- location-id: a região do Cloud em que a anotação deve ocorrer. As regiões de nuvem compatíveis são:
us-east1
,us-west1
,europe-west1
easia-east1
. Se nenhuma região for especificada, uma região será determinada com base na localização do arquivo de vídeo.
Método HTTP e URL:
GET https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/models
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
Excluir um modelo
Você pode excluir um modelo usando o comando a seguir.
REST
Antes de usar os dados da solicitação, faça as substituições a seguir:
- model-id: substitua pelo identificador do modelo;
- Observação:
- project-number: o número do seu projeto
- location-id: a região do Cloud em que a anotação deve ocorrer. As regiões de nuvem compatíveis são:
us-east1
,us-west1
,europe-west1
easia-east1
. Se nenhuma região for especificada, uma região será determinada com base na localização do arquivo de vídeo.
Método HTTP e URL:
DELETE https://automl.googleapis.com/v1beta1/projects/project-number/locations/test/models/model-id
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
Listar conjuntos de dados
É possível listar os conjuntos de dados do projeto com os identificadores deles, usando os seguintes comandos curl
ou PowerShell:
REST
Antes de usar os dados da solicitação, faça as substituições a seguir:
- project-number: o número do seu projeto
- location-id: a região do Cloud em que a anotação deve ocorrer. As regiões de nuvem compatíveis são:
us-east1
,us-west1
,europe-west1
easia-east1
. Se nenhuma região for especificada, uma região será determinada com base no local do arquivo de vídeo.
Método HTTP e URL:
https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/datasets
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
Excluir um conjunto de dados
É possível excluir um conjunto de dados usando os seguintes comandos curl
ou do PowerShell.
REST
Antes de usar os dados da solicitação, faça as substituições a seguir:
- dataset-name: o nome completo do conjunto de dados com base na resposta recebida quando você o criou. Ele tem o formato
projects/project-number/locations/location-id/datasets/dataset-id
- project-number: o número do seu projeto
- location-id: a região do Cloud em que a anotação deve ocorrer. As regiões de nuvem compatíveis são:
us-east1
,us-west1
,europe-west1
easia-east1
. Se nenhuma região for especificada, uma região será determinada com base no local do arquivo de vídeo. - dataset-id: o código fornecido quando você criou o conjunto de dados
Método HTTP e URL:
DELETE https://automl.googleapis.com/v1beta1/dataset-name
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
A seguir
- Saiba mais sobre o fluxo de trabalho de classificação.