Rastrear objetos de vídeo 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 rastreamento de objetos do AutoML Video para criar seu conjunto de dados a fim de treinar e usar seu 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
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
Veja a seguir como enviar uma solicitação POST. O exemplo usa o Google Cloud CLI para criar um token de acesso. Para instruções sobre como instalar a CLI gcloud, consulte o Guia de início rápido de rastreamento de objetos do AutoML Video Intelligence.Antes de usar os dados da solicitação, faça as substituições a seguir:
- dataset-name: o nome do conjunto de dados de destino.
Por exemplo,my_dataset_01
- 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", "videoObjectTrackingDatasetMetadata": { } }
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
VOT12345....
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:
- dataset-id: ID do conjunto de dados. Ele é o último elemento do nome do conjunto de dados. Por exemplo:
- nome do conjunto de dados:
projects/project-number/locations/location-id/datasets/3104518874390609379
- ID do conjunto de dados:
3104518874390609379
- nome do conjunto de dados:
- bucket-name: substitua pelo nome do bucket do Cloud Storage em que você armazenou o arquivo CSV da lista de arquivos de treinamento do modelo.
- csv-file-name: substitua pelo nome do arquivo CSV da lista de arquivos de treinamento 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:
POST https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/datasets/dataset-id:importData
Corpo JSON da solicitação:
{ "inputConfig": { "gcsSource": { "inputUris": ["gs://bucket-name/csv-file-name.csv"] } } }
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
VOT7506374678919774208
.
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: o ID da operação de longa duração criada para a solicitação e fornecida na resposta quando você iniciou a operação. Por exemplo,
VOT12345....
- 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, como mostrado no exemplo acima.
- operation-name: o nome da operação conforme retornado pela API de rastreamento de objetos do AutoML Video Intelligence. O nome da operação tem o formato
projects/project-number/locations/location-id/operations/operation-id
.
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 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/datasets
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/datasets "
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/datasets " | Select-Object -Expand Content
VOT3940649673949184000
é o ID da operação de longa duração criada para a solicitação e fornecido na resposta quando você iniciou a operação.
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 personalizado. Treine seu modelo usando o comando curl
ou do PowerShell a seguir.
REST
Antes de usar os dados da solicitação, faça as substituições a seguir:
- dataset-id: o nome do conjunto de dados de destino.
Por exemplo, o nome de exibição
my_dataset_01
. - 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:
POST https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/models
Corpo JSON da solicitação:
{ "datasetId": "dataset-id", "displayName": "model-name", "videoObjectTrackingModelMetadata": {}, }
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
VOT1741767155885539328
.
Ver o status da operação de treinamento do modelo
É possível consultar o status da operação de treinamento de modelo usando os comandos curl
ou do PowerShell a seguir.
REST
Antes de usar os dados da solicitação, faça as substituições a seguir:
- operation-name: o nome da operação conforme
retornado pela API de rastreamento de objetos do AutoML Video Intelligence. O nome da operação tem o formato
projects/project-number/locations/location-id/operations/operation-id
. - 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/operation-name
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/operation-name"
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/operation-name" | Select-Object -Expand Content
done: true
sem
erros listados.
Verificar se o modelo está disponível
Após a operação de treinamento de modelo ser concluída com sucesso, é possível verificar se o modelo está disponível usando o comando a seguir para listar os modelos do seu projeto.
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 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:
Fazer uma previsão
É possível solicitar anotações (predições) para vídeos com o método
batchPredict. O método batchPredict
requer duas entradas:
- um arquivo CSV armazenado no bucket do Cloud Storage que contém os caminhos para os vídeos a serem anotados;
- os horários de início e de término que identificam o segmento de vídeo a ser anotado.
Para este guia de início rápido, use o arquivo CSV chamado traffic_video_batch_predict.csv
.
REST
Antes de usar os dados da solicitação, faça as substituições a seguir:
- model-id: substitua pelo identificador do modelo;
- input-uri: um bucket do Cloud Storage que contém o arquivo que você quer anotar, incluindo o nome do arquivo. É necessário começar com
gs://
.
Exemplo:"inputUris": ["gs://automl-video-demo-data/traffic_videos/traffic_video_batch_predict.csv"],
- output-bucket: substitua por um bucket do Cloud Storage que conterá os resultados da sua previsão.
- object-id: substitua por um nome de objeto que identifique onde armazenar a saída da solicitação de predição no bucket do Cloud Storage. Observação: você precisa ter permissões de gravação no bucket do Cloud Storage.
- 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" } } "params": { "score_threshold": "0.0" } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
Ver o status da operação de prediçã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:
- 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. - operation-id: o ID da operação de longa duração criada para a solicitação e fornecida na resposta quando você iniciou a operação. Por exemplo,
VOT12345....
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
projects/project-number/locations/location-id/operations/operation-id
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. Os arquivos JSON têm um formato semelhante a my-video-01.avi.json, em que a extensão de arquivo .json é anexada ao nome do arquivo original.
{ "inputUris": ["automl-video-demo-data/sample_video.avi"], "object_annotations": [ { "annotation_spec": { "display_name": "Cat", "description": "Cat" }, "confidence": 0.43253016 "frames": [ { "frame": { "time_offset": { "seconds": 4, "nanos": 960000000 }, "normalized_bounding_box": { "x_min": 0.1, "y_min": 0.1, "x_max": 0.8, "y_max": 0.8 } } }, { "frame": { "time_offset": { "seconds": 5, "nanos": 960000000 }, "normalized_bounding_box": { "x_min": 0.2, "y_min": 0.2, "x_max": 0.9, "y_max": 0.9 } } } ], "segment": { "start_time_offset": { "seconds": 4, "nanos": 960000000 }, "end_time_offset": { "seconds": 5, "nanos": 960000000 } } } ], "error": { "details": [ ] } }
Limpeza
Se você não precisa mais do modelo personalizado e do respectivo conjunto de dados, é possível excluí-los.
Excluir um modelo
É possível excluir um modelo usando os seguintes comandos curl
ou do 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 na localização do arquivo de vídeo. - model-id: substitua pelo identificador do modelo.
Método HTTP e URL:
DELETE https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/models/model-id
Para enviar a solicitação, expanda uma destas opções:
Você receberá um código de status bem-sucedido (2xx) e uma resposta vazia.
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:
- 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. - datase-id: substitua pelo identificador do código do conjunto de dados.
Método HTTP e URL:
DELETE https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/datasets/dataset-id
Para enviar a solicitação, expanda uma destas opções:
Você receberá um código de status bem-sucedido (2xx) e uma resposta vazia.