Aprendizagem automática para visão computacional
A capacidade de usar filtros para aplicar efeitos a imagens é útil em tarefas de processamento de imagem, como você pode executar com software de edição de imagem. No entanto, o objetivo da visão computacional é muitas vezes extrair significado, ou pelo menos insights acionáveis, das imagens; que requer a criação de modelos de aprendizado de máquina que são treinados para reconhecer recursos com base em grandes volumes de imagens existentes.
Sugestão
Esta unidade pressupõe que você está familiarizado com os princípios fundamentais do aprendizado de máquina e que você tem conhecimento conceitual de aprendizado profundo com redes neurais. Se você é novo no aprendizado de máquina, considere concluir o módulo Introdução aos conceitos de aprendizado de máquina no Microsoft Learn.
Redes neurais convolucionais (CNNs)
Uma das arquiteturas de modelo de aprendizado de máquina mais comuns para visão computacional é uma rede neural convolucional (CNN), um tipo de arquitetura de aprendizado profundo. As CNNs usam filtros para extrair mapas numéricos de feições de imagens e, em seguida, alimentam os valores de feição em um modelo de aprendizado profundo para gerar uma previsão de rótulo. Por exemplo, num cenário de classificação de imagem, o rótulo representa o assunto principal da imagem (em outras palavras, de que é esta imagem?). Você pode treinar um modelo da CNN com imagens de diferentes tipos de frutas (como maçã, banana e laranja) para que o rótulo previsto seja o tipo de fruta em uma determinada imagem.
Durante o processo de treinamento para uma CNN, os kernels de filtro são inicialmente definidos usando valores de peso gerados aleatoriamente. Em seguida, à medida que o processo de treinamento progride, as previsões dos modelos são avaliadas em relação aos valores conhecidos do rótulo e os pesos do filtro são ajustados para melhorar a precisão. Finalmente, o modelo treinado de classificação de imagens de frutas utiliza os pesos de filtro que melhor extraem características, facilitando a identificação de diferentes tipos de frutas.
O diagrama a seguir ilustra como funciona uma CNN para um modelo de classificação de imagens:
- Imagens com rótulos conhecidos (por exemplo, 0: maçã, 1: banana ou 2: laranja) são inseridas na rede para treinar o modelo.
- Uma ou mais camadas de filtros são usadas para extrair recursos de cada imagem à medida que ela é alimentada pela rede. Os kernels de filtro começam com pesos atribuídos aleatoriamente e geram matrizes de valores numéricos chamados mapas de feição.
- Os mapas de feição são nivelados em uma única matriz dimensional de valores de feição.
- Os valores de características são introduzidos numa rede neural totalmente conectada.
- A camada de saída da rede neural usa uma função softmax ou semelhante para produzir um resultado que contém um valor de probabilidade para cada classe possível, por exemplo [0.2, 0.5, 0.3].
Durante o treinamento, as probabilidades de saída são comparadas com o rótulo real da classe - por exemplo, uma imagem de uma banana (classe 1) deve ter o valor [0,0, 1,0, 0,0]. A diferença entre as pontuações de classe previstas e reais é usada para calcular a perda no modelo, sendo os pesos na rede neural totalmente conectada e os núcleos de filtro nas camadas de extração de características modificados para reduzi-la.
O processo de treino repete-se ao longo de várias épocas até que um conjunto ideal de pesos tenha sido aprendido. Em seguida, os pesos são salvos e o modelo pode ser usado para prever rótulos para novas imagens para as quais o rótulo é desconhecido.
Observação
As arquiteturas CNN geralmente incluem várias camadas de filtro convolucionais e camadas adicionais para reduzir o tamanho dos mapas de recursos, restringir os valores extraídos e manipular os valores dos recursos. Essas camadas foram omitidas neste exemplo simplificado para se concentrar no conceito-chave, que é que os filtros são usados para extrair recursos numéricos de imagens, que são então usados em uma rede neural para prever rótulos de imagem.
A seguir, vamos aprender como esses conceitos suportam tarefas de visão computacional.