Сугам Арора, Марк Ляо, Уэсли Лю, Юфэй Шэнь, Джейсон Ван, Софи Кардоник

Введение

Нашей первоначальной целью в этом проекте было создание генеративной модели, которая генерировала бы подписи к изображению. Нашей второстепенной целью и основной частью нашего проекта было специальное создание «новостных» подписей к изображениям. В отличие от обычных подписей к изображениям, подписи к новостям обычно включают именованные объекты, такие как имена людей, местоположения, даты, чтобы помочь читателям понять изображение и его связь с окружающей новостной статьей, и, таким образом, подписи к новостным изображениям являются более сложными, чем обычные подписи к изображениям.

Подписи к изображениям — это задача создания подписей к изображениям. Цель состоит в том, чтобы предоставить краткое и точное описание содержания изображения. Обычно это выполняется с использованием алгоритмов машинного обучения, таких как глубокие нейронные сети, которые обучаются на больших наборах данных изображений и связанных с ними подписей. Эти алгоритмы могут автоматически генерировать подписи к изображениям, которые могут быть полезны для таких приложений, как обобщение новостей и автоматическое комментирование изображений.

Данные

Flickr 8k

Набор данных Flickr 8k представляет собой набор изображений и связанных с ними подписей. Он был создан исследователями из Мичиганского университета и использовался в ряде исследований по подписям к изображениям — задаче, включающей создание текстового описания изображения. Набор данных содержит 8091 изображение с пятью подписями, созданными человеком для каждого изображения. Изображения в наборе данных охватывают широкий спектр сцен и объектов, что делает его полезным ресурсом для обучения и оценки алгоритмов подписи к изображениям.

Хорошие новости

Набор данных GoodNews — это самый большой в литературе набор новостных подписей к изображениям, включающий 466 000 пар изображений и подписей. Набор данных GoodNews демонстрирует большую среднюю длину подписей, чем Flickr 8k, что указывает на то, что подписи к новостям, как правило, более описательные. Мы использовали подмножество из 8000 изображений и подписей из набора данных GoodNews из-за ограниченной вычислительной мощности.

Набор данных заполнителей объектов

Мы намеревались обучить модель созданию шаблонов заголовков, которые заменяют именованные объекты заполнителями. NER, или распознавание именованных объектов, — это задача обработки естественного языка (NLP), которая включает в себя идентификацию и классификацию именованных объектов в тексте. Именованные объекты — это определенные слова или фразы, которые относятся к объектам реального мира, таким как люди, организации, местоположения и даты. Затем эти объекты заменяются заполнителями, такими как ‹PERSON›, ‹ORG› или ‹DATE›. Чтобы создать этот набор данных заполнителей сущностей, мы использовали spaCy, библиотеку НЛП, которая предлагает NER для 18 именованных типов сущностей, чтобы преобразовать заголовки GoodNews. Таким образом, наш преобразованный набор данных GoodNews состоит из исходных изображений и измененных подписей к их заполнителям.

Построение модели субтитров к изображениям

Чтобы подойти к этому проекту, мы начали с просмотра блокнотов Kaggle, чтобы получить представление о подписях к изображениям. Самый примечательный пост, который мы нашли, находится по ссылке здесь. Мы черпали вдохновение из онлайн-блокнота при построении модели для создания основных подписей.

Наша модель, которую мы построили из сообщения Kaggle, которое мы нашли, может быть разбита на две части: раздел извлечения признаков изображения и раздел создания подписи. Для каждого изображения все они сначала были пропущены через предварительно обученную нейронную сеть изображений VGG16, при этом два ее последних слоя были обрезаны в качестве экстрактора признаков. Это разбило каждое изображение на 4096 отдельных значений для ввода в нашу следующую модель генерации подписей. Чтобы обработать текстовые данные в наших подписях, мы сначала пропустили их через токенизатор для векторизации каждой подписи и создали генератор данных, который будет сопоставлять каждое изображение с каждой возможной последовательностью слов в подписях, связанных с ним. Таким образом, мы могли бы создать модель LSTM, которая будет предсказывать последующее слово, которое будет следовать за входной последовательностью, и продолжать генерировать слова до тех пор, пока не будет сгенерирована полная подпись. Чтобы LSTM знал, когда начинать и заканчивать заголовок, в начало и конец каждого заголовка были добавлены слова «startseq» и ​​«endseq» соответственно. Общая архитектура модели из сообщения Kaggle подробно показана на рисунке ниже. Входные данные слева — это входная последовательность слов, а входные данные справа — изображение после того, как оно было передано через нейронную сеть VGG16.

Чтобы лучше понять, как данные преобразуются с помощью модели, обратитесь к этому рисунку, на котором используется ImageNet вместо VGG16 в качестве экстрактора признаков для изображений.

Обучение моделей

С этой архитектурой модели мы сначала обучили ее только набору данных Flicker8k за десять эпох, чтобы получить базовое представление о том, как она будет подписывать наши изображения. Оказалось, что он может создавать общие подписи для каждого изображения с общим представлением о том, что происходит. Чтобы расширить его для создания заголовков новостей, мы попытались настроить эту «предварительно обученную» модель Flicker в нашем наборе данных новостей на дополнительные 15 эпох (этот набор данных заголовков новостей состоит из набора новых заголовков с заполнителями объектов, созданных модель spaCy после запуска на подписях GoodNews). Мы также пытались обучить ту же архитектуру модели исключительно на наборе данных новостей. Мы сравнили результаты этих двух моделей при создании подписей для наших собственных случайных изображений, чтобы увидеть, есть ли какие-либо существенные различия с «тонко настроенной» версией.

Рабочий процесс проекта

Имея в своем распоряжении эти недавно обученные модели, мы создали приведенный ниже общий рабочий процесс для создания подписей. Черные стрелки указывают входные данные модели для обучения, синие стрелки указывают входные данные тестов для моделей, а красные стрелки указывают наши тестовые прогнозы, которые будут генерировать наши модели. Цель нашей новостной модели состояла в том, чтобы сгенерировать подпись, отражающую тему изображения с синтаксисом и тоном заголовка или подписи новостной статьи, в отличие от простой модели, которая генерировала общие подписи исключительно о содержании изображения.

«Обычная» модель в нашем проекте была обучена только на наборе данных Flicker8k. Когда мы тестировали модель с одной из наших собственных моделей, все, что мы делали, это вводили ее в модель и смотрели на ее предсказанный заголовок.

Модель «Новости» в нашем проекте начиналась как копия модели «Обычная» — модели CNN + LSTM, которая обучалась только на наборе данных Flicker8k. Однако мы дополнительно обучили эту модель «Новости» на отредактированной версии набора данных GoodNews.

Этот новый набор данных, который мы использовали для обучения модели «Новости», состоял из новых заголовков, в которых все имена собственные были заменены типами сущностей в зависимости от того, каким словом было каждое существительное в каждом заголовке. Эта замена имени собственного была выполнена путем запуска всех заголовков новостей в наборе данных GoodNews через модуль EntityRecognizer spaCy и замены исходных заголовков выходными данными EntityRecognizer.

После того, как мы обучили модель «Новости» на нашем пользовательском наборе данных, заголовки, созданные моделью, представляли собой шаблоны заголовков с типами сущностей вместо имен собственных. Чтобы заполнить эти заполнители сущностей, нам нужен был какой-то способ связать эти заполнители в каждой подписи к новости с каждым изображением, для которого мы хотели создать подпись. Поскольку наша модель будет принимать только изображения в качестве входных данных, она не может идентифицировать точные имена людей на изображении. Таким образом, сгенерированные подписи не предназначены для того, чтобы быть на 100% точными в том, что они идентифицируют на изображении, а вместо этого предполагается создать строку темы, связанную с тем, что происходит на изображении. Например, при наличии изображения Кевина Дюранта, играющего в баскетбол, сгенерированная подпись Леброна Джеймса, играющего в баскетбол, лучше, чем Лионеля Месси, играющего в баскетбол, потому что именованный объект «Леброн Джеймс» более соответствует истинному именованному объекту «Кевин Дюрант», поскольку они оба баскетболисты. Поэтому мы стремимся заполнить заполнители сущностей соответствующими именованными сущностями. Первым шагом в реализации этого соединения было использование предварительно обученной модели ImageNet для классификации каждого новостного изображения в наборе данных GoodNews. Каждое изображение в наборе данных GoodNews поставлялось с метаданными, в которых указывались именованные объекты для статьи, связанной с изображением, поэтому мы записали каждый объект в три верхних класса изображения (предсказано моделью ImageNet). Таким образом, мы могли бы заменить именованные заполнители сущностей в подписи, созданной нашей моделью «Новости», на некоторые имена собственные из статей, которые имели изображения с той же классификацией, что и данное тестовое изображение (модуль, который сохраняет эти имена собственные в соответствии с классами на приведенной выше диаграмме называется «Трансформатор текста»). Когда пользователь вводит изображение в наш проект, мы создаем шаблон подписи с именованными заполнителями объектов с помощью нашей модели «Новости», затем мы используем модель ImageNet для записи трех основных классов изображения и, наконец, мы заполняем подпись именами собственными. которые были сохранены в соответствующих трех классах изображения. На приведенной ниже диаграмме показано, что происходит, когда пользователь загружает изображение в наш проект.

Заключение

Оценка Блю

BLEU, или Bilingual Evaluation Understudy, — это метрика для оценки качества текста, созданного системами машинного перевода. Оценка BLEU рассчитывается путем сравнения сгенерированного текста с набором эталонных переводов и вычисления точности в n-граммах между ними. Оценка обычно выражается числом от 0 до 1, где 1 указывает на идеальное совпадение между сгенерированным текстом и эталонным переводом. Оценка BLEU обычно используется для сравнения производительности различных систем машинного перевода. Как правило, оценка BLEU в диапазоне 0,6–0,7 считается очень хорошей, а оценка BLEU выше 0,2 может считаться лучше, чем случайная. Оценки BLEU, которые мы получили для наших моделей новостей, были посредственными, но это можно объяснить дополнительной сложностью подписей к новостям по сравнению с обычными общими подписями к изображениям, а также недостатками BLEU как системы, где она не учитывает семантику слов. во внимание, когда он оценивает заголовок.

Ниже перечислены оценки BLEU для наших моделей:

Простая модель на flikr8k

БЛЕУ-1: 0,524007

БЛЕУ-2: 0,303727

Обучение только на новостях 20 эпох

БЛЕУ-1: 0,253347

БЛЕУ-2: 0,115936

Точная настройка модели

БЛЕУ-1: 0,243895

БЛЕУ-2: 0,114239

Результаты

После сравнения двух моделей результаты показывают, что наша модель новостей генерирует более подробные заголовки с меньшей грамматической последовательностью. Оригинальная модель Flicker8k имеет лучшую общую грамматику и распознавание на обычных изображениях, таких как пейзажи и животные. Новостная модель, с другой стороны, смогла генерировать лучшие результаты для изображений с людьми. Цель нашего проекта заключалась не в том, чтобы правильно идентифицировать людей на изображении, а в том, чтобы добавить имена, местоположения и другие объекты, чтобы сделать его похожим на новости, как показано в выводе ниже.

— — — — — — — — — — Прогноз — — — — — — — — — —

‹лицо› слева и ‹лицо› в ‹порядковом› раунде

Прогнозируемые классы изображений: ['баскетбол']

Прогнозируемые вероятности классов изображений: [0,9904275]

— — — — — — — — — — Создан заголовок новости — — — — — — — — — —

Кемба Уокер вышел, а Джек в первом раунде

— — — — — — — — — — Прогноз — — — — — — — — — —

‹человек› ушел и ‹человек› в финальном туре ‹дата›

Прогнозируемые классы изображений: [‘регби_мяч’, ‘футбольный мяч’]

Прогнозируемые вероятности классов изображений: [0,32739288, 0,6284489]

— — — — — — — — — — Создан заголовок новости — — — — — — — — — —

Альваро Негредо вышел, а Кинг в финальном раунде на выходных

— — — — — — — — — — Прогноз — — — — — — — — — —

бывший исполнительный директор ‹организации› на пресс-конференции в ‹гпе› ‹дата›

Прогнозируемые классы изображений: [‘валторна’, ‘академическая_платье’]

Прогнозируемые вероятности классов изображений: [0,10656656, 0,37626943]

— — — — — — — — — — Создан заголовок новости — — — — — — — — — —

бывший исполнительный директор Маленькой Сирии Гингрич на пресс-конференции в США в октябре

— — — — — — — — — — Прогноз — — — — — — — — — —

‹человек› выступает в ‹gpe› ‹дата›

Прогнозируемые классы изображений: ['ocarina']

Прогнозируемые вероятности классов изображений: [0,08605006]

— — — — — — — — — — Создан заголовок новости — — — — — — — — — —

Корб выступает в Вильямсбурге в среду

— — — — — — — — — — Прогноз — — — — — — — — — —

ледник кори калыс в ‹гпе›

Прогнозируемые классы изображений: [‘долина’, ‘альп’]

Прогнозируемые вероятности классов изображений: [0,2326671, 0,6006406]

— — — — — — — — — — Создан заголовок новости — — — — — — — — — —

ледник Кори Калис в Сильвиколе

— — — — — — — — — — Прогноз — — — — — — — — — —

пустая стоянка ‹org› шоколадных флагов в ‹gpe› в ‹date›

Прогнозируемые классы изображений: [‘песчаная отмель’, ‘морской берег’]

Прогнозируемые вероятности классов изображений: [0,47567493, 0,5123025]

— — — — — — — — — — Создан заголовок новости — — — — — — — — — —

пустая автостоянка квартета Уэйна Шортера помечается шоколадными флагами в Муни ежемесячно

— — — — — — — — — — Прогноз — — — — — — — — — —

могилы для могил на набережной в ‹гпе›

Прогнозируемые классы изображений: [‘крыло’, ‘авиалайнер’]

Прогнозируемые вероятности классов изображений: [0,11587425, 0,83068305]

— — — — — — — — — — Создан заголовок новости — — — — — — — — — —

могилы для могил на набережной в Лос-Анджелесе

Точки улучшения

Чтобы повысить производительность нашей модели, мы можем обучить дополнительные выходные данные новостей от BERT, что позволит ему более точно изучать такие сущности, как «человек», «gpe» и «организация». Еще одним методом, который мог бы улучшить наши результаты, было бы добавление предварительно обученной модели CLIP в конце нашего рабочего процесса. CLIP — это нейронная сеть, которая может предсказывать наиболее релевантный текст по изображению и выбранным подписям. Вместо того, чтобы генерировать одну подпись, наша модель может создать несколько, а затем использовать CLIP, чтобы выбрать лучшую подпись из вариантов. Последний метод, который мы могли бы использовать для улучшения результатов нашей модели, — это сжатие заголовков в нашем наборе данных для обучения новостям. Это связано с тем, что некоторые заголовки в наших наборах данных новостей содержали информацию, не относящуюся к соответствующему изображению, что вносило больше путаницы в нашу модель при ее обучении. Сжав заголовки, мы могли бы получить более краткие и репрезентативные заголовки для каждого обучающего изображения новостей, что потенциально улучшило бы производительность нашей модели.

Ссылки:

Github: https://github.com/enwq/News-like-captions-generator