Implemente modelos de legendagem de imagens neurais com PyTorch baseados na arquitetura codificador-decodificador.
O conjunto de dados é Flikr8k, que é pequeno o suficiente para o orçamento de computação e para obter resultados rapidamente. Dentro do conjunto de dados, existem 8.091 imagens, com 5 legendas para cada imagem. Portanto, é propenso a superajuste se o modelo for muito complexo. A fonte oficial está quebrada, outros links para o conjunto de dados podem estar aqui e aqui
A arquitetura do modelo é descrita abaixo. A rede do codificador para a imagem é Resnet-101 (pode ser carregada do torchvision). O decodificador é basicamente um modelo de linguagem baseado em LSTM, com o vetor de contexto (recurso de imagem codificada) como o estado inicial oculto/célula do LSTM [1]. O modelo atento também é implementado [2].
O modelo é treinado por SGD com impulso. A taxa de aprendizagem começa em 0,01 e é dividida por 10 quando estagnada em um platô. O momento de 0,9 e a redução de peso de 0,001 são usados.
O modelo [1] pode obter descrições relativamente razoáveis, com pontuação no teste BLEU-1 35,7.
Imagens | Legendas |
---|---|
Dois cachorros brincam na grama. | |
Uma pessoa está andando de caiaque no barco. | |
Um menino está mergulhando em uma piscina. | |
Duas pessoas sentam-se em uma doca perto da água. | |
Um jogador de futebol de uniforme vermelho corre com uma bola de futebol na frente de uma multidão. | |
Um snowboarder está pulando de uma colina. | |
Um cachorro marrom está brincando com uma bola na areia. | |
Um menino de camisa azul está correndo por um campo gramado. | |
Um grupo de pessoas vestidas com trajes coloridos. |
PyTorch 0.4.1
[1] Mostre e conte: um gerador de legenda de imagem neural (https://arxiv.org/abs/1411.4555)
[2] Mostre, assista e conte: geração de legendas de imagens neurais com atenção visual (https://arxiv.org/abs/1502.03044)