Compartilhar via


Chamar a API de Previsão

Depois de treinar o seu modelo, você pode testá-lo programaticamente enviando imagens para o ponto de extremidade da API de Previsão. Neste guia, você aprenderá a chamar a API de Previsão para pontuar uma imagem. Você aprenderá as diversas maneiras de configurar o comportamento dessa API para atender às suas necessidades.

Observação

Este documento demonstra o uso da biblioteca de clientes do .NET para C# para enviar uma imagem à API de Previsão. Veja mais informações e exemplos na referência da API de Previsão.

Instalação

Publicar uma iteração treinada

No site da Visão Personalizada, selecione o seu projeto e, em seguida, selecione a guia Desempenho.

Para enviar imagens para a API de Previsão, primeiro você precisa publicar a sua iteração para previsão, o que pode ser feito selecionando Publicar e especificando um nome para a iteração publicada. Isso torna o seu modelo acessível à API de Previsão do recurso de Visão Personalizada do Azure.

Captura de tela mostrando a guia Desempenho, com um retângulo vermelho ao redor do botão Publicar.

Depois que o modelo é publicado com sucesso, o rótulo Publicado aparece ao lado da iteração na barra lateral esquerda e o seu nome aparece na descrição da iteração.

Captura de tela da guia Desempenho, com um retângulo vermelho em torno do rótulo Publicado e o nome da iteração publicada.

Obter a chave de URL e previsão

Depois que o modelo for publicado, você poderá recuperar as informações necessárias selecionando a URL de Previsão. Uma caixa de diálogo é aberta com informações sobre como usar a API de Previsão, incluindo a URL de Previsão e a Chave de Previsão.

Captura de tela da guia Desempenho, com um retângulo vermelho ao redor do botão URL de Previsão.

Captura de tela da guia Desempenho, com um retângulo vermelho em torno do valor da URL de Previsão para usar um arquivo de imagem e o valor de Chave de Previsão.

Enviar dados ao serviço

Este guia pressupõe que você já construiu um objeto CustomVisionPredictionClient chamado predictionClient, com sua chave de previsão da Visão Personalizada e uma URL de ponto de extremidade. Para obter instruções sobre como configurar esse recurso, siga um dos guias de início rápido.

Neste guia, você usa uma imagem local; portanto, baixe uma imagem que você deseje enviar para o seu modelo treinado. O código a seguir solicita que o usuário especifique um caminho local e obtém o fluxo de bytes do arquivo nesse caminho.

Console.Write("Enter image file path: ");
string imageFilePath = Console.ReadLine();
byte[] byteData = GetImageAsByteArray(imageFilePath);

Inclua o seguinte método auxiliar:

private static byte[] GetImageAsByteArray(string imageFilePath)
{
    FileStream fileStream = new FileStream(imageFilePath, FileMode.Open, FileAccess.Read);
    BinaryReader binaryReader = new BinaryReader(fileStream);
    return binaryReader.ReadBytes((int)fileStream.Length);
}

O ClassifyImageAsync usa a ID do projeto e a imagem armazenada localmente e pontua a imagem em relação ao modelo determinado.

// Make a prediction against the new project
Console.WriteLine("Making a prediction:");
var result = predictionApi.ClassifyImageAsync(project.Id, publishedModelName, byteData);

Determinar como processar os dados

Opcionalmente, você pode configurar como o serviço realiza a operação de pontuação escolhendo métodos alternativos. Para obter detalhes, confira o método CustomVisionPredictionClient.

Você pode usar uma versão nonasync do método anterior para simplificar, mas isso pode fazer com que o programa seja bloqueado por um período perceptível de tempo.

Os métodos -WithNoStore exigem que o serviço não mantenha a imagem de previsão após a conclusão da previsão. Normalmente, o serviço retém essas imagens para que você tenha a opção de adicioná-las como dados de treinamento para iterações futuras do seu modelo.

Os métodos -WithHttpMessages retornam a resposta HTTP bruta da chamada à API.

Obter resultados do serviço

O serviço retorna resultados na forma de um objeto ImagePrediction . A propriedade Predictions contém uma lista de objetos PredictionModel, em que cada um representa uma única previsão de objeto. Eles incluem o nome do rótulo e as coordenadas da caixa delimitadora em que o objeto foi detectado na imagem. Seu aplicativo pode analisar esses dados para, por exemplo, exibir a imagem com campos de objeto rotulados em uma tela.

Próxima etapa

Neste guia, você aprendeu a enviar imagens a um classificador/detector de imagem personalizado e receber uma resposta programaticamente com o SDK do C#. Em seguida, saiba como concluir cenários de ponta a ponta com o C# ou comece a usar o SDK de outra linguagem.