Como gerar automaticamente descrições textuais para fotografias com aprendizado profundo

Como gerar automaticamente descrições textuais para fotografias com aprendizado profundo

A legenda de uma imagem envolve a geração de uma descrição textual legível por humanos a partir de uma imagem, como uma fotografia.

É um problema fácil para um ser humano, mas muito desafiador para uma máquina, pois envolve a compreensão do conteúdo de uma imagem e como traduzir essa compreensão em linguagem natural.

Recentemente, os métodos de aprendizado profundo substituíram os métodos clássicos e estão obtendo resultados de última geração para o problema de geração automática de descrições, chamadas de “legendas”, para imagens.

Neste post, você descobrirá como modelos de redes neurais profundas podem ser usados ​​para gerar automaticamente descrições para imagens, como fotografias.

Depois de concluir esta postagem, você saberá:

  • Sobre o desafio de gerar descrições textuais para imagens e a necessidade de combinar avanços da visão computacional e do processamento de linguagem natural.
  • Sobre os elementos que compõem um modelo de legendagem de recurso neural, ou seja, o extrator de recurso e o modelo de linguagem.
  • Como os elementos do modelo podem ser organizados em um codificador-decodificador, possivelmente com o uso de um mecanismo de atenção.

Comece seu projeto com meu novo livro Deep Learning for Natural Language Processing, incluindo tutoriais passo a passo e a Código-fonte Python arquivos para todos os exemplos.

Vamos começar.

Visão geral

Este post está dividido em 3 partes; eles estão:

  1. Descrever uma imagem com texto
  2. Modelo de legenda neural
  3. Arquitetura codificador-decodificador

Precisa de ajuda com Deep Learning for Text Data?

Faça meu curso intensivo de e-mail gratuito de 7 dias agora (com código).

Clique para se inscrever e também obter uma versão gratuita do Ebook em PDF do curso.

Comece Seu Crash-Course GRÁTIS Agora

Descrever uma imagem com texto

Descrever uma imagem é o problema de gerar uma descrição textual de uma imagem legível por humanos, como uma fotografia de um objeto ou cena.

O problema às vezes é chamado de “anotação automática de imagem" ou "etiquetagem de imagem. ”

É um problema fácil para um humano, mas muito desafiador para uma máquina.

Uma rápida olhada em uma imagem é suficiente para um humano apontar e descrever uma imensa quantidade de detalhes sobre a cena visual. No entanto, essa habilidade notável provou ser uma tarefa difícil para nossos modelos de reconhecimento visual

- Alinhamentos Visual-semânticos profundos para a geração de descrições de imagens, 2015.

Uma solução requer que o conteúdo da imagem seja compreendido e traduzido para um significado nos termos das palavras e que as palavras devem ser encadeadas para serem compreensíveis. Ele combina visão computacional e processamento de linguagem natural e marca um verdadeiro problema desafiador em inteligência artificial mais ampla.

Descrever automaticamente o conteúdo de uma imagem é um problema fundamental na inteligência artificial que conecta a visão computacional e o processamento de linguagem natural.

- Show and Tell: A Neural Image Caption Generator, 2015.

Além disso, os problemas podem variar em dificuldade; vamos examinar três variações diferentes do problema com exemplos.

1. Classificar imagem

Atribua a uma imagem um rótulo de classe de uma das centenas ou milhares de classes conhecidas.

Exemplo de classificação de imagens em classes conhecidas

Exemplo de classificação de imagens em classes conhecidas
Retirado de “Detecção de abacates em abobrinhas: o que fizemos e para onde vamos?”, 2013.

2. Descreva a imagem

Gere uma descrição textual da imagem do conteúdo.

Exemplo de legendas geradas para photogaphs

Exemplo de legendas geradas para photogaphs
Retirado de “Redes convolucionais recorrentes de longo prazo para reconhecimento e descrição visual”, 2015.

3. Anotar a imagem

Gere descrições textuais para regiões específicas da imagem.

Exemplo de regiões de anotação de uma imagem com descrições

Exemplo de regiões de anotação de uma imagem com descrições.
Retirado de “Deep Visual-Semantic Alignments for Generating Image Descriptions”, 2015.

O problema geral também pode ser estendido para descrever imagens em vídeo ao longo do tempo.

Neste post, vamos focar nossa atenção na descrição de imagens, que iremos descrever como 'legendagem de imagem. '

Modelo de legenda neural

Os modelos de rede neural passaram a dominar o campo da geração automática de legendas; isso ocorre principalmente porque os métodos estão demonstrando resultados de última geração.

Os dois métodos dominantes anteriores aos modelos de rede neural de ponta a ponta para gerar legendas de imagens eram métodos baseados em modelos e métodos baseados no vizinho mais próximo e modificação das legendas existentes.

Antes do uso de redes neurais para gerar legendas, duas abordagens principais eram dominantes. O primeiro envolveu a geração de modelos de legenda que foram preenchidos com base nos resultados das detecções de objetos e descoberta de atributos. A segunda abordagem baseou-se em primeiro recuperar imagens com legendas semelhantes de um grande banco de dados e, em seguida, modificar essas legendas recuperadas para se ajustarem à consulta. […] Essas duas abordagens, desde então, caíram em desuso para os métodos de rede neural agora dominantes.

- Mostrar, assistir e contar: geração de legenda de imagem neural com atenção visual, 2015.

Os modelos de rede neural para legendagem envolvem dois elementos principais:

  1. Extração de recursos.
  2. Modelo de linguagem.

Modelo de Extração de Característica

O modelo de extração de características é uma rede neural que, dada uma imagem, é capaz de extrair as características salientes, geralmente na forma de um vetor de comprimento fixo.

Os recursos extraídos são uma representação interna da imagem, não algo diretamente inteligível.

Uma rede neural convolucional profunda, ou CNN, é usada como o submodelo de extração de recursos. Esta rede pode ser treinada diretamente nas imagens do conjunto de dados de legendagem de imagens.

Alternativamente, um modelo pré-treinado, como um modelo de última geração usado para classificação de imagens, pode ser usado, ou algum híbrido onde um modelo pré-treinado é usado e ajustado no problema.

É comum usar modelos de alto desempenho no conjunto de dados ImageNet desenvolvido para o desafio ILSVRC, como o modelo Oxford Vision Geometry Group, abreviado como VGG.

[…] exploramos várias técnicas para lidar com o sobreajuste. A maneira mais óbvia de não ajustar demais é inicializar os pesos do componente CNN de nosso sistema em um modelo pré-treinado (por exemplo, no ImageNet)

- Mostrar, assistir e contar: geração de legenda de imagem neural com atenção visual, 2015.

Extrator de recursos

Extrator de recursos

Modelo de linguagem

Geralmente, um modelo de linguagem prevê a probabilidade da próxima palavra na sequência, dadas as palavras já presentes na sequência.

Para a legendagem de imagens, o modelo de linguagem é uma rede neural que, dadas as características extraídas da rede, é capaz de prever a sequência de palavras na descrição e construir a descrição condicional às palavras já geradas.

É comum usar uma rede neural recorrente, como uma rede Long Short-Term Memory, ou LSTM, como modelo de linguagem. Cada etapa de tempo de saída gera uma nova palavra na sequência.

Cada palavra gerada é então codificada usando uma incorporação de palavra (como word2vec) e passada como entrada para o decodificador para gerar a palavra subsequente.

Uma melhoria no modelo envolve reunir a distribuição de probabilidade de palavras em todo o vocabulário para a sequência de saída e pesquisá-la para gerar várias descrições possíveis. Essas descrições podem ser pontuadas e classificadas por probabilidade. É comum usar uma Pesquisa de feixe para esta pesquisa.

O modelo de linguagem pode ser treinado de forma independente usando recursos pré-computados extraídos do conjunto de dados da imagem; ele pode ser treinado em conjunto com a rede de extração de recursos ou alguma combinação.

Modelo de linguagem

Modelo de linguagem

Arquitetura codificador-decodificador

Uma forma popular de estruturar os submodelos é usar uma arquitetura codificador-decodificador em que os dois modelos são treinados em conjunto.

[the model] é baseado em uma rede neural de convolução que codifica uma imagem em uma representação compacta, seguida por uma rede neural recorrente que gera uma frase correspondente. O modelo é treinado para maximizar a probabilidade da frase dada a imagem.

- Show and Tell: A Neural Image Caption Generator, 2015.

Esta é uma arquitetura desenvolvida para tradução automática em que uma sequência de entrada, digamos em francês, é codificada como um vetor de comprimento fixo por uma rede codificadora. Uma rede decodificadora separada então lê a codificação e gera uma sequência de saída no novo idioma, por exemplo, o inglês.

Um benefício dessa abordagem, além da habilidade impressionante da abordagem, é que um único modelo ponta a ponta pode ser treinado no problema.

Quando adaptada para legendagem de imagens, a rede do codificador é uma rede neural convolucional profunda e a rede do decodificador é uma pilha de camadas LSTM.

[in machine translation] Um “codificador” RNN lê a frase fonte e a transforma em uma rica representação vetorial de comprimento fixo, que por sua vez é usada como o estado inicial oculto de um “decodificador” RNN que gera a frase alvo. Aqui, propomos seguir esta receita elegante, substituindo o codificador RNN por uma rede neural de convolução profunda (CNN).

- Show and Tell: A Neural Image Caption Generator, 2015.

Exemplo de arquitetura CNN e LSTM

Exemplo da arquitetura CNN e LSTM.
Retirado de “Show and Tell: A Neural Image Caption Generator”, 2015.

Modelo de legendagem com atenção

Uma limitação da arquitetura do codificador-decodificador é que uma única representação de comprimento fixo é usada para conter os recursos extraídos.

Isso foi abordado na tradução automática por meio do desenvolvimento da atenção em uma codificação mais rica, permitindo ao decodificador aprender onde colocar a atenção conforme cada palavra na tradução é gerada.

A abordagem da atenção também foi usada para melhorar o desempenho da arquitetura do codificador-decodificador para legenda de imagens, permitindo que o decodificador aprenda onde colocar a atenção na imagem ao gerar cada palavra na descrição.

Encorajados pelos avanços recentes na geração de legendas e inspirados pelo sucesso recente em empregar a atenção em tradução automática e reconhecimento de objetos, investigamos modelos que podem atender a parte saliente de uma imagem enquanto geram sua legenda.

- Mostrar, assistir e contar: geração de legenda de imagem neural com atenção visual, 2015.

Um benefício dessa abordagem é que é possível visualizar exatamente onde a atenção é colocada ao gerar cada palavra em uma descrição.

Também mostramos por meio da visualização como o modelo é capaz de aprender automaticamente a fixar seu olhar em objetos salientes enquanto gera as palavras correspondentes na sequência de saída.

- Mostrar, assistir e contar: geração de legenda de imagem neural com atenção visual, 2015.

Isso é mais fácil de entender com um exemplo; ver abaixo.

Exemplo de legendagem de imagem com atenção

Exemplo de legendagem de imagem com atenção
Retirado de “Show, Attend and Tell: Neural Image Caption Generation with Visual Attention”, 2015.

Leitura Adicional

Esta seção fornece mais recursos sobre o tópico se você estiver procurando ir mais fundo.

Papéis

Artigos

Projetos

Resumo

Nesta postagem, você descobriu como modelos de redes neurais profundas podem ser usados ​​para gerar automaticamente descrições para imagens, como fotografias.

Especificamente, você aprendeu:

  • Sobre o desafio de gerar descrições textuais para imagens e a necessidade de combinar avanços da visão computacional e do processamento de linguagem natural.
  • Sobre os elementos que compõem um modelo de legendagem de recurso neural, ou seja, o extrator de recurso e o modelo de linguagem.
  • Como os elementos do modelo podem ser organizados em um codificador-decodificador, possivelmente com o uso de um mecanismo de atenção.

Você tem alguma pergunta?
Tire suas dúvidas nos comentários abaixo e farei o possível para responder.

Desenvolva modelos de aprendizado profundo para dados de texto hoje!

Aprendizado profundo para processamento de linguagem natural

Desenvolva seus próprios modelos de texto em minutos

... com apenas algumas linhas de código python

Descubra como em meu novo Ebook:
Aprendizado profundo para processamento de linguagem natural

Ele fornece tutoriais de auto-estudo nos tópicos ...

Você também pode estar interessado em