Agosto de 2018

Volume 33 – Número 8

Artificialmente Inteligente - Explorando o Serviço de Visão Personalizada

Por Frank La La | Agosto de 2018

Frank La VigneUm dos serviços cognitivos mais fascinantes disponíveis no Microsoft Azure é o serviço de visão personalizada, que permite aos usuários criar facilmente modelos de visão computacional personalizado. Tradicionalmente, treinar um classificador de imagem necessário milhares, se não milhares, de imagens por classe para gerar um modelo preciso o suficiente para o uso prático. Além disso, também seria necessário um forte entendimento sobre a mecânica de redes neurais. O serviço de visão personalizada fornece uma interface de usuário de Web fácil de usar que isso mascara a complexidade de base.

Melhor ainda, o serviço de visão personalizada pode criar classificadores de imagem personalizada bastante precisas com apenas 15 ou 20 imagens por classe, embora a documentação recomenda um mínimo de 50 imagens por classe. Em geral, melhorará a qualidade do classificador de imagem com mais imagens de treinamento. O serviço de visão personalizada também expõe os modelos treinados por meio da API REST para simplificar a implantação desses modelos.

Na conferência Build 2018, uma das demonstrações keynote envolvidos um veículo aéreo unmanned ou drone, surgindo em uma série de pipes para detectar defeitos e problemas de manutenção. Na demonstração, um drone transmitida de vídeo de sua câmera volta para um laptop. O laptop avaliadas as imagens em um modelo treinado de visão personalizada, que alerta o operador de drone de quaisquer defeitos visto nos pipes. Neste artigo, eu irá imitar uma semelhante a inteligência artificial (AI)-aumentada do modelo de manutenção para detectar problemas com faixas de treinamento. Para fazer isso, vou explorar o serviço de visão personalizada e demonstrar como é fácil adicionar a classificação de imagem personalizada para qualquer aplicativo ou site da Web.

Fornecimento de imagens para treinar em

Criando um modelo de visão do computador com o serviço personalizado de visão envolve três etapas simples:

  1. Carregar um conjunto de imagens e rotulá-lo.
  2. Treinar e gerar o modelo clicando no botão de treinamento.
  3. Use a interface da Web ou APIs REST para avaliar o desempenho do modelo.

É realmente muito fácil começar a usar. Mas é necessário ter cuidado quando você começar o fornecimento de imagens para o seu modelo no qual treinar.

Recentemente para uma demonstração de cliente, eu coletados uma série de imagens de faixas de treinamento por meio da Internet. Essas imagens incluíam faixas train normal e aqueles com defeitos graves. Com 30 imagens, consegui gerar um modelo personalizado de visão para detectar defeitos de rastrear com cerca de 80 por cento precisão como parte da minha apresentação. Como impressionantes em que pode ser, eu estava rápida apontar para o cliente que exige qualquer modelo de classificação de imagem pronta para produção rastreia imagens de treinamento em uma variedade de condições de iluminação diversificado, ângulos e assim por diante. Essa diversidade de dados de classificação reduz a probabilidade do algoritmo de isolar recursos incorretos das imagens de treinamento, o que poderiam causar confusão com os resultados.

Há um clássico e possivelmente preventiva, inacreditável história sobre treinando redes neurais. A legenda explica o que os pesquisadores na década de 1980 enfrentados quando nos EUA Exército decidiu treinar uma rede neural para detectar tanques. De acordo com a história, a rede neural muito bem executada contra os dados de teste como parte do experimento. No entanto, quando a rede neural foi dada novas imagens para classificar, ela executada terrivelmente.

Os pesquisadores eram dumbfounded até que eles acabaram percebendo que todas as imagens que contêm tanques feitas nos dias overcast, enquanto todas as imagens na falta de tanques foram executadas nos dias ensolarados. A rede neural separadas as duas classes de fotos e escolhido distinguir os dois conjuntos com base em como a cor do céu, em vez da presença de um tanque. Obviamente, isso é o que o Exército desnecessários. Para obter uma explicação completa da história de detecção do tanque, você pode conferir gravação original de Neil Fraser-se na bit.ly/2llxudb, mas essa parte do seu artigo vale a pena de delimitar aqui:

"É uma ilustração perfeita do maior problema por trás de redes neurais. Qualquer .NET automaticamente treinado com mais de alguns doze neurônios é praticamente impossível analisar e entender. Um não é possível saber se uma rede tem memorizadas entradas ou é 'trapaça' de alguma outra forma."

Embora o artigo foi atualizado pela última vez em 2003, esta citação ainda se aplica hoje. Trabalho está sendo feito para entender melhor o funcionamento interno de redes neurais complexos, mas esse esforço está em andamento e mal além sua fase de valor. Atualmente, a prática recomendada é a fonte de dados que contém um conjunto variado de dados de treinamento. Isso ajuda o algoritmo de distinguir imagens com base nas variáveis corretas.

Para evitar problemas de direitos autorais de imagem, decidi aproveitar a coleção do meus filhos grande brinquedo train acompanhar para este artigo. Isso também me permite criar rapidamente imagens de teste e treinamento. Posso fazer 34 imagens e dividi-los em três pastas denominadas desfeito, Normal e teste. Imagens com faixas de treinamento "interrompidas" estão na pasta quebrada e imagens com faixas de contíguas estão na pasta Normal. Adicionei aleatoriamente escolhido uma série de imagens para testar o modelo em e colocou-os na pasta de teste. Com Minhas imagens do código-fonte selecionado e rotulados, é hora de criar um modelo.

 

Criando o modelo

Em um navegador, vá para customvision.ai e clique no botão entrar para entrar com minha conta da Microsoft. Depois de conectado, clico no novo projeto para criar um novo projeto de visão personalizada.

Na caixa de diálogo seguinte, digito "Brinquedo trens" para o nome do projeto e uma breve descrição do projeto. Posso deixar a lista suspensa de grupo de recursos para a configuração padrão de avaliação limitada e verifique se os botões de opção para tipos de projeto e os domínios são definidos como classificação e geral, respectivamente. Em seguida, clico no botão de projeto de criar para criar um novo projeto de visão personalizada. Figura 1 mostra essas configurações.

A caixa de diálogo Novo projeto de criar
Figura 1 a criar a caixa de diálogo Novo projeto

Carregando as imagens

Quando o projeto é criado, o site da Web solicita que você carregar imagens. Clico em Adicionar imagens e na caixa de diálogo seguinte, clique em arquivos locais de procurar para localizar as imagens para carregar. Em primeiro lugar, posso carregar as imagens na pasta quebrada, selecionando-os em todas as e clicando em Abrir na caixa de diálogo de navegação. Na caixa de texto abaixo as imagens, insiro o termo desfeito e clique no sinal de mais azul para marcar as imagens com o rótulo quebrada. Em seguida, clico no botão Carregar para carregar as imagens de 15. Esta etapa é mostrada na Figura 2. Em seguida, clico em Concluir para terminar esta etapa.

Imagens marcadas acompanhar quebrada
Figura 2 marcados Track quebrada imagens

Agora que as imagens de faixas de treinamento quebrada forem carregadas, chegou a hora para carregar as imagens na pasta Normal. Para fazer isso, eu clicar no ícone no canto superior esquerdo do painel com o sinal de adição sobre ele. Esse botão está realçado na Figura 3. Posso repetir as etapas anteriores para carregar as imagens de entrada, exceto que desta vez, devo escolher as imagens na pasta Normal e marca as imagens com o rótulo Normal. Clico no botão Carregar para transferir as imagens e, em seguida, clique em Concluir para fechar a caixa de diálogo.

Adicionando imagens mais aos dados de treinamento
Figura 3-adicionar mais imagens aos dados de treinamento

Com todas as imagens de exemplo carregadas e marcadas, chegou a hora para treinar e testar o modelo.

Treinamento do modelo

Na parte superior da página, há um botão verde com engrenagens nele. Eu clicar para treinar um modelo com as imagens rotuladas no momento. Levará alguns instantes ou dois antes que o treinamento estiver concluído e a página da Web retorna com as métricas de desempenho do modelo, que é mostrado na Figura 4.

Resultados de treinamento e métricas de desempenho
Figura 4 resultados de treinamento e métricas de desempenho

As duas métricas principais exibidas são a precisão do modelo e a recuperação. Precisão indica a frequência com que um resultado previsto está correto, embora recall mede a porcentagem de frequência uma marca prevista estava correta. Em outras palavras, que indica quando a resposta correta é recall "Desfeito", a frequência com que o modelo poderá prever "Desfeito." Para obter uma explicação mais detalhada da terminologia de matriz de confusão, leia o "simples guia para confusão matriz terminologia" em bit.ly/2IbRoAi.

Testar o modelo

Agora é hora de testar o modelo nas imagens de reservar para teste para ver quão bem o modelo executará quando apresentado com novas imagens. À direita do botão verde de treinamento, há um botão rotulado como teste rápido. Eu clicar para abrir a caixa de diálogo de teste e, em seguida, clique no botão de arquivos locais de procurar para abrir a caixa de diálogo de upload de arquivo. Eu uso esta caixa de diálogo para selecionar uma imagem na pasta de teste e clique em Abrir para carregar o arquivo. Após alguns instantes, o algoritmo exibirá seus resultados depois de avaliar a imagem. Figura 5 mostra que esta imagem tem um 79.2% de probabilidade de ser uma faixa Normal e um 60.2% de probabilidade de que está sendo interrompida. Lembre-se de que para este projeto, Normal significa que a faixa é uniforme, ou contíguos.

Caixa de diálogo de teste rápido para um conjunto contíguo de faixas
Figura 5 caixa de diálogo de teste rápido para um conjunto contíguo de faixas

Posso executar o teste novamente com outra imagem de uma faixa quebrada, clicando novamente no botão Procurar arquivos locais. Desta vez eu devo selecionar uma imagem de um conjunto quebrada faixas. O modelo relata que há uma chance de por cento de 95.9 esta ser uma faixa quebrada e somente por cento de 11.2 chance da faixa que está sendo normal. Posso testar o modelo out com o restante dos arquivos na pasta de teste para ter uma ideia de onde o modelo funciona bem e quais tem problemas para identificar o estado correto dos roteiros.

Ainda mais a experimentação, posso realizar uma pesquisa de imagem na Internet e copie a URL da imagem e cole-o na caixa de texto da interface do usuário de teste. Essas imagens representam faixas de treinamento de ângulos diferentes e em diferentes superfícies em condições de iluminação, ao contrário do conjunto de treinamento de imagens. Isso fornecerá uma perspectiva no trabalho de redes neurais como e por que um conjunto diversificado de dados de exemplo é crucial para o sucesso de um modelo pronto para produção. O seguinte três URLs de ponto para algumas imagens de exemplo que descobri on-line (Observe como o modelo classifica cada uma das imagens):

Além disso, é útil saber como o classificador se comportará quando considerando uma imagem fora de seu escopo. Por exemplo, como será esse classificador, projetado para determinar o estado de brinquedo train faixas, funcionar quando considerando uma imagem de um sinal de neon? Isso é conhecido como a manipulação de imagem negativos, e um modelo eficaz deve prever valores próximos de zero nesses casos. Para testar isso, eu insira a seguinte URL na caixa de texto: http://datadriven.tv/wp-content/uploads/2018/05/50k.png. Meu modelo de previsão produziu um resultado de por cento de 1.7 para Normal e 0 por cento para desfeito.

Aprofundando...

Para fins deste exemplo, eu criei um sistema de classificação de imagem de duas classes, em que o modelo tinha apenas às imagens de rótulo de brinquedo train faixas como desfeito ou normal. No entanto, posso criar modelos mais complexos. Atualmente, camada S0 de serviço de visão personalizada (padrão) pode dar suporte a até 250 marcas exclusivas, que significa que ele pode ser treinado para classificar rótulos separados 250. Além disso, o serviço pode manipular até 50.000 imagens por projeto.

Além disso, os modelos gerados pelo serviço personalizado de visão podem ser exportados para uso em dispositivos de computação de borda e não confiam no acesso ao serviço de nuvem. Isso significa que eu poderia carregar o modelo em um dispositivo e classificar imagens em um cenário offline. Atualmente, o serviço de visão personalizada dá suporte a exportações do modelo nos três formatos: TensorFlow para dispositivos Android, CoreML para dispositivos iOS e ONNX para Windows. Além disso, o serviço de visão personalizada pode criar um contêiner do Windows ou Linux que incorpora um modelo do TensorFlow e o código para chamar a API REST. Para obter mais detalhes sobre como exportar modelos para ser executado em dispositivos de borda, certifique-se de consultar a documentação em bit.ly/2K4ibjL.

Neste artigo, demonstrei como é fácil começar com o serviço de visão personalizada e criar um modelo de visão do computador com um conjunto limitado de dados de treinamento. Um uso possível para essa tecnologia seria acessar dados de imagem de câmeras de tráfego e treinar um modelo para detectar os diferentes níveis de congestionamento, com base apenas nos dados. Anteriormente, automatizar essa tarefa seria assustadora, pois ele necessário conhecimento especializado e uma grande quantidade de dados de treinamento rotulado. No entanto, o serviço personalizado de visão combina a tecnologia de ponta de rede neural com uma interface fácil de usar para criar uma ferramenta que abrirá a visão do computador para o uso mais difundido.


Frank La Vignetrabalha na Microsoft como um profissional de soluções de tecnologia de IA onde ele ajuda as empresas a alcançar mais obtendo o máximo proveito de seus dados com análise e IA. Ele também conjunta hosts a DataDriven podcast. Ele escreve regularmente em seu blog FranksWorld.com, e você pode assisti-lo em seu canal no YouTube “Frank’s World TV” (FranksWorld.TV).

Agradecemos aos seguintes especialistas técnicos pela revisão deste artigo: Andy Leonard e Jonathan Wood


Discuta esse artigo no fórum do MSDN Magazine