Guia de início rápido: como usar a linha de comando

Neste guia de início rápido, abordamos os seguintes processos:

  • como copiar um conjunto de vídeo para o Google Cloud Storage
  • como criar arquivos CSV que listam vídeos e os respectivos rótulos
  • Como usar o rastreamento de objetos do AutoML Video Intelligence para criar seu conjunto de dados, além de treinar e usar o modelo.

Antes de começar

Criar o projeto

  1. Faça login na sua Conta do Google.

    Se você ainda não tiver uma, inscreva-se.

  2. No Console do Cloud, na página de seletor de projetos, selecione ou crie um projeto do Cloud.

    Acesse a página do seletor de projetos

  3. Verifique se a cobrança está ativada para o seu projeto do Google Cloud. Saiba como confirmar se a cobrança está ativada para o seu projeto.

  4. Ative as APIs AutoML and Cloud Storage.

    Ative as APIs

  5. Instale a ferramenta de linha de comando gcloud.
  6. Siga as instruções para criar uma conta de serviço e fazer o download de um arquivo de chave para a conta.
  7. 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
  8. Defina a variável de ambiente PROJECT_ID como seu ID do projeto.
    export PROJECT_ID=your-project-id
    As chamadas de API AutoML e os nomes dos recursos incluem seu código do projeto. A variável de ambiente PROJECT_ID é uma maneira conveniente de especificar o ID.
  9. Se você for proprietário do projeto, adicione a conta de serviço ao papel do IAM de 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"
    
  10. 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.
  11. Verifique se o projeto recebeu permissão para acessar o EAP.

    Para fazer isso, faça uma chamada à API AutoML. Por exemplo, tente criar um conjunto de dados. Se você receber um erro de permissão, entre em contato com o Google para adicionar seu projeto ao EAP. Para outros erros, como um erro informando que a API não está ativada, revise as etapas deste tópico e verifique se todas elas foram executadas.

Crie um conjunto de dados e importe dados de treinamento

Crie um conjunto de dados

Decida um nome para o conjunto de dados e use o seguinte comando curl para criar um novo conjunto de dados com esse nome.

O comando curl usa gcloud auth application-default print-access-token para receber um token de acesso para uma conta de serviço que foi configurada anteriormente no tópico. O caminho para o arquivo-chave da conta de serviço é armazenado na variável ambiente GOOGLE_APPLICATION_CREDENTIALS.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/datasets -d '{
    "displayName": "your-dataset-name",
    "videoObjectTrackingDatasetMetadata": { }
}'

Você receberá uma resposta que contenha o código do conjunto de dados para seu novo conjunto de dados. Por exemplo: VOT4798585402963263488.

{
  "name": "projects/my-project/locations/us-central1/datasets/VOT4798585402963263488",
  "displayName": "my_dataset_01",
  "createTime": "2018-10-18T21:18:13.975412Z",
  "videoObjectTrackingDatasetMetadata": {}
}

Importar dados de treinamento

Importe os dados de treinamento de amostra para seu conjunto de dados. O comando importData recebe como entrada o caminho para o CSV que contém caminhos para os arquivos CSV de dados de treinamento e de teste. Esses arquivos são disponibilizados no intervalo "automl-video-demo-data" no Google Cloud Storage.

  • Substitua your-dataset-id pelo identificador do seu conjunto de dados, e não pelo nome de exibição. Por exemplo: VOT4798585402963263488.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/datasets/your-dataset-id:importData \
-d '{
  "inputConfig": {
    "gcsSource": {
       "inputUris": ["gs://automl-video-datasets/youtube_8m_videos_animal_tiny.csv"]
     }
  }
}'

Você receberá um código da operação de importação de dados. Por exemplo: VOT7506374678919774208.

{
  "name": "projects/915378992997/locations/us-central1/operations/VOT7506374678919774208",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
    "createTime": "2018-10-18T21:23:15.181451Z",
    "updateTime": "2018-10-18T21:23:15.181451Z",
    "importDataDetails": {}
  }
}

Como ver o status da operação de importação

Consulte o status da operação de importação de dados usando o seguinte comando curl.

  • Substitua your-operation-id pelo código da operação de importação de dados.
curl -X GET -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/operations/your-operation-id

A operação de importação pode levar algum tempo para ser concluída. Quando a tarefa de importação for concluída, você verá done: true no status da operação sem erros listados, conforme o exemplo a seguir.

{
  "name": "projects/915378992997/locations/us-central1/operations/VOT7506374678919774208",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
    "createTime": "2018-10-18T21:23:15.181451Z",
    "updateTime": "2018-10-18T21:26:10.354502Z",
    "importDataDetails": {}
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.protobuf.Empty"
  }
}

Como receber a lista de conjuntos de dados

Você pode receber sua lista de conjuntos de dados e o número de vídeos de amostra que foram importados para o conjunto de dados usando o comando a seguir.

curl \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/datasets

O resultado será semelhante a:

{
  "datasets": [
    {
      "name": "projects/my-project/locations/us-central1/datasets/VOT3940649673949184000",
      "displayName": "my_dataset_01",
      "createTime": "2018-10-18T21:18:13.975412Z",
      "exampleCount": 5097,
      "videoObjectTrackingDatasetMetadata": {}
    }
  ]
}

Treinar 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 seguinte comando curl.

  • Substitua your-dataset-id pelo identificador do seu conjunto de dados, e não pelo nome de exibição.

  • Substitua your-model-name por um nome que você escolheu para o modelo.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
https:/automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/models -d '{
  "datasetId": "your-dataset-id",
  "displayName": "your-model-name",
  "videoObjectTrackingModelMetadata": {},
}'

Você receberá um código da operação de importação de dados. Por exemplo: VOT1741767155885539328.

{
  "name": "projects/915378992997/locations/us-central1/operations/VOT1741767155885539328",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
    "createTime": "2018-10-18T21:32:06.730258Z",
    "updateTime": "2018-10-18T21:32:06.730258Z",
    "createModelDetails": {}
  }
}

Ver o status da operação de treinamento do modelo

É possível consultar o status da operação de treinamento de modelo usando o seguinte comando curl.

  • Substitua your-operation-id pelo código da operação de treinamento.
curl -X GET -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/operations/your-operation-id

Um código semelhante a este será exibido. Quando a operação estiver concluída, done: true será exibido sem lista de erros.

{
  "name": "projects/915378992997/locations/us-central1/operations/VOT1741767155885539328",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
    "createTime": "2018-10-18T21:32:06.730258Z",
    "updateTime": "2018-10-18T21:32:06.730258Z",
    "createModelDetails": {}
  }
}

Verificar que o modelo está disponível

Após a operação de treinamento de modelo ser concluída com sucesso, você pode verificar que o modelo está disponível usando o comando a seguir para listar os modelos do seu projeto.

curl -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/models

O resultado será semelhante a:

{
  "datasets": [
    {
      "name": "projects/my-project/locations/us-central1/datasets/VOT3940649673949184000",
      "displayName": "my_model_01",
      "createTime": "2018-10-18T21:18:13.975412Z",
      "exampleCount": 5097,
      "videoObjectTrackingDatasetMetadata": {}
    }
  ]
}

Fazer uma predição

Você pode solicitar anotações (predições) para vídeos com o comando batchPredict. O comando batchPredict recebe, como entrada, um arquivo CSV armazenado no intervalo do Google Cloud Storage que contém os caminhos para os vídeos para anotar, e os horários de início e término que identificam o segmento de vídeo para anotar. Para este guia de início rápido, este arquivo CSV é nomeado hmdb_split1_train_gs.csv.

Execute o comando a seguir para fazer uma solicitação de predição em lote (assíncrona).

  • Substitua your-model-id pelo identificador do modelo.

  • Substitua your-output-bucket pelo intervalo do Google Cloud Storage que conterá os resultados da predição.

  • Substitua your-object-id por um nome de objeto que identifica onde armazenar a saída da sua solicitação de predição no intervalo do Google Cloud Storage. Você precisa ter permissões de gravação no intervalo do Google Cloud Storage.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/models/your-model-id:batchPredict -d '{
  "inputConfig": {
    "gcsSource": {
      "inputUris": ["gs://automl-video-datasets/youtube_8m_videos_animal_batchpredict.csv"]
    }
  },
  "outputConfig": {
    "gcsDestination": {
      "outputUriPrefix": "gs://your-output-bucket/your-object-id"
    }
  }
}'

Você receberá um código de operação para sua solicitação de predição em lote. Por exemplo: VOT926615623331479552.

{
  "name": "projects/915378992997/locations/us-central1/operations/VOT926615623331479552",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
    "createTime": "2018-10-19T21:22:27.003694Z",
    "updateTime": "2018-10-19T21:22:27.003694Z",
    "batchPredictDetails": {
      "inputConfig": {
        "gcsSource": {
          "inputUris": [
            "gs://automl-video-datasets/youtube_8m_videos_animal_batchpredict.csv"
          ]
        }
      },
      "outputInfo": {
        "gcsOutputDirectory": "${YOUR_BUCKET}/prediction-test_model_01-2019-01-11T21:39:19.684Z"
      }
    }
  }
}

Ver o status da operação de predição

Consulte o status da operação de predição em lote com o seguinte comando curl.

  • Substitua your-operation-id pelo código da operação de predição em lote.
curl -X GET -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/operations/your-operation-id

Dependendo do número de vídeos especificado no arquivo CSV, a tarefa de predição em lote pode levar algum tempo para ser concluída. Quando a tarefa estiver concluída, você verá done: true no status da operação sem erros listados, conforme o exemplo a seguir.

{
  "name": "projects/915378992997/locations/us-central1/operations/VOT926615623331479552",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
    "createTime": "2018-10-18T21:23:15.181451Z",
    "updateTime": "2018-10-18T21:26:10.354502Z",
    "importDataDetails": {}
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.protobuf.Empty"
  }
}

Quando a tarefa de predição em lotes é concluída, a saída da predição é armazenada no intervalo do Google Cloud Storage especificado no seu comando. Há um arquivo JSON para cada segmento de vídeo. Exemplo:

my-video-01.avi.json

{
  "input_uri": "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": [ ]
  }
}

Limpar

Se você não precisa mais do modelo personalizado e o respectivo conjunto de dados, é possível excluí-los.

Listar modelos

Você pode listar os modelos do projeto, junto seus identificadores, usando o comando a seguir:

curl -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/models

Excluir um modelo

Você pode excluir um modelo usando o comando a seguir.

  • Substitua your-model-id pelo identificador do modelo.
curl -X DELETE -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/models/your-model-id

Listar conjuntos de dados

Você pode listar os conjuntos de dados do projeto, junto com os identificadores, usando o comando a seguir:

curl -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/datasets

Excluir um conjunto de dados

Você pode excluir um conjunto de dados usando o comando a seguir.

  • Substitua your-dataset-id pelo identificador do modelo.
curl -X DELETE -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/datasets/your-dataset-id