É uma imagem vale mais que mil palavras?

Mouhamed Ndoye Blocked Unblock Seguir Seguindo 16 de dezembro de 2018 Fonte: Dark Reading

fundo

Nosso projeto foi inspirado por Jamie Ryan Kiros, que criou um modelo treinado em 14 milhões de passagens românticas para gerar uma curta história romântica para uma única entrada de imagem. Da mesma forma, o objetivo final do nosso projeto foi produzir um conto para crianças.

“Neural-storyteller é uma rede neural recorrente que gera pequenas histórias sobre imagens” – Jamie Ryan Kiros

Referência: https://github.com/ryankiros/neural-storyteller

Objetivos do Projeto

  1. Atualizar código do Python 2 para o Python 3+
  2. Recriar o projeto original que foi treinado em romances românticos
  3. Raspe histórias infantis
  4. Treinar o decodificador skip-thought pela RNN em histórias infantis para criar dados de viés de estilo
  5. Reunir rótulos e legendas de imagens da API do Microsoft Azure Vision
  6. Saída de um conto para crianças com base na entrada de uma única imagem
  7. Compare a saída para romance e gênero de histórias infantis

Coleção de dados

O plano inicial era raspar livros infantis (em formato PDF) da SmashWords (como recomendado por Jamie), mas enfrentamos desafios para obter bibliotecas em Python e PyPDF2 para extrair todas as palavras de um determinado PDF. Em vez disso, nos concentramos em criar sites que continham histórias prontamente disponíveis na formatação de texto HTML. Usando a extensão do Web Scraper por meio do Google Chrome, conseguimos coletar histórias de crianças de várias fontes. Veja um exemplo de gráfico de seletor que usamos para navegar pelas páginas da Web de um site:

Exemplo : gráfico seletor do Web Scraper

Uma vez que agregamos os dados em um único arquivo, nós o executamos contra o nltk para analisar os dados em sentenças. Essa abordagem aumentou nosso tamanho do conjunto de dados para quase 45.000 sentenças. Os seguintes sites foram copiados como parte do nosso processo de coleta de dados:

Recursos

Conseguimos configurar o Jupyter Notebook como uma instância do Google Cloud seguindo o tutorial do Amulya Aankul.

OBSERVAÇÃO : Aumentamos o tamanho da imagem do disco para 100 GB após experimentar vazamentos de memória com o disco de 10 GB.

Configuração do modelo

Para tornar o novo modelo uma pequena história para crianças, treinamos o decodificador da Rede Neural Recorrente (RNN) em histórias infantis. Um pouco diferente do modelo de Jamie, cada sentença foi mapeada para um vetor de pensamento saltado que gera algumas sentenças que o RNN condicionou no vetor de pensamento saltado. No modelo de Jamie treinado em romances, ela usa passagens, mas, dado nosso conjunto de dados significativamente menor, nós dividimos as passagens em sentenças para aumentar nosso conjunto de dados.

Fonte: Blog do Google

Durante a configuração do modelo, enfrentamos desafios ao treinar imagens e legendas de objetos comuns no contexto (COCO) . A imagem acima detalha como a Vision Deep CNN gera legendas usando um RNN gerador de linguagem na camada final. Dadas as restrições de tempo para este projeto, decidimos usar a API de visão do Microsoft Azure, que gerava vários rótulos de imagem e uma única legenda. Nós, então, concatenamos os rótulos das imagens em uma única legenda para que pudéssemos inserir duas legendas. Nós fornecemos dois exemplos mais tarde neste post. No modelo de Jamie, o conjunto de dados COCO fornece cinco legendas. Nossa hipótese é que essa diferença no número de legendas impactou a capacidade do nosso modelo de desenvolver uma gramática melhor e um estilo mais apropriado para uma história infantil.

A função mencionada acima nos permitiu conectar as legendas da API do Vision ao conto gerado pelo modelo. A fórmula foi construída usando três vetores diferentes:

  • X = uma legenda de imagem
  • C = "estilo de legenda"
  • B = vetor de "estilo de livro"

Conforme detalhado por Jamie em seu projeto, os vetores skip-thought são sensíveis aos seguintes fatores:

  • Comprimento – No nosso caso, nossas sentenças mais curtas (quando comparadas às passagens) impactaram a duração do conto. De um modo geral, a contagem de palavras de uma história infantil foi de cerca de um terço com a de uma história romântica gerada.
  • Pontuação – Observamos que a pontuação (para ambos os modelos) foi limitada a pontos, vírgulas e pontos de interrogação. Isso pode ser uma coincidência em como os diferentes conjuntos de dados foram analisados em passagens / sentenças.
  • Vocabulário – Nós hipotetizamos que haveria uma diferença notável no vocabulário, uma vez que os públicos-alvo para romances e histórias infantis são bem diferentes. Nos exemplos abaixo, é evidente que o vocabulário utilizado nas histórias românticas é mais maduro
  • Estilo sintático – Da mesma forma, o estilo sintático foi amplamente baseado nas passagens / frases usadas para treinar os modelos. Em nossos testes, não houve diferenças notáveis no estilo entre o romance e as histórias infantis.

Fluxo de trabalho

Finalmente, fomos capazes de empacotar todos os componentes em um único modelo.

  1. Envie uma imagem para a API do Microsoft Azure Vision
  2. A API do Microsoft Azure Vision exibe rótulos de imagem e uma legenda : nesta etapa, concatenamos os rótulos de imagem para que eles sejam apresentados ao modelo como legenda
  3. Envie os rótulos das imagens e a legenda para o modelo: com duas legendas, uma fornecida pela API do Vision e outra concatenada de rótulos de imagem, nós as enviamos ao modelo junto com o estilo (ou o gênero da estória neste projeto)
  4. Modelo produz um conto

Resultados

De um modo geral, a quantidade de conteúdo para histórias românticas (geradas pelo modelo) era muito maior do que a de contos para crianças. Imagens do elenco de amigos e pizza foram enviadas como parte do nosso teste. Veja as saídas abaixo:

Fonte: O Independente

Amigos: rótulos e legendas de imagens concatenadas

['pessoa pessoas grupo posando foto em pé sentado janela mulher homem segurando terno bolo comida mesa', 'Matt LeBlanc, Lisa Kudrow, Courteney Cox, David Schwimmer, Jennifer Aniston posando para uma foto']

Amigos: história romântica

Jess estava pensando que nunca seria minha culpa, ela sorriu e deixou Kat tocar suas emoções novamente, antes de virar a cabeça e deixá-lo entrar no chuveiro assim que ela o deixasse tocá-la, Anna rapidamente voltou sua atenção para mim, sabendo que ele poderia ser a única vez antes de ela entrar na minha suíte na cobertura, fazendo Liv corar de novo. Quantas vezes eu tenho que descobrir por que minha mãe ia se casar com ele? Não fique feliz por ela ser minha peça de joalheria favorita. O álbum de fotos era perfeito, mas parecia perfeito. Ela apontou o dedo indicador para mim e apontou o dedo indicador para os meus lábios. Não mude meu terno. A única outra mulher que eu conheci era sexy e sexy como os outros dois membros masculinos da cerimônia de casamento. E minha mãe, Nat, Mel Miller, que parecia acreditar que tinha escolhido a morena perfeita lá fora.

Amigos: história infantil

Mas, se eu tivesse dito à mãe dela que lhe dissesse a verdade, se ela estivesse louca, o jovem que nunca estivera olhando para fora do pai, obrigado a cuidar de seu pai, por causa do pai, que era obrigado a cuidar do pai, eu nunca deveria ver se ela tinha comido os olhos, pelo bem da filha do rei, que era obrigada a cuidar do pai, que não tinha mais nada seu temperamento