Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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.
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.
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.
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.