Share via


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
ContextoClassificação da imagem
(precisão top-1, 22 conjuntos de dados)
Deteção
(mAP@50 de objetos, 59 conjuntos de dados)
2 tiros51.4733.3
3 tiros56.7337,0
5 tiros63.0143.4
10 tiros68.9554,0
completo85.2576.6
ContextoClassificação da imagem
(precisão top-1, 22 conjuntos de dados)
Deteção
(mAP@50 de objetos, 59 conjuntos de dados)
2 tiros73.0249.2
3 tiros75.5161.1
5 tiros79.1468.2
10 tiros81.3175.0
completo90.9885.4
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"

Key Type 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:

absolute url

"anotações"

Key Type 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"

Key Type 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.

Category 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 multiclasse: 1 ND
Máximo de # regiões por imagem ND 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 encontrado
  • unknown: 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 nome
  • DatasetInvalidAnnotationUri: "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:

  1. Colete N imagens por classe, onde N as imagens são fáceis de coletar (por exemplo, N=3)

  2. Treine um modelo e teste-o no seu conjunto de avaliação.

  3. 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.

Próximos passos

Criar e treinar um modelo personalizado