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.
Gorjeta
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 Fundamentos do 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, em um cenário de classificação de imagem, o rótulo representa o assunto principal da imagem (em outras palavras, do que é uma 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. Eventualmente, o modelo de classificação de imagens de frutas treinadas usa os pesos de filtro que melhor extraem características que ajudam a identificar 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 recurso são alimentados em uma 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, e os pesos na rede neural totalmente conectada e os núcleos de filtro nas camadas de extração de feição são modificados para reduzir a perda.
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.
Nota
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.
Transformadores e modelos multimodais
As CNNs estão no centro das soluções de visão computacional há muitos anos. Embora sejam comumente usados para resolver problemas de classificação de imagem, conforme descrito anteriormente, eles também são a base para modelos de visão computacional mais complexos. Por exemplo, os modelos de deteção de objetos combinam camadas de extração de recursos CNN com a identificação de regiões de interesse em imagens para localizar várias classes de objeto na mesma imagem.
Transformadores
A maioria dos avanços na visão computacional ao longo das décadas foi impulsionada por melhorias nos modelos baseados na CNN. No entanto, em outra disciplina de IA - processamento de linguagem natural (NLP), outro tipo de arquitetura de rede neural, chamado de transformador , permitiu o desenvolvimento de modelos sofisticados para a linguagem. Os transformadores funcionam processando grandes volumes de dados e codificando tokens de linguagem (representando palavras ou frases individuais) como incorporações baseadas em vetores (matrizes de valores numéricos). Você pode pensar em uma incorporação como representando um conjunto de dimensões que cada uma representa algum atributo semântico do token. As incorporações são criadas de tal forma que os tokens que são comumente usados no mesmo contexto estão mais próximos dimensionalmente do que palavras não relacionadas.
Como um exemplo simples, o diagrama a seguir mostra algumas palavras codificadas como vetores tridimensionais e plotadas em um espaço 3D:
Tokens que são semanticamente semelhantes são codificados em posições semelhantes, criando um modelo de linguagem semântica que torna possível construir soluções sofisticadas de PNL para análise de texto, tradução, geração de linguagem e outras tarefas.
Nota
Usamos apenas três dimensões, porque isso é fácil de visualizar. Na realidade, os codificadores em redes de transformadores criam vetores com muito mais dimensões, definindo relações semânticas complexas entre tokens com base em cálculos algébricos lineares. A matemática envolvida é complexa, assim como a arquitetura de um modelo de transformador. Nosso objetivo aqui é apenas fornecer uma compreensão conceitual de como a codificação cria um modelo que encapsula relações entre entidades.
Modelos multimodais
O sucesso dos transformadores como forma de construir modelos de linguagem levou os pesquisadores de IA a considerar se a mesma abordagem seria eficaz para dados de imagem. O resultado é o desenvolvimento de modelos multimodais, em que o modelo é treinado usando um grande volume de imagens legendadas, sem rótulos fixos. Um codificador de imagem extrai recursos de imagens com base em valores de pixel e os combina com incorporações de texto criadas por um codificador de idioma. O modelo geral encapsula as relações entre incorporações de token de linguagem natural e recursos de imagem, conforme mostrado aqui:
O modelo Microsoft Florence é exatamente esse modelo. Treinado com grandes volumes de imagens legendadas da Internet, inclui um codificador de linguagem e um codificador de imagem. Florença é um exemplo de modelo de fundação . Em outras palavras, um modelo geral pré-treinado no qual você pode construir vários modelos adaptativos para tarefas especializadas. Por exemplo, você pode usar Florence como um modelo de base para modelos adaptativos que executam:
- Classificação da imagem: Identificar a que categoria pertence uma imagem.
- Deteção de objetos: localizar objetos individuais dentro de uma imagem.
- Legendagem: Gerar descrições apropriadas de imagens.
- Marcação: Compilar uma lista de tags de texto relevantes para uma imagem.
Modelos multimodais como Florence estão na vanguarda da visão computacional e da IA em geral, e espera-se que impulsionem avanços nos tipos de solução que a IA torna possível.