Como rastrear objetos em vídeos
Depois de criar (treinar) um modelo, é possível solicitar a previsão de
um ou mais vídeos usando o método
batchPredict
. Você fornece um arquivo CSV com uma lista de vídeos para o método batchPredict
.
O método batchPredict
anota vídeos detectando e rastreando
objetos que seu modelo prevê.
A vida útil máxima de um modelo é de dois anos. Após dois anos, você precisa criar e treinar um modelo para continuar anotando seus vídeos.
Exemplo de predição
Para solicitar um lote de predições do rastreamento de objetos de vídeo do AutoML, crie um arquivo CSV que liste os caminhos do Cloud Storage para os vídeos que você quer anotar. Também é possível especificar um horário de início e término para informar ao rastreamento de objetos de vídeo do AutoML para anotar somente um segmento do vídeo. O horário de início precisa ser zero ou superior e precisa ser anterior ao horário de término. A hora final precisa ser maior que a hora inicial e menor ou igual à duração do vídeo.
O exemplo a seguir mostra como anotar um vídeo inteiro ao especificar um horário de início e término como 0,inf
.
gs://my-videos-vcm/cow_video.mp4,0,inf gs://my-videos-vcm/bird_video.mp4,10.00000,15.50000
Você também precisa especificar um caminho de arquivo de saída em que o rastreamento de objetos de vídeo do AutoML precisa gravar os resultados das predições do seu modelo. Esse caminho precisa ser um bucket e um objeto do Cloud Storage em que você tenha permissões de gravação.
Cada vídeo pode ter até 3 horas de duração, com um tamanho máximo de arquivo de 50 GB. O rastreamento de objetos do AutoML Video pode gerar predições para aproximadamente 100 horas de vídeo em 12 horas de processamento.
IU da Web
- Abra a IU de rastreamento de objetos do AutoML Video.
- Na lista exibida, clique no modelo que você quer usar.
- Na guia Testar e usar do modelo, faça o seguinte:
- Em Testar seu modelo, selecione um arquivo CSV que será usado na previsão. No arquivo CSV, é necessário fornecer uma lista de vídeos que você quer anotar.
Ainda em Teste seu modelo, selecione um diretório no bucket do Cloud Storage para receber os resultados da anotação.
Recomendamos que você crie uma pasta específica no bucket do Cloud Storage para armazenar os resultados da anotação.
- Clique em Receber predição.
O processo para receber predições leva algum tempo, dependendo do número de vídeos que você quer anotar.
Quando o processo é concluído, os resultados aparecem na página do modelo em Predições recentes. Para ver os resultados, faça o seguinte:
- Em Predições recentes na coluna Predições, clique em Exibir na predição que você quer examinar.
- Em Vídeo, selecione o nome do vídeo com os resultados que você quer ver.
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- model-id: substitua pelo ID do seu modelo. Ele é o último elemento no nome do modelo. Por exemplo, se o nome do seu modelo for
projects/project-number/locations/location-id/models/VOT6312181905852727296
, o ID do seu modelo seráVOT6312181905852727296
. - request-id: atribua qualquer valor digital a este campo.
- Substitua bucket-name pelo nome do bucket no Cloud Storage. Por exemplo,
my-project-vcm
. - input-file: substitua pelo nome do arquivo CSV que identifica os vídeos a serem anotados.
- output-storage-path: substitua pelo caminho para o
intervalo do Cloud Storage em que os resultados das previsões serão armazenados.
O rastreamento de objetos de vídeo do AutoML cria uma subpasta para os resultados
nesse caminho usando o seguinte formato:
prediction-model_name-timestamp
. A subpasta conterá um arquivo de predição para cada vídeo na solicitação em lote. Você precisa ter permissões de gravação nesse caminho. - 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:
{ "request_id": "request-id", "inputConfig": { "gcsSource": { "inputUris": ["gs://bucket-name/input-file.csv"] } }, "outputConfig": { "gcsDestination": { "outputUriPrefix": "gs://output-storage-path" } }, "params": { "score_threshold": "0.0" } }
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
VOT1741767155885539328
.
Java
Para autenticar no AutoML Video Object Tracking, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para autenticar no AutoML Video Object Tracking, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para autenticar no AutoML Video Object Tracking, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
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 abaixo, 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 trecho 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": [ ] } }