Detectar rótulos em uma imagem usando a linha de comando

Nesta página, mostramos como enviar três solicitações de detecção e anotação de recursos à API Vision usando a interface REST e o comando curl.

A API Vision facilita a integração das tecnologias de reconhecimento de visão do Google em aplicativos para desenvolvedores. É possível enviar os dados da imagem e os tipos de recursos escolhidos para a API Vision, que retorna uma resposta correspondente com base nos atributos de imagem em que você tem interesse. Para mais informações sobre os tipos de recursos oferecidos, consulte a Lista de todos os recursos da API do Vision.

Antes de começar

  1. Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloud, 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.
  2. Instale a CLI do Google Cloud.

  3. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.

  4. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  5. Crie ou selecione um Google Cloud projeto.

    Funções necessárias para selecionar ou criar um projeto

    • Selecionar um projeto: não é necessário um papel específico do IAM para selecionar um projeto. Você pode escolher qualquer projeto em que tenha recebido um papel.
    • Criar um projeto: para criar um projeto, é necessário ter o papel de Criador de projetos (roles/resourcemanager.projectCreator), que contém a permissão resourcemanager.projects.create. Saiba como conceder papéis.
    • Crie um projeto do Google Cloud :

      gcloud projects create PROJECT_ID

      Substitua PROJECT_ID por um nome para o projeto Google Cloud que você está criando.

    • Selecione o projeto Google Cloud que você criou:

      gcloud config set project PROJECT_ID

      Substitua PROJECT_ID pelo nome do projeto do Google Cloud .

  6. Verifique se o faturamento está ativado para o projeto do Google Cloud .

  7. Ative a API Vision:

    Funções necessárias para ativar APIs

    Para ativar APIs, você precisa da permissão serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão com o papel de Proprietário (roles/owner). Caso contrário, é possível receber essa permissão com o papel de Administrador do Service Usage (roles/serviceusage.serviceUsageAdmin). Saiba como conceder papéis.

    gcloud services enable vision.googleapis.com
  8. Atribua papéis à sua conta de usuário. Execute uma vez o seguinte comando para cada um dos seguintes papéis do IAM: roles/storage.objectViewer

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

    Substitua:

    • PROJECT_ID: o ID do projeto.
    • USER_IDENTIFIER: o identificador da sua conta de usuário . Por exemplo, myemail@example.com.
    • ROLE: o papel do IAM concedido à sua conta de usuário.
  9. Instale a CLI do Google Cloud.

  10. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.

  11. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  12. Crie ou selecione um Google Cloud projeto.

    Funções necessárias para selecionar ou criar um projeto

    • Selecionar um projeto: não é necessário um papel específico do IAM para selecionar um projeto. Você pode escolher qualquer projeto em que tenha recebido um papel.
    • Criar um projeto: para criar um projeto, é necessário ter o papel de Criador de projetos (roles/resourcemanager.projectCreator), que contém a permissão resourcemanager.projects.create. Saiba como conceder papéis.
    • Crie um projeto do Google Cloud :

      gcloud projects create PROJECT_ID

      Substitua PROJECT_ID por um nome para o projeto Google Cloud que você está criando.

    • Selecione o projeto Google Cloud que você criou:

      gcloud config set project PROJECT_ID

      Substitua PROJECT_ID pelo nome do projeto do Google Cloud .

  13. Verifique se o faturamento está ativado para o projeto do Google Cloud .

  14. Ative a API Vision:

    Funções necessárias para ativar APIs

    Para ativar APIs, você precisa da permissão serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão com o papel de Proprietário (roles/owner). Caso contrário, é possível receber essa permissão com o papel de Administrador do Service Usage (roles/serviceusage.serviceUsageAdmin). Saiba como conceder papéis.

    gcloud services enable vision.googleapis.com
  15. Atribua papéis à sua conta de usuário. Execute uma vez o seguinte comando para cada um dos seguintes papéis do IAM: roles/storage.objectViewer

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

    Substitua:

    • PROJECT_ID: o ID do projeto.
    • USER_IDENTIFIER: o identificador da sua conta de usuário . Por exemplo, myemail@example.com.
    • ROLE: o papel do IAM concedido à sua conta de usuário.

Fazer uma solicitação de anotação de imagem

Depois de concluir as etapas em Antes de começar, você pode usar a API Vision para anotar um arquivo de imagem.

Neste exemplo, você usa curl para enviar uma solicitação à API Vision usando a seguinte imagem:

URI do Cloud Storage:

gs://cloud-samples-data/vision/using_curl/shanghai.jpeg

URL HTTPS:

https://console.cloud.google.com/storage/browser/cloud-samples-data/vision/using_curl/shanghai.jpeg

Imagem de uma rua de Xangai.
Crédito da imagem: Steve Long no Unsplash.

Criar a solicitação JSON

O arquivo request.json a seguir demonstra como solicitar três recursos images:annotate e limitar os resultados na resposta.

Crie o arquivo de solicitação JSON com o texto a seguir e salve-o como um arquivo de texto simples request.json no seu diretório de trabalho:

request.json

{
  "requests": [
    {
      "image": {
        "source": {
          "imageUri": "gs://cloud-samples-data/vision/using_curl/shanghai.jpeg"
        }
      },
      "features": [
        {
          "type": "LABEL_DETECTION",
          "maxResults": 3
        },
        {
          "type": "OBJECT_LOCALIZATION",
          "maxResults": 1
        },
        {
          "type": "TEXT_DETECTION",
          "maxResults": 1,
          "model": "builtin/latest"
        }
      ]
    }
  ]
}

Enviar a solicitação

Use curl e o conteúdo do corpo de request.json para enviar a solicitação à API Vision. Digite o seguinte na linha de comando:

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "x-goog-user-project: PROJECT_ID" \
    -H "Content-Type: application/json; charset=utf-8" \
    https://vision.googleapis.com/v1/images:annotate -d @request.json

Interpretar a resposta

Você verá uma resposta JSON semelhante à abaixo.

O corpo JSON da solicitação especificou maxResults para cada tipo de anotação. Consequentemente, será possível observar o seguinte na resposta JSON:

Resultados de detecção de rótulos

  1. Descrição: "People", pontuação: 0,950
  2. Descrição: "Street", pontuação: 0,891
  3. Descrição: Mode of transport, pontuação: 0,890
Imagem de uma rua de Xangai com os resultados da detecção de rótulos.
Crédito da imagem: Steve Long no Unsplash (com anotações).

Resultados da detecção de texto

  • Texto: 牛牛面馆\n
  • Vértices: (x: 159, y: 212), (x: 947, y: 212), (x: 947, y: 354) e (x: 159, y: 354 )
Imagem de uma rua de Xangai com os resultados da detecção de texto.
Crédito da imagem: Steve Long no Unsplash (com anotações).

Resultados da detecção de objetos

  • Nome: Person, pontuação: 0,944
  • Vértices normalizados: (x: 0,260, y: 0,468), (x: 0,407, y: 0,468), (x: 0,407, y: 0,895), (x: 0,260, y: 0,895)
Imagem de uma rua de Xangai com os resultados da detecção de objetos.
Crédito da imagem: Steve Long no Unsplash (com anotações).

Parabéns! Você enviou sua primeira solicitação à API Vision.

Limpeza

Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, exclua o projeto do Google Cloud e os recursos.

Opcional: revogar credenciais da CLI gcloud.

gcloud auth revoke

A seguir