Компьютерное зрение, эстетический анализ и глубокое обучение работают над лучшим выбором миниатюр

Миниатюры играют решающую роль. Просматривая Dailymotion, вы можете посмотреть самые разные видео. От спортивных новостей до политики или трейлеров к фильмам - выбор чрезвычайно велик. Выбор конкретного видео может показаться немного сложным. Пользователи часто выбирают видео с наиболее привлекательными миниатюрами; миниатюры, наглядно предлагающие интересный контент.

Однако для создателя контента выбор точной миниатюры может быть довольно сложной задачей и потребовать много времени. У некоторых пользователей редакторы находят идеальные миниатюры для своих видео, но довольно большое количество пользователей не тратят время на то, чтобы найти лучшее изображение для своего видео. Мы хотим устранить этот процесс, разработав инструмент, способный создавать четкие, привлекательные и визуально привлекательные миниатюры. Это приведет к большему взаимодействию пользователей на веб-сайтах обмена видео, что очень важно как для пользователей, так и для Dailymotion.

Наш подход: внимание к эстетике

После некоторого исследования мы пришли к выводу, что главный ключ к созданию удачного эскиза - это изображение с великолепной эстетикой. Красивое изображение привлекает внимание пользователя. Совместите это с интересным названием, и вы получите больше шансов на взаимодействие с вашим видео. Поэтому нам нужно было найти способ отличать фотографии с хорошей эстетикой от фотографий с плохой эстетикой.

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

Мы использовали набор данных - AVA, крупномасштабную базу данных для эстетического визуального анализа. AVA содержит более 250 000 изображений, собранных с www.dpchallenge.com. Каждое изображение имеет эстетические аннотации. Изображения имеют распределение баллов от 1 до 10, 10 - это наивысший балл. В среднем за каждое изображение проголосовало 210 человек. Количество голосов колеблется от 78 до 549 за изображение. В результате мы работаем с достаточно большим набором данных с двоичными эстетическими оценками, полученными большим количеством голосовавших. Кроме того, каждое изображение также имеет семантическую аннотацию. Изображения аннотируются одним или двумя тегами из 66. Около 200 000 изображений имеют по крайней мере один тег, а около 150 000 изображений - два.

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

Построение модели глубокого обучения

Модель, которую мы затем обучили, представляет собой модель Tensorflow Keras Sequential. Модель состоит из 5 составных плотных слоев, как мы можем видеть на снимке экрана. Модель была обучена на 408'192 изображениях, которые соответствуют 80% набора данных.

Вот код нашей модели:

Функции активации

Активации для первых 4 плотных слоев являются ReLU, а для последнего - Linear. ReLU, или выпрямленная линейная единица, отображает только значения больше 0. Диапазон составляет [0; ∞). Эта функция активации привносит нелинейность. Вместо этого мы могли бы использовать активацию сигмоида или танха, но ReLU оказался более точным. Линейная активация используется для линейной регрессии, необходимой для прогнозирования оценки. Вот две описанные функции:

Предварительная обработка

Вход нашей модели 2048-мерный. Действительно, мы предварительно обработали наши данные, используя модель Google Inception V3, предварительно обученную на ImageNet. Inception V3 - это модель, состоящая из симметричных и асимметричных строительных блоков, включая свертки, среднее объединение, максимальное объединение, объединение, выпадение и полносвязные слои. Inception V3 - это модель распознавания изображений. Однако, если мы сокращаем последний слой GlobalAveragePooling и получаем активацию ReLu последнего скрытого модуля, мы получаем отличный способ встраивать наши изображения. Он сокращает полное изображение до вектора с 2048 характеристиками, что значительно упрощает и ускоряет обучение нашей модели. Ниже мы можем увидеть архитектуру модели Inception V3:

Обучение

Наша модель была обучена для 30 эпох и достигла среднеквадратичной ошибки валидации (MSE) 0,5028 на 12-й эпохе, прежде чем была сокращена из-за ранней остановки. В результате мы смогли построить модель, способную приписывать изображениям оценку от 1 до 10. Это был наш первый шаг в автоматическом выборе эскизов.

Наш метод: автоматический выбор правильного эскиза

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

1. Извлечение фреймов с помощью FFmpeg

Первым шагом было извлечение изображений из входного видео. Для этого мы использовали FFmpeg, открытый исходный код и библиотеку для обработки видео. С помощью FFmpeg мы извлекали изображения со скоростью один кадр в секунду. Мы считаем, что это хорошая скорость извлечения, поскольку более высокая скорость приведет только к извлечению похожих изображений, тогда как ее снижение может не захватить каждый импортируемый кадр. Мы использовали следующую команду для извлечения изображений:

ffmpeg -i {} -r  1 -f image2 image-%3d.png".format(video_name)

Затем мы могли бы работать с этими изображениями, чтобы попытаться найти наиболее подходящий эскиз.

2. Предварительная обработка изображений

Сетевые архитектуры, применяемые непосредственно к необработанным кадрам, непрактичны из-за огромного объема данных (сотни терабайт), хранилища и вычислительного масштабирования. Чтобы сделать набор данных более масштабируемым и практичным, мы использовали модель Inception V3 для предварительной обработки изображений. Вместо того, чтобы работать с изображениями 299x299x3, мы работали с 2048-мерными векторами признаков, что сделало каждое последующее вычисление более быстрым и эффективным.

3. Кластеризация изображений

Важным шагом была кластеризация наших данных. Это означало, что мы перегруппировали похожие изображения в кластеры, то есть каждый кластер содержит набор похожих изображений. Чтобы найти подходящее количество кластеров для конкретного видео, мы использовали DBSCAN, алгоритм обнаружения кластера на основе плотности. DBSCAN анализирует данные, выбирает похожие изображения и выводит k, количество кластеров. Важно помнить, что DBSCAN не полностью автономен. Это зависит от двух внешних гиперпараметров, epsilon и минимального количества выборок. Хотя эта последняя переменная может быть установлена ​​в 1, одно значение epsilon не подходит для каждого видео.

Эпсилон соответствует максимальному расстоянию, на котором две точки могут быть сгруппированы вместе. Чем больше радиус, тем меньше кластеров. В нашем коде эпсилон варьируется от 8 до 18, и его точное значение зависит от количества извлеченных изображений.

Мы связали это с алгоритмом K-средних, который группирует изображения, как мы можем видеть на изображении ниже:

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

4. Ранжирование изображений

Наконец, мы ранжируем изображения. Для этого мы передаем векторы признаков в нашу модель, которая предсказывает оценку. Модель присваивает каждому изображению оценку из 10. Изображение с наивысшей оценкой выбирается в качестве миниатюры видео. Мы считаем, что это изображение является миниатюрным видео. Как мы видим ниже, алгоритм точно различает изображения с высокой и низкой эстетикой, что очень важно.

Результаты нашего алгоритма

Чтобы увидеть общую производительность алгоритма, мы обработали видео из Yahoo Thumbnail Dataset. Это набор данных из 1018 видео. Мы сравнили наши результаты с автоматическим созданием миниатюр FFmpeg (который в настоящее время используется в Dailymotion):

ffmpeg -i input.mp4 -vf  "thumbnail,scale=640:360" -frames:v 1 thumb.png

Кураторские валидаторы были отобраны для качественной оценки характеристик модели. Их задача заключалась в том, чтобы вслепую оценить, учитывая два эскиза, один сгенерированный FFmpeg, а другой - нашим алгоритмом, основанным на модели глубокого обучения, который был наиболее привлекательным. Было обнаружено, что наш алгоритм имел лучший или аналогичный значок в 74% случаев. Поскольку оценка производительности нашего алгоритма может быть субъективной, мы обнаружили, что это наиболее точный способ проверки результатов. Вот несколько примеров:

Дальнейшее развитие

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

Также может быть интересно отслеживать выбранные миниатюры и их эффективность в отношении просмотров. Это можно сделать, внедрив модель обучения с подкреплением. Со временем такая модель научится выбирать эскизы, максимизируя показатели взаимодействия между посетителями и видео, такие как просмотры или клики.

Автоматизация процесса выбора эскизов - непростая задача. Один эскиз не может подойти каждому пользователю. Вот почему мы сделали все возможное, чтобы создать этот алгоритм, способный выбирать красивые изображения. Мы считаем, что эта работа поможет создателям контента, но также принесет пользу зрителям платформы, поскольку у них будет на выбор большее количество красивых миниатюр и видео. Это приводит к большему удовлетворению запросов пользователей и увеличению времени просмотра, что очень полезно для Dailymotion.