Реализуйте модели нейронных подписей к изображениям с помощью PyTorch на основе архитектуры кодировщика-декодера.
Набор данных — Flikr8k, он достаточно мал для расчета бюджета и быстрого получения результатов. В наборе данных содержится 8091 изображение с 5 подписями к каждому изображению. Таким образом, если модель слишком сложна, она склонна к переобучению. Официальный источник не работает, другие ссылки на набор данных могут быть здесь и здесь.
Архитектура модели описана ниже. Сеть кодировщика изображения — Resnet-101 (можно загрузить из torchvision). Декодер, по сути, представляет собой языковую модель на основе LSTM с вектором контекста (функция закодированного изображения) в качестве начального скрытого состояния/состояния ячейки LSTM [1]. Также реализована модель внимательности [2].
Модель обучается SGD с импульсом. Скорость обучения начинается с 0,01 и делится на 10, поскольку она застряла на плато. Используются импульс 0,9 и распад веса 0,001.
Модель [1] может получить относительно приемлемые описания с оценкой теста BLEU-1 35,7.
Изображения | Подписи |
---|---|
Две собаки играют в траве. | |
Человек катается на байдарке в лодке. | |
Мальчик плескается в бассейне. | |
Два человека сидят на причале у воды. | |
Футболист в красной форме бежит с футбольным мячом перед толпой. | |
Сноубордист прыгает с горки. | |
Коричневая собака играет с мячом на песке. | |
Мальчик в синей рубашке бежит по травянистому полю. | |
Группа людей, одетых в яркие костюмы. |
Питорч 0.4.1
[1] Покажи и расскажи: нейронный генератор подписей к изображениям (https://arxiv.org/abs/1411.4555)
[2] Показывай, присутствуй и рассказывай: создание подписей к изображениям на основе нейронных сетей с помощью визуального внимания (https://arxiv.org/abs/1502.03044)