Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Importante
A Microsoft está anunciando a desativação planejada do serviço Azure Custom Vision. A Microsoft fornecerá suporte total para todos os clientes existentes do Azure Custom Vision até 25/09/2028. Durante essa janela de suporte, os clientes são incentivados a começar a planejar e executar sua transição para soluções alternativas. Dependendo do seu caso de uso, recomendamos os seguintes caminhos para a transição:
- Para criar modelos personalizados para classificação de imagem e deteção de objetos, o Azure Machine Learning AutoML oferece a capacidade de treinar ambos os tipos de modelo personalizados usando técnicas clássicas de aprendizado de máquina
- Saiba mais sobre o Azure Machine Learning AutoML e explore como ele pode oferecer suporte para treinamento de modelo personalizado.
A Microsoft também está investindo em soluções baseadas em IA generativa que aumentam a precisão em cenários personalizados usando engenharia de prompt e outras técnicas.
- Para usar modelos generativos, pode usar um dos modelos disponíveis no catálogo de modelos da Foundry e criar a sua própria solução para uma visão personalizada.
- Para uma solução gerida de classificação de imagens, o Azure Content Understanding em Foundry Tools (atualmente em pré-visualização pública) oferece a capacidade de criar fluxos de trabalho personalizados de classificação. Ele também suporta o processamento de dados não estruturados de qualquer tipo (imagem, documentos, áudio, vídeo) e extrair insights estruturados com base em formatos pré-definidos ou definidos pelo usuário.
- Saiba mais sobre os Microsoft Foundry Models e Azure Content Understanding (pré-visualização pública) e explore como podem oferecer caminhos alternativos para as suas necessidades personalizadas.
Para obter orientações mais detalhadas sobre migração, consulte o Guia de Migração da Visão Personalizada do Azure.
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.
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.
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.
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.