Personalização do modelo (versão 4.0 preview)
A personalização do modelo permite treinar um modelo especializado de Análise de Imagem para seu próprio caso de uso. Os modelos personalizados podem fazer a classificação de imagem (as tags se aplicam à imagem inteira) ou a deteção de objetos (as tags se aplicam a áreas específicas da imagem). Depois que seu modelo personalizado é criado e treinado, ele pertence ao seu recurso Visão e você pode chamá-lo usando a API Analisar Imagem.
Implemente a personalização do modelo de forma rápida e fácil seguindo um início rápido:
Importante
Você pode treinar um modelo personalizado usando o serviço Visão Personalizada ou o serviço Análise de Imagem 4.0 com personalização de modelo. A tabela a seguir compara os dois serviços.
Áreas | Serviço de Visão Personalizada | Serviço de Análise de Imagem 4.0 | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Tarefas | Classificação de imagem Deteção de objetos |
Classificação de imagem Deteção de objetos |
||||||||||||||||||||||||||||||||||||
Modelo de base | CNN | Modelo do transformador | ||||||||||||||||||||||||||||||||||||
Etiquetagem | Customvision.ai | Estúdio AML | ||||||||||||||||||||||||||||||||||||
Portal Web | Customvision.ai | Estúdio Visão | ||||||||||||||||||||||||||||||||||||
Bibliotecas | REST, SDK | REST, exemplo de Python | ||||||||||||||||||||||||||||||||||||
Dados mínimos de formação necessários | 15 imagens por categoria | 2-5 imagens por categoria | ||||||||||||||||||||||||||||||||||||
Armazenamento dos dados de preparação | Carregado para o serviço | Conta de armazenamento de blob do cliente | ||||||||||||||||||||||||||||||||||||
Alojamento do modelo | Nuvem e borda | Somente hospedagem na nuvem, hospedagem de contêiner de borda por vir | ||||||||||||||||||||||||||||||||||||
Qualidade da IA |
|
|
||||||||||||||||||||||||||||||||||||
Preços | Preços da Visão Personalizada | Preços da Análise de Imagem |
Componentes do cenário
Os principais componentes de um sistema de personalização de modelo são as imagens de treinamento, o arquivo COCO, o objeto de conjunto de dados e o objeto de modelo.
Imagens de treino
Seu conjunto de imagens de treinamento deve incluir vários exemplos de cada um dos rótulos que você deseja detetar. Você também vai querer coletar algumas imagens extras para testar seu modelo depois que ele for treinado. As imagens precisam ser armazenadas em um contêiner de Armazenamento do Azure para serem acessíveis ao modelo.
Para treinar o seu modelo de forma eficaz, use imagens com variedade visual. Selecione imagens que variam por:
- ângulo da câmara
- iluminação
- Contexto geral
- estilo visual
- sujeito(s) individual(ais/agrupado(s)
- size
- tipo
Além disso, certifique-se de que todas as suas imagens de treinamento atendam aos seguintes critérios:
- A imagem deve ser apresentada nos formatos JPEG, PNG, GIF, BMP, WEBP, ICO, TIFF ou MPO.
- O tamanho do arquivo da imagem deve ser inferior a 20 megabytes (MB).
- As dimensões da imagem devem ser maiores que 50 x 50 pixels e menos de 16.000 x 16.000 pixels.
Ficheiro COCO
O arquivo COCO faz referência a todas as imagens de treinamento e as associa às suas informações de rotulagem. No caso da deteção de objetos, ele especificou as coordenadas da caixa delimitadora de cada tag em cada imagem. Esse arquivo deve estar no formato COCO, que é um tipo específico de arquivo JSON. O arquivo COCO deve ser armazenado no mesmo contêiner de Armazenamento do Azure que as imagens de treinamento.
Gorjeta
Sobre os arquivos COCO
Os arquivos COCO são arquivos JSON com campos obrigatórios específicos: "images"
, "annotations"
e "categories"
. Um arquivo COCO de exemplo terá esta aparência:
{
"images": [
{
"id": 1,
"width": 500,
"height": 828,
"file_name": "0.jpg",
"absolute_url": "https://blobstorage1.blob.core.windows.net/cpgcontainer/0.jpg"
},
{
"id": 2,
"width": 754,
"height": 832,
"file_name": "1.jpg",
"absolute_url": "https://blobstorage1.blob.core.windows.net/cpgcontainer/1.jpg"
},
...
],
"annotations": [
{
"id": 1,
"category_id": 7,
"image_id": 1,
"area": 0.407,
"bbox": [
0.02663142641129032,
0.40691584277841153,
0.9524163571731749,
0.42766634515266866
]
},
{
"id": 2,
"category_id": 9,
"image_id": 2,
"area": 0.27,
"bbox": [
0.11803319477782331,
0.41586723392402375,
0.7765206955096307,
0.3483334397217212
]
},
...
],
"categories": [
{
"id": 1,
"name": "vegall original mixed vegetables"
},
{
"id": 2,
"name": "Amy's organic soups lentil vegetable"
},
{
"id": 3,
"name": "Arrowhead 8oz"
},
...
]
}
Referência de campo do arquivo COCO
Se você estiver gerando seu próprio arquivo COCO do zero, certifique-se de que todos os campos obrigatórios estejam preenchidos com os detalhes corretos. As tabelas a seguir descrevem cada campo em um arquivo COCO:
"imagens"
Chave | Tipo | Description | Necessária? |
---|---|---|---|
id |
integer | ID de imagem único, a partir de 1 | Sim |
width |
integer | Largura da imagem em pixels | Sim |
height |
integer | Altura da imagem em pixels | Sim |
file_name |
string | Um nome exclusivo para a imagem | Sim |
absolute_url ou coco_url |
string | Caminho da imagem como um URI absoluto para um blob em um contêiner de blob. O recurso Visão deve ter permissão para ler os arquivos de anotação e todos os arquivos de imagem referenciados. | Sim |
O valor para absolute_url
pode ser encontrado nas propriedades do seu contêiner de blob:
"anotações"
Chave | Tipo | Description | Necessária? |
---|---|---|---|
id |
integer | ID da anotação | Sim |
category_id |
integer | ID da categoria definida na categories secção |
Sim |
image_id |
integer | ID da imagem | Sim |
area |
integer | Valor de 'Largura' x 'Altura' (terceiro e quarto valores de bbox ) |
Não |
bbox |
lista[float] | Coordenadas relativas da caixa delimitadora (0 a 1), na ordem de 'Esquerda', 'Topo', 'Largura', 'Altura' | Sim |
"categorias"
Chave | Tipo | Description | Necessária? |
---|---|---|---|
id |
integer | ID exclusivo para cada categoria (classe de rótulo). Estes devem estar presentes na annotations secção. |
Sim |
name |
string | Nome da categoria (classe do rótulo) | Sim |
Verificação de arquivos COCO
Você pode usar nosso código de exemplo Python para verificar o formato de um arquivo COCO.
Objeto Dataset
O objeto Dataset é uma estrutura de dados armazenada pelo serviço de Análise de Imagem que faz referência ao arquivo de associação. Você precisa criar um objeto Dataset antes de poder criar e treinar um modelo.
Objeto de modelo
O objeto Model é uma estrutura de dados armazenada pelo serviço de Análise de Imagem que representa um modelo personalizado. Deve estar associado a um conjunto de dados para poder fazer formação inicial. Depois de treinado, você pode consultar seu modelo inserindo seu nome no model-name
parâmetro de consulta da chamada da API Analyze Image.
Limites de quota
A tabela a seguir descreve os limites na escala de seus projetos de modelo personalizado.
Categoria | Classificador de imagem genérico | Detetor de objetos genérico |
---|---|---|
Máximo # horas de formação | 288 (12 dias) | 288 (12 dias) |
Max # imagens de treinamento | 1.000.000 | 200,000 |
Max # imagens de avaliação | 100.000 | 100.000 |
Min # imagens de treinamento por categoria | 2 | 2 |
Máximo de # tags por imagem | 1 | N/A |
Máximo de # regiões por imagem | N/A | 1,000 |
Max # categorias | 2500 | 1,000 |
Min # categorias | 2 | 1 |
Tamanho máximo da imagem (Treinamento) | 20 MB | 20 MB |
Tamanho máximo da imagem (Previsão) | Sincronização: 6 MB, Lote: 20 MB | Sincronização: 6 MB, Lote: 20 MB |
Largura/altura máxima da imagem (Formação) | 10,240 | 10,240 |
Largura/altura mínima da imagem (Previsão) | 50 | 50 |
Regiões disponíveis | Oeste dos EUA 2, Leste dos EUA, Europa Ocidental | Oeste dos EUA 2, Leste dos EUA, Europa Ocidental |
Tipos de imagem aceites | JPG, PNG, BMP, GIF, JPEG | JPG, PNG, BMP, GIF, JPEG |
Perguntas mais frequentes
Por que minha importação de arquivo COCO está falhando ao importar do armazenamento de blob?
Atualmente, a Microsoft está resolvendo um problema que faz com que a importação de arquivos COCO falhe com grandes conjuntos de dados quando iniciada no Vision Studio. Para treinar usando um conjunto de dados grande, é recomendável usar a API REST.
Porque é que a formação demora mais/menos do que o meu orçamento especificado?
O orçamento de treinamento especificado é o tempo de computação calibrado, não o tempo do relógio de parede. Algumas razões comuns para a diferença são listadas:
Orçamento mais longo do que o especificado:
- A Análise de Imagem experimenta um alto tráfego de treinamento e os recursos da GPU podem ser escassos. Seu trabalho pode esperar na fila ou ser colocado em espera durante o treinamento.
- O processo de treinamento de backend esbarrou em falhas inesperadas, o que resultou em novas tentativas de lógica. As execuções falhadas não consomem seu orçamento, mas isso pode levar a um tempo de treinamento mais longo em geral.
- Seus dados são armazenados em uma região diferente do recurso Visão, o que levará a um tempo de transmissão de dados mais longo.
Orçamento mais curto do que o especificado: Os seguintes fatores aceleram o treinamento ao custo de usar mais orçamento em determinado tempo de relógio de parede.
- A Análise de Imagem às vezes treina com várias GPUs, dependendo dos seus dados.
- A Análise de Imagem às vezes treina vários testes de exploração em várias GPUs ao mesmo tempo.
- A Análise de Imagem às vezes usa SKUs de GPU premier (mais rápidas) para treinar.
Porque é que a minha formação falha e o que devo fazer?
A seguir estão algumas razões comuns para o fracasso no treinamento:
diverged
: O treinamento não pode aprender coisas significativas com seus dados. Algumas causas comuns são:- Os dados não são suficientes: fornecer mais dados deve ajudar.
- Os dados são de má qualidade: verifique se as suas imagens são de baixa resolução, proporções extremas ou se as anotações estão erradas.
notEnoughBudget
: Seu orçamento especificado não é suficiente para o tamanho do conjunto de dados e do tipo de modelo que você está treinando. Especifique um orçamento maior.datasetCorrupt
: Normalmente, isso significa que as imagens fornecidas não estão acessíveis ou que o arquivo de anotação está no formato errado.datasetNotFound
: conjunto de dados não pode ser encontradounknown
: Este pode ser um problema de back-end. Entre em contato com o suporte para a investigação.
Quais métricas são usadas para avaliar os modelos?
As seguintes métricas são usadas:
- Classificação da imagem: Precisão Média, Precisão Top 1, Precisão Top 5
- Deteção de objetos: Precisão média @ 30, Precisão média @ 50, Precisão média @ 75
Por que meu registro de conjunto de dados falha?
As respostas da API devem ser suficientemente informativas. Eles são:
DatasetAlreadyExists
: Existe um conjunto de dados com o mesmo nomeDatasetInvalidAnnotationUri
: "Um URI inválido foi fornecido entre os URIs de anotação no momento do registro do conjunto de dados.
Quantas imagens são necessárias para uma qualidade de modelo razoável/boa/melhor?
Embora os modelos Florence tenham grande capacidade de poucas capturas (alcançando um ótimo desempenho do modelo com disponibilidade limitada de dados), em geral, mais dados tornam seu modelo treinado melhor e mais robusto. Alguns cenários exigem poucos dados (como classificar uma maçã contra uma banana), mas outros exigem mais (como detetar 200 tipos de insetos em uma floresta tropical). Isto torna difícil fazer uma única recomendação.
Se o seu orçamento de rotulagem de dados estiver limitado, nosso fluxo de trabalho recomendado é repetir as seguintes etapas:
Colete
N
imagens por classe, ondeN
as imagens são fáceis de coletar (por exemplo,N=3
)Treine um modelo e teste-o no seu conjunto de avaliação.
Se o desempenho do modelo for:
- Bom o suficiente (o desempenho é melhor do que a sua expectativa ou desempenho próximo ao seu experimento anterior com menos dados coletados): pare aqui e use este modelo.
- Não é bom (o desempenho ainda está abaixo da sua expectativa ou melhor do que a sua experiência anterior com menos dados recolhidos a uma margem razoável):
- Colete mais imagens para cada classe — um número fácil de coletar — e volte para a Etapa 2.
- Se você notar que o desempenho não está melhorando mais depois de algumas iterações, pode ser porque:
- Este problema não está bem definido ou é muito difícil. Entre em contato conosco para uma análise caso a caso.
- Os dados de treinamento podem ser de baixa qualidade: verifique se há anotações erradas ou imagens de pixel muito baixo.
Qual o orçamento de formação que devo especificar?
Você deve especificar o limite máximo de orçamento que está disposto a consumir. A Análise de Imagem usa um sistema AutoML em seu backend para experimentar diferentes modelos e receitas de treinamento para encontrar o melhor modelo para seu caso de uso. Quanto mais orçamento for dado, maior a chance de encontrar um modelo melhor.
O sistema AutoML também para automaticamente se concluir que não há necessidade de tentar mais, mesmo que ainda haja orçamento restante. Assim, nem sempre esgota o orçamento especificado. É garantido que você não será cobrado acima do orçamento especificado.
Posso controlar os hiperparâmetros ou usar os meus próprios modelos no treino?
Não, o serviço de personalização de modelo de Análise de Imagem usa um sistema de treinamento AutoML low-code que lida com a pesquisa de hiperparâmetros e a seleção de modelo base no back-end.
Posso exportar o meu modelo após a formação?
A API de previsão só é suportada através do serviço de nuvem.
Por que a avaliação falha no meu modelo de deteção de objetos?
Abaixo estão as possíveis razões:
internalServerError
: Ocorreu um erro desconhecido. Tente novamente mais tarde.modelNotFound
: O modelo especificado não foi encontrado.datasetNotFound
: O conjunto de dados especificado não foi encontrado.datasetAnnotationsInvalid
: Ocorreu um erro ao tentar baixar ou analisar as anotações de verdade básicas associadas ao conjunto de dados de teste.datasetEmpty
: O conjunto de dados do teste não continha nenhuma anotação de "verdade fundamental".
Qual é a latência esperada para previsões com modelos personalizados?
Não recomendamos o uso de modelos personalizados para ambientes críticos de negócios devido à alta latência potencial. Quando os clientes treinam modelos personalizados no Vision Studio, esses modelos personalizados pertencem ao recurso Azure AI Vision no qual foram treinados, e o cliente pode fazer chamadas para esses modelos usando a API Analisar Imagem . Quando eles fazem essas chamadas, o modelo personalizado é carregado na memória e a infraestrutura de previsão é inicializada. Enquanto isso acontece, os clientes podem experimentar latência maior do que o esperado para receber resultados de previsão.
Privacidade e segurança dos dados
Como acontece com todos os serviços de IA do Azure, os desenvolvedores que usam a personalização do modelo de Análise de Imagem devem estar cientes das políticas da Microsoft sobre dados do cliente. Consulte a página de serviços de IA do Azure na Central de Confiabilidade da Microsoft para saber mais.