Amazon Lookout para Visão fornece um serviço de detecção de anomalias baseado em aprendizado de máquina (ML) para identificar imagens normais (ou seja, imagens de objetos sem defeitos) vs imagens anômalas (ou seja, imagens de objetos de defeitos), tipos de anomalias (por exemplo, falta de peça) e a localização dessas anomalias. Portanto, o Lookout for Vision é popular entre os clientes que buscam soluções automatizadas para inspeção de qualidade industrial (por exemplo, detecção de produtos anormais). No entanto, os conjuntos de dados dos clientes geralmente enfrentam dois problemas:
- O número de imagens com anomalias pode ser muito baixo e pode não atingir o mínimo de anomalias/defeitos imposto pelo Lookout for Vision (~20).
- As imagens normais podem não ter diversidade suficiente e podem resultar na falha do modelo quando as condições ambientais, como a iluminação, mudam na produção
Para superar esses problemas, este post apresenta um pipeline de aumento de imagem que visa ambos os problemas: Ele fornece uma maneira de gerar imagens anômalas sintéticas removendo objetos em imagens e gera imagens normais adicionais introduzindo aumento controlado, como ruído gaussiano, matiz, saturação, pixel escala de valor, etc. Usamos o imagem biblioteca para introduzir aumento para gerar imagens anômalas e normais adicionais para o segundo problema. Nós usamos Verdade fundamental do Amazon Sagemaker para gerar máscaras de remoção de objetos e o Lama algoritmo para remover objetos para o primeiro problema usando técnicas de pintura interna de imagens (remoção de objetos).
O restante do post está organizado da seguinte forma. Na Seção 3, apresentamos o pipeline de aumento de imagem para imagens normais. Na Seção 4, apresentamos o pipeline de aumento de imagem para imagens anormais (também conhecidas como geração de defeitos sintéticos). A Seção 5 ilustra os resultados do treinamento Lookout for Vision usando o conjunto de dados aumentado. A Seção 6 demonstra como o modelo Lookout for Vision treinado em dados sintéticos funciona em relação a defeitos reais. Na Seção 7, falamos sobre estimativa de custo para esta solução. Todo o código que usamos para este post pode ser acessado SUA PARTICIPAÇÃO FAZ A DIFERENÇA.
1. Visão geral da solução
Diagrama ML
Veja a seguir o diagrama do pipeline de aumento de imagem proposto para o treinamento do modelo de localização de anomalias Lookout for Vision:
O diagrama acima começa coletando uma série de imagens (etapa 1). Aumentamos o conjunto de dados aumentando as imagens normais (etapa 3) e usando algoritmos de remoção de objetos (etapas 2, 5-6). Em seguida, empacotamos os dados em um formato que pode ser consumido pelo Amazon Lookout for Vision (etapas 7 a 8). Por fim, na etapa 9, usamos os dados empacotados para treinar um modelo de localização do Lookout for Vision.
Esse pipeline de aumento de imagem oferece aos clientes flexibilidade para gerar defeitos sintéticos no conjunto de dados de amostra limitado, além de adicionar mais quantidade e variedade a imagens normais. Isso aumentaria o desempenho do serviço Lookout for Vision, resolvendo o problema de falta de dados do cliente e tornando o processo de inspeção de qualidade automatizado mais suave.
2. Preparação de dados
Daqui até o final do post, usamos o public FICS-PCB: Um Conjunto de Dados de Imagem Multimodal para Inspeção Visual de Placa de Circuito Impresso Automatizado conjunto de dados licenciado sob um Licença Creative Commons Atribuição 4.0 Internacional (CC BY 4.0) para ilustrar o pipeline de aumento de imagem e o consequente treinamento e teste do Lookout for Vision. Este conjunto de dados foi projetado para oferecer suporte à avaliação de sistemas automatizados de inspeção visual de PCB. Ele foi coletado no laboratório SeCurity and AssuraNce (SCAN) da Universidade da Flórida. Ele pode ser acessado SUA PARTICIPAÇÃO FAZ A DIFERENÇA.
Começamos com a hipótese de que o cliente fornece apenas uma única imagem normal de uma placa PCB (uma amostra de PCB s10) como conjunto de dados. Ele pode ser visto a seguir:
3. Aumento de imagem para imagens normais
O serviço Lookout for Vision requer pelo menos 20 imagens normais e 20 anomalias por tipo de defeito. Como há apenas uma imagem normal dos dados de amostra, devemos gerar mais imagens normais usando técnicas de aumento de imagem. Do ponto de vista do ML, alimentar várias transformações de imagem usando diferentes técnicas de aumento pode melhorar a precisão e a robustez do modelo.
Vamos usar imagem para aumento de imagem de imagens normais. Imgaug é um pacote python de código aberto que permite aumentar imagens em experimentos de ML.
Primeiro vamos instalar o imagem biblioteca em um Amazon Sage Maker notebook.
Em seguida, podemos instalar o pacote python chamado 'IPyPlot'.
Em seguida, realizamos o aumento da imagem original usando transformações, incluindo GammaContrast
, SigmoidContrast
e LinearContrast
, e adicionando ruído gaussiano na imagem.
Como precisamos de pelo menos 20 imagens normais, e quanto mais, melhor, geramos 10 imagens aumentadas para cada uma das 4 transformações mostradas acima como nosso conjunto de dados de imagem normal. No futuro, planejamos também transformar as imagens para serem posicionadas em diferentes locais e diferentes ângulos para que o modelo treinado seja menos sensível ao posicionamento do objeto em relação à câmera fixa.
4. Geração de defeitos sintéticos para aumento de imagens anormais
Nesta seção, apresentamos um pipeline sintético de geração de defeitos para aumentar o número de imagens com anomalias no conjunto de dados. Observe que, ao contrário da seção anterior, onde criamos novas amostras normais a partir de amostras normais existentes, aqui criamos novas imagens de anomalias a partir de amostras normais. Este é um recurso atraente para clientes que não possuem esse tipo de imagem em seus conjuntos de dados, por exemplo, removendo um componente da placa PCB normal. Esse pipeline de geração de defeitos sintéticos tem três etapas: primeiro, geramos máscaras sintéticas a partir de imagens de origem (normais) usando o Amazon SageMaker Ground Truth. Nesta postagem, focamos em um tipo de defeito específico: componente ausente. Essa geração de máscara fornece uma imagem de máscara e um arquivo de manifesto. Em segundo lugar, o arquivo de manifesto deve ser modificado e convertido em um arquivo de entrada para um terminal SageMaker. E, terceiro, o arquivo de entrada é inserido em um endpoint SageMaker de remoção de objeto responsável por remover as partes da imagem normal indicadas pela máscara. Este endpoint fornece a imagem anormal resultante.
4.1 Gerar máscaras de defeitos sintéticos usando o Amazon SageMaker Ground Truth
Amazon Sagemaker Ground Truth para rotulagem de dados
O Amazon SageMaker Ground Truth é um serviço de rotulagem de dados que facilita rotular dados e oferece a opção de usar anotadores humanos por meio de Amazon Mechanical Turk, fornecedores terceirizados ou sua própria força de trabalho privada. você pode seguir Neste tutorial para configurar um trabalho de rotulagem.
Nesta seção, mostraremos como usamos Verdade no solo do Amazon SageMaker para marcar “componentes” específicos em imagens normais a serem removidos na próxima etapa. Observe que uma contribuição importante desta postagem é que não usamos o Amazon SageMaker Ground Truth da maneira tradicional (ou seja, para rotular imagens de treinamento). Aqui, usamos para gerar uma máscara para futura remoção em imagens normais. Essas remoções em imagens normais irão gerar os defeitos sintéticos.
Para o propósito desta postagem, em nosso trabalho de rotulagem, removeremos artificialmente até três componentes da placa PCB: IC, resistor1 e resistor2. Depois de inserir o trabalho de rotulagem como rotulador, você pode selecionar o nome da etiqueta e desenhar uma máscara de qualquer formato ao redor do componente que deseja remover da imagem como um defeito sintético. Observe que você não pode incluir '_' no nome do rótulo para este experimento, pois usamos '_' para separar metadados diferentes no nome do defeito posteriormente no código.
Na figura a seguir, desenhamos uma máscara verde ao redor do CI (Circuito Integrado), uma máscara azul ao redor do resistor 1 e uma máscara laranja ao redor do resistor 2.
Depois de selecionarmos o enviar botão, o Amazon SageMaker Ground Truth gerará uma máscara de saída com fundo branco e um arquivo de manifesto da seguinte forma:
Observe que até agora não geramos nenhuma imagem anormal. Acabamos de marcar os três componentes que serão removidos artificialmente e cuja remoção gerará imagens anormais. Posteriormente, usaremos (1) a imagem de máscara acima e (2) as informações do arquivo de manifesto como entradas para o pipeline de geração de imagem anormal. A próxima seção mostra como preparar a entrada para o terminal SageMaker.
4.2 Preparar a entrada para o endpoint do SageMaker
Transforme o manifesto do Amazon SageMaker Ground Truth em um arquivo de entrada de endpoint do SageMaker
Primeiro, montamos um Serviço de armazenamento simples da Amazon (Amazon S3) bucket para armazenar todas as entradas e saídas do pipeline de aumento de imagem. No post, usamos um bucket S3 chamado qualityinspection
. Em seguida, geramos todas as imagens normais aumentadas e as carregamos neste balde S3.
Em seguida, baixamos a máscara do Amazon SageMaker Ground Truth e a carregamos em uma pasta chamada 'mask' nesse bucket do S3.
Depois disso, baixamos o arquivo de manifesto do trabalho de rotulagem do Amazon SageMaker Ground Truth e o lemos como linhas json.
Por fim, geramos um dicionário de entrada que registra a localização S3 da imagem de entrada, a localização da máscara, as informações da máscara etc., salvamos como arquivo txt e, em seguida, carregamos na pasta 'input' do bucket S3 de destino.
O seguinte é um arquivo de entrada de amostra:
4.3 Criar endpoint assíncrono do SageMaker para gerar defeitos sintéticos com componentes ausentes
4.3.1 Modelo LaMa
Para remover componentes da imagem original, estamos usando um modelo PyTorch de código aberto chamado LaMa de LaMa: pintura interna de máscara grande com resolução robusta e convoluções de Fourier. É um modelo de pintura em máscara grande com resolução robusta com convoluções de Fourier desenvolvido pela Samsung AI. As entradas para o modelo são uma imagem e uma máscara em preto e branco e a saída é uma imagem com os objetos dentro da máscara removidos. Usamos o Amazon SageMaker Ground Truth para criar a máscara original e, em seguida, transformá-la em uma máscara em preto e branco, conforme necessário. A aplicação do modelo LaMa é demonstrada da seguinte forma:
4.3.2 Introdução à inferência assíncrona do Amazon SageMaker
Inferência assíncrona do Amazon SageMaker é uma nova opção de inferência em Amazon Sage Maker que enfileira as solicitações recebidas e as processa de forma assíncrona. A inferência assíncrona permite que os usuários economizem custos dimensionando automaticamente a contagem de instâncias para zero quando não há solicitações para processar. Isso significa que você paga apenas quando seu endpoint está processando solicitações. A nova opção de inferência assíncrona é ideal para cargas de trabalho em que os tamanhos de solicitação são grandes (até 1 GB) e os tempos de processamento de inferência são da ordem de minutos. O código para implantar e invocar o endpoint é SUA PARTICIPAÇÃO FAZ A DIFERENÇA.
4.3.3 Implantação de endpoint
Para implantar o endpoint assíncrono, primeiro devemos obter o Papel do IAM e configurar algumas variáveis de ambiente.
Como mencionamos antes, estamos usando o modelo PyTorch de código aberto LaMa: pintura interna de máscara grande com resolução robusta e convoluções de Fourier e o modelo pré-treinado foi carregado para s3://qualityinspection/model/big-lama.tar.gz
. O image_uri
aponta para um contêiner docker com a estrutura necessária e as versões do python.
Em seguida, devemos especificar parâmetros de configuração específicos de inferência assíncrona adicionais ao criar a configuração do terminal.
Em seguida, implantamos o endpoint em uma instância ml.g4dn.xlarge executando o seguinte código:
Após aproximadamente 6 a 8 minutos, o endpoint é criado com sucesso e aparecerá no console do SageMaker.
4.3.4 Chamar o endpoint
Em seguida, usamos o arquivo txt de entrada que geramos anteriormente como entrada do endpoint e invocamos o endpoint usando o seguinte código:
O comando acima terminará a execução imediatamente. No entanto, a inferência continuará por vários minutos até concluir todas as tarefas e retornar todas as saídas no bucket do S3.
4.3.5 Verifique o resultado da inferência do endpoint
Depois de selecionar o endpoint, você verá a sessão Monitor. Selecione 'Exibir logs' para verificar os resultados da inferência no console.
Dois registros de log serão exibidos nos fluxos de log. Aquele chamado data-log
mostrará o resultado final da inferência, enquanto o outro registro de log mostrará os detalhes da inferência, que geralmente é usado para fins de depuração.
Se a solicitação de inferência for bem-sucedida, você verá a mensagem: Inference request succeeded.
no registro de dados e também obter informações da latência total do modelo, tempo total do processo, etc. na mensagem. Se a inferência falhar, verifique o outro log para depurar. Você também pode verificar o resultado pesquisando o status da solicitação de inferência. Saiba mais sobre a inferência assíncrona do Amazon SageMaker SUA PARTICIPAÇÃO FAZ A DIFERENÇA.
4.3.6 Gerando defeitos sintéticos com componentes ausentes usando o endpoint
Concluiremos quatro tarefas no endpoint:
- O serviço de localização de anomalias Lookout for Vision requer um defeito por imagem no conjunto de dados de treinamento para otimizar o desempenho do modelo. Portanto, devemos separar as máscaras para diferentes defeitos no endpoint por filtragem de cores.
- Divida o conjunto de dados de treinamento/teste para atender ao seguinte requisito:
- pelo menos 10 imagens normais e 10 anomalias para conjunto de dados de trem
- um defeito/imagem no conjunto de dados do trem
- pelo menos 10 imagens normais e 10 anomalias para conjunto de dados de teste
- vários defeitos por imagem são permitidos para o conjunto de dados de teste
- Gere defeitos sintéticos e carregue-os nos locais de destino do S3.
Geramos um defeito por imagem e mais de 20 defeitos por classe para conjunto de dados de trem, bem como 1-3 defeitos por imagem e mais de 20 defeitos por classe para o conjunto de dados de teste.
A seguir está um exemplo da imagem de origem e seus defeitos sintéticos com três componentes: IC, resistor1 e resistor 2 ausentes.
imagem original
40_im_mask_IC_resistor1_resistor2.jpg (o nome do defeito indica os componentes ausentes)
- Gere arquivos de manifesto para conjunto de dados de treinamento/teste registrando todas as informações acima.
Por fim, geraremos manifestos de treinamento/teste para registrar informações, como localização do defeito sintético S3, localização da máscara S3, classe do defeito, cor da máscara etc.
A seguir estão exemplos de linhas json para uma anomalia e uma imagem normal no manifesto.
Para anomalia:
- AI
- arte ai
- gerador de arte ai
- ai robô
- Amazon Lookout para Visão
- Verdade no solo do Amazon SageMaker
- inteligência artificial
- certificação de inteligência artificial
- inteligência artificial em bancos
- robô de inteligência artificial
- robôs de inteligência artificial
- software de inteligência artificial
- Aprendizado de máquina da AWS
- blockchain
- conferência blockchain ai
- Coingenius
- inteligência artificial conversacional
- conferência de criptografia ai
- Soluções para clientes
- dall's
- deep learning
- google ai
- aprendizado de máquina
- platão
- platão ai
- Inteligência de Dados Platão
- Jogo de Platão
- PlatãoData
- jogo de platô
- escala ai
- sintaxe
- zefirnet