Rotular vídeos usando a linha de comando
Neste guia de início rápido, abordamos 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
Crie 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.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como verificar se o faturamento está ativado em um projeto.
-
Ative as APIs AutoML and Cloud Storage.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como verificar se o faturamento está ativado em um projeto.
-
Ative as APIs AutoML and Cloud Storage.
- Instale a ferramenta de linha de comando
gcloud
. - Siga as instruções para criar uma conta de serviço e fazer o download de um arquivo de chave para a conta.
- Defina a variável de ambiente
GOOGLE_APPLICATION_CREDENTIALS
para o caminho até o arquivo de chave da conta de serviço que você salvou quando criou essa conta.export GOOGLE_APPLICATION_CREDENTIALS=KEY_FILE
- 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. - Se você for o proprietário do projeto, adicione sua conta de serviço ao papel do IAM
Editor do AutoML, substituindo SERVICE_ACCOUNT_NAME pelo nome da
nova conta de serviço. Por exemplo,
service-account1@myproject.iam.gserviceaccount.com
.gcloud auth login gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME" \ --role="roles/automl.editor"
- Se você não for proprietário do projeto, peça para ele adicionar seu ID do usuário e sua conta de serviço ao papel do IAM de Editor do AutoML.
Crie um conjunto de dados e importe dados de treinamento
Crie 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 e linha de comando
Antes de usar qualquer um dos dados da solicitação, faça as seguintes substituições:
- 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 chamado request.json
e execute o seguinte comando:
curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-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 chamado request.json
e execute o seguinte comando:
$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
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 e linha de comando
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 qualquer um dos dados da solicitação, faça as seguintes substituições:
- 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 chamado request.json
e execute o seguinte comando:
curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-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 chamado request.json
e execute o seguinte comando:
$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
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 e linha de comando
Antes de usar qualquer um dos dados da solicitação, faça as seguintes substituições:
- 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 application-default print-access-token) \
"https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id"
PowerShell
Execute o seguinte comando:
$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
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 e linha de comando
Antes de usar qualquer um dos dados da solicitação, faça as seguintes substituições:
- 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 e linha de comando
Antes de usar qualquer um dos dados da solicitação, faça as seguintes substituições:
- 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 chamado request.json
e execute o seguinte comando:
curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-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 chamado request.json
e execute o seguinte comando:
$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
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 e linha de comando
Antes de usar qualquer um dos dados da solicitação, faça as seguintes substituições:
- operation-id: substitua pelo ID da sua 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 application-default print-access-token) \
"https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id"
PowerShell
Execute o seguinte comando:
$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
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 e linha de comando
Antes de usar qualquer um dos dados da solicitação, faça as seguintes substituições:
- 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 application-default print-access-token) \
"https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id"
PowerShell
Execute o seguinte comando:
$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
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 e linha de comando
Antes de usar qualquer um dos dados da solicitação, faça as seguintes substituições:
- 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 chamado request.json
e execute o seguinte comando:
curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-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 chamado request.json
e execute o seguinte comando:
$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
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ê receberá um código 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 e linha de comando
Antes de usar qualquer um dos dados da solicitação, faça as seguintes substituições:
- 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 application-default print-access-token) \
"https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id"
PowerShell
Execute o seguinte comando:
$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
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 segmento 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, siga as etapas abaixo.
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 e linha de comando
Antes de usar qualquer um dos dados da solicitação, faça as seguintes substituições:
- 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 e linha de comando
Antes de usar qualquer um dos dados da solicitação, faça as seguintes substituições:
- 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 e linha de comando
Antes de usar qualquer um dos dados da solicitação, faça as seguintes substituições:
- 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 e LINHA DE CMD
Antes de usar qualquer um dos dados da solicitação, faça as seguintes substituições:
- 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.