Introdução à visão computacional

9 min de leitura
Patrocinado
Imagem de: Introdução à visão computacional
Avatar do autor

Equipe TecMundo

@tec_mundo

Este artigo é parte tanto do Guia de introdução ao IBM Visual Insights como do Guia de introdução ao Watson Visual Recognition.

Visão geral

As câmeras estão em todos os lugares. Os vídeos e as imagens se tornaram os conjuntos de dados mais interessantes para a inteligência artificial. O deep learning, em particular, é usado para criar modelos para a visão computacional, e você pode treinar esses modelos para permitir que suas aplicações reconheçam o que uma imagem (ou um vídeo) representa.

Objetivos de aprendizagem

O artigo cobrirá o básico da visão computacional e explicará como você pode usar a visão computacional em seus aplicativos. Você aprenderá sobre:

  • Classificação de imagens

  • Detecção de objetos

  • Rastreamento de objetos em vídeos

  • Criação de modelos personalizados

  • Uso do seu modelo

  • Exemplos de uso

Definição de termos comuns

Tabela

O básico da visão computacional

Para começar a entender sobre a visão computacional, você pode iniciar com a classificação de imagens e então prosseguir para a detecção de objetos. Em ambos os casos, existem inúmeras possibilidades de emprego dessas características em seus aplicativos usando os seus modelos personalizados. Algumas aplicações avançadas, como a detecção de ações ou o rastreamento de objetos em um vídeo são progressões do que vemos aqui.

Classificação de imagens

Para a classificação de imagens, você deverá montar uma solução que possa examinar uma imagem e classificá-la de maneira adequada de acordo com o seu modelo. Pode ser simples como o famoso hot dog/não hot dog, que é um modelo binário no qual você quer saber apenas se você tem uma imagem de um hot dog. Você pode pensar que a aplicação desse modelo é limitada (e é), mas se você considerar todas as decisões if/else que as aplicações podem fazer baseadas em modelos binários simples, descobrirá muitos usos para modelos binários específicos para aplicações. Até algo sofisticado como um teste médico às vezes se resume a uma resposta positiva/negativa simples, o que pode ser alcançado com a classificação de imagens.

A demonstração a seguir mostra o que você pode fazer com um vídeo e um modelo simples. Observe que, em vez de imagens, isso foi montado usando um vídeo, que é apenas uma sequência de imagens (frames). O frame atual é reconhecido como um hot dog ou não.

ExemploExemplo de aplicativo de classificação de imagem binária.

Muitos casos de uso de classificação de imagens não são binários. Para esses, você precisa treinar um modelo voltado a reconhecer categorias múltiplas. Além de fornecer a categoria escolhida, uma porcentagem de certeza é informada. Essa porcentagem é usada para selecionar a categoria mais provável, mas você também pode usar um limite para descartar até a categoria mais provável quando a confiabilidade for muito baixa para que se confie nela.

Por exemplo, nesse tutorial de classificação de imagem, um modelo é treinado para categorizar uma imagem de um pássaro. O aplicativo Swift do exemplo a seguir roda em um iPhone e classifica uma foto de uma gaivota como Larus com 100% de certeza.

ExemploExemplo de aplicativo de classificação multiclasse.

Detecção de objetos

A detecção de objetos é similar à classificação de imagens, exceto que, com a detecção de objetos, a imagem pode conter vários deles, que são localizados e classificados. Nesse padrão de código de detecção de objetos, um modelo é treinado não apenas para classificar imagens da Coca-Cola, mas também para localizar cada garrafa dentro da imagem.

Na imagem a seguir, você verá que três diferentes categorias de produtos da Coca-Cola foram reconhecidos. Além de retornar as classificações e o índice de certeza, fornecem-se coordenadas que 

ExemploExemplo de aplicativo de detecção de objetos.

A detecção de objetos é usada em uma ampla variedade de casos em que o interessante não é apenas uma classificação única que descreva uma imagem inteira, mas sim vários objetos de diferentes categorias na imagem. Fornecer a uma aplicação a habilidade de identificar, localizar e contar os objetos aumenta as aplicações possíveis desse tipo de visão computacional.

Rastreamento de objetos em vídeos

Com o uso da detecção de objetos em vídeos, você geralmente quer rastrear objetos de um frame para outro. A detecção de objetos inicial pode ser feita ao extrair um frame do vídeo e detectar objetos no frame. Além de contar objetos e localizar cada um deles, o rastreamento conforme se eles movem de um frame para outro adiciona outra dimensão ao que você pode realizar.

O exemplo a seguir mostra como o padrão de código de rastreamento de objetos usou a detecção de objetos junto com o rastreamento para anotar um vídeo e contar carros.

ExemploExemplo de aplicativo para detecção de objetos e rastreamento.

Criando modelos personalizados

Agora que já vimos o básico da classificação de imagens e detecção de objetos (e rastreamento), vamos discutir sobre como usar o deep learning para criar esses aplicativos, assim como aplicativos para seus próprios usos. Na prática, é muito mais fácil do que parece.

Muito trabalho foi feito para usar o aprendizado profundo de redes neurais convolucionais para reconhecer objetos em imagens. Os modelos existentes já entendem como reconhecer pontas, formas, padrões e assim por diante. Nós usamos o que é chamado de transfer learning para potencializar os modelos existentes e treiná-los novamente com nossos próprios conjuntos de dados.

Fornecendo exemplos

Para o exemplo do classificador de pássaros, só precisamos de um bom conjunto de exemplos de imagens de pássaros de cada tipo que queremos reconhecer. Usando o transfer learning e esse novo conjunto de dados com resultados esperados conhecidos, podemos criar um novo modelo para a classificação de imagens de pássaros.

Se você estiver usando o IBM Visual Insights, a interface do usuário permite que você faça upload e classifique suas imagens e então treine um modelo com o apertar de um botão. É simples assim. Vários outros frameworks possibilitam que você faça a mesma coisa com um pouco de código. Não é difícil copiar seu código de exemplo, substituir com o seu próprio conjunto de dados e mapear suas imagens em categorias personalizadas, mas ter uma interface fácil de usar é uma boa maneira de começar.

A detecção de objetos é similar à classificação de imagens, mas os objetos também precisam ser localizados no conjunto de dados que você usa para treinar. Para criar um modelo de detecção de objetos, você deve fornecer imagens e a localização (por exemplo, coordenadas) de cada objeto em cada imagem.

Novamente, o IBM Visual Insights fornece uma interface do usuário que torna isso mais fácil e vamos usá-la no exemplo a seguir. Com qualquer framework que você utilizar, precisará de uma forma de fazer upload das imagens e fornecer uma identificação e coordenadas para cada objeto. A identificação para a detecção de objetos geralmente toma muito mais tempo do que a classificação de imagens. Além disso, o tempo necessário calculado para treinar um modelo de detecção de objetos geralmente é bem mais longo. Usar GPUs e os últimos algoritmos ajuda a diminuir o tempo de treinamento (o que permite, então, conjuntos maiores e melhores de dados sendo usados para criar modelos mais precisos).

A imagem a seguir mostra como a identificação para detecção de objetos pode se dar. Nesse exemplo do IBM Visual Insights, o conjunto de dados é criado ao extrair frames de um vídeo. Dessa forma, carros são identificados manualmente em uma seleção de frames ao arrastar uma caixa em volta de cada um. Depois de um pouco de rotulagem manual, a autorrotulagem e o aumento de dados são usados para multiplicar seus esforços manuais.

Rotulagem manualRotulagem manual.

Nos bastidores, o IBM Visual Insights é montado com tecnologia de código aberto. Se você quiser tirar proveito da interface fácil de usar ou preferir escrever um pouco de código e trabalhar mais diretamente com as APIs de código aberto, pode rodar o Power Systems com GPUs para melhorar seu tempo de treinamento e criar modelos melhores mais rapidamente.

Treinamento, validação e testes

Treinar um modelo é essencialmente o processo de replicar com imagens de exemplo e ajustar pesos para melhorar a precisão da previsão do algoritmo. Não vamos entrar nos detalhes do deep learning e das redes neurais convolucionais aqui, mas você pode usar o deep learning por meio do transfer learning sem se preocupar muito com os algoritmos internos. No entanto, existem algumas coisas que você deve compreender para criar e manter um modelo preciso.

O conjunto de dados é dividido para separar o treinamento da validação. Isso pode ser feito automaticamente (por exemplo, quando se utiliza o IBM Visual Insights). A razão para manter isso em mente é que o treinamento pode levar ao sobreajuste. Ao passo que as iterações melhoram a precisão em relação aos dados de treinamento, eventualmente o modelo pode se tornar "muito preciso". Ele reconhecerá as imagens que usou para treinar com quase 100% de precisão, mas não será bom em reconhecer objetos em novas imagens. Isso se chama sobreajuste. Devido ao fato de que você deseja um modelo que seja mais consistente, o conjunto de validação deve ser usado para validar o treinamento e evitar esse sobreajuste.

Depois de executar o treinamento e a validação com um número específico de intervalos (talvez cancelando antes se a precisão não estiver melhorando), você terá um modelo. Normalmente você também terá um relatório da precisão do modelo. Mantenha em mente que essa precisão se refere apenas aos dados fornecidos.

Apesar de um pouco de validação ser parte do treinamento, sempre é uma boa ideia (e frequentemente é satisfatório) usar dados adicionais de teste e ver se o seu modelo funciona bem com imagens que não fizeram parte do conjunto de dados do treinamento (ou validação). Com frequência, você descobrirá que precisa avaliar constantemente seu modelo com novos dados e retreiná-lo com um conjunto de dados melhorado conforme se faça necessário.

Usando seu modelo

Os exemplos anteriores mostraram várias aplicações que demonstram a tomada de uma imagem de entrada e o uso de um modelo personalizado para produzir um resultado (classificação de imagens ou detecção de objetos). Inferência é um termo usado para quando você pega a entrada e infere sua categoria ou seus objetos. Isso é alcançado usando o modelo. O treinamento toma bastante tempo; porém, quando termina, o modelo está otimizado e pronto para ser usado para inferência. Os detalhes variam de acordo com o framework, a linguagem e a plataforma, mas o modelo é implementado (ou carregado) e uma API se torna disponível para que o código da aplicação chame. Com a API, o código do aplicativo pode pegar uma imagem, conseguir resultados inferidos e então escolher como os mostrar.

Exemplos de uso

Vimos alguns exemplos — e mencionamos que as possibilidades são infinitas —, mas vale a pena listar alguns casos de uso para que você reflita sobre como aplicar a visão computacional.

  • Automotivo: monitorar interseções movimentadas para detectar "quase acidentes".

  • Bens de consumo: monitorar a qualidade do produto ou quantidade nas prateleiras.

  • Saúde: detectar melanoma em imagens dermatoscópicas.

  • Fábricas: contar e classificar itens em esteiras rolantes.

  • Mídia: analisar a eficácia do posicionamento de propagandas.

  • Energia: inspeção remota de infraestrutura usando drones.

Para mais informações sobre esses casos de uso e outros, veja os casos de uso do Watson Machine Learning e do IBM Visual Insights.

Resumo

Este artigo é a primeira parte do Guia de introdução ao IBM Visual Insights. Continue o percurso de aprendizagem para melhorar suas aptidões com tutoriais práticos e códigos de exemplo. Para continuar com o percurso de aprendizagem do Watson IBM Visual Insights, leia o próximo artigo, Introdução ao IBM Visual Insights.

Este artigo também é parte do Guia de introdução ao Watson Visual Recognition. Para continuar nesse percurso de aprendizagem, veja a Introdução ao Watson Visual Recognition.

...

Quer ler mais conteúdo especializado de programação? Conheça o IBM Blue Profile e tenha acesso a matérias exclusivas, novas jornadas de conhecimento e testes personalizados. Confira agora mesmo, consiga as badges e dê um upgrade na sua carreira!

…..

Quer dar o próximo grande passo na sua jornada profissional? Participe do Cloud Training, um curso online e gratuito que vai te preparar para o exame da certificação IBM Cloud Foundations. Inscreva-se já!

Introdução à visão computacional