Partilhar via


Chamar a API de previsão

Depois de treinar 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 diferentes maneiras de configurar o comportamento dessa API para atender às suas necessidades.

Nota

Este documento demonstra o uso da biblioteca de cliente .NET para C# para enviar uma imagem para a API de previsão. Para obter mais informações e exemplos, consulte a referência da API de previsão.

Configurar

Publique sua iteração treinada

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

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

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

Quando o modelo for publicado com êxito, o rótulo Publicado aparecerá ao lado da iteração na barra lateral esquerda e seu nome aparecerá na descrição da iteração.

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

Obter o URL e a chave de predição

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

Captura de ecrã do separador desempenho, com um retângulo vermelho à volta do botão URL de previsão.

Captura de tela da guia de desempenho, com um retângulo vermelho ao redor do valor de 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 de Visão Personalizada e URL do ponto de extremidade. Para obter instruções sobre como configurar esse recurso, siga um dos inícios rápidos.

Neste guia, você usa uma imagem local, portanto, faça o download de uma imagem que gostaria de enviar para 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 método ClassifyImageAsync usa a ID do projeto e a imagem armazenada localmente e pontua a imagem em relação ao modelo fornecido.

// 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 faz a operação de pontuação escolhendo métodos alternativos. Para obter detalhes, consulte o método CustomVisionPredictionClient.

Você pode usar uma versão não assíncrona do método anterior para simplificar, mas isso pode fazer com que o programa trave por um período de tempo percetível.

Os -WithNoStore métodos exigem que o serviço não retenha 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 futuras iterações do seu modelo.

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

Obter resultados do serviço

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

Próximo passo

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