Поиск подобия мультимедийных данных может быть просто понят как выражение их признаков с помощью различных мультимедийных материалов, а затем их поиск и сортировка в соответствующем пространстве признаков. Существует два способа выражения признаков: один — это визуальные признаки, извлекаемые традиционными методами, такими как признаки ключевых точек, цветовые гистограммы и т. д.; другой основан на глубоком обучении для извлечения лежащих в его основе базовых признаков или высокоуровневых семантических признаков (глубокий анализ). Особенности). Meitu DeepHash — это крупномасштабная система поиска мультимедийных данных, основанная на технологии глубокого хеширования. Система опирается на массивные мультимедийные данные и разделена на два модуля: алгоритмический и сервисный.
Для получения дополнительных галантерейных товаров, пожалуйста, обратите внимание на публичный аккаунт WeChat «AI Frontline» (ID: ai-front)
В соответствии с характеристиками контента коротких видеороликов Meipai мы предлагаем серию индивидуальных стратегий оптимизации алгоритмов, от формулировки меток, обработки данных до проектирования сети алгоритмов.
Прежде чем обсуждать конкретные технические решения, давайте подумаем над вопросом: как описать видео? Прежде чем использовать хеширование видео, мы использовали систему тегов для описания видео. На рисунке 1 показаны наиболее распространенные системы маркировки Meipai, такие как музыка, домашние животные, танцы, учебные пособия и т. д. Недостатки использования системы маркировки для описания видео: метки в основном используются для обобщения и описания содержания видео и содержат относительно большое количество информации. Меньше, некоторые подробные сведения не могут быть отражены, а метка представляет собой дискретное описание. И как люди описывают видео? Взяв в качестве примера скриншот видео в верхнем левом углу, люди скажут: это две маленькие девочки в голубых одеждах, играющие на гитаре и поющие. Из этого можно сделать вывод, что люди используют визуальные признаки для описания видео, которые содержат богатую информацию и разнообразные измерения и являются непрерывными описаниями Очевидно, что это более разумный метод описания.
Рисунок 1
Подробнее об использовании тегов В частности, использование тегов для описания видео имеет следующие проблемы.
1.Слабая способность к выражению информации, неспособность отражать более детализированную информацию.. Скриншот видео, показанный на рис. 2, показывает девушку в зеленом ханьфу, танцующую в парке. Его тег содержимого — это танец, и прочую информацию из тега трудно прочитать. Если вы попробуете более сложную систему маркировки, такую как добавление таких измерений, как сцена, объект, пол и т. д., вы обнаружите, что трудно исчерпывающе перечислить все ситуации, и даже стоимость маркировки очень высока.
фигура 2
2.Трудно сравнивать сходство между информацией, и информацию трудно измерить.. Все три тега видео, показанные на рисунке 3, являются «собаками». По тегам трудно определить, какие два видео более похожи. Если вы используете визуальные признаки, легко обнаружить, что видео слева больше похоже на видео в правом верхнем углу. Конечно, мы можем использовать тип и количество собак, чтобы вычислить сходство между двумя картинками, но когда содержание картинки более сложное и объектов много, этот метод применять сложно.
изображение 3
Алгоритмы хеширования видео используют визуальные признаки для описания видео, которые имеют следующие характеристики:
Разнообразие. Функции содержат больше размерной информации, больше информации и различное содержимое, которое можно выразить;
прочность. Если два видео похожи, характеристики, которые они выражают, также схожи, и извлеченные функции также должны быть стабильными;
Расстояние можно рассчитать. Расстояние между функциями можно рассчитать, и сходство двух функций описывается расстоянием Чем меньше расстояние, тем больше похоже видеоконтент.
Технология извлечения видео на основе функций имеет широкий спектр сценариев применения, таких как рекомендации визуально похожих видео, поиск конкретного видео, просмотр видео, дедупликация видео и т. д. Кроме того, извлеченные функции видео также можно использовать для кластеризации функций и интеллектуальный анализ контента для добычи горячего контента и открытия новых классов.
Есть два общих выражения функций: функции с плавающей запятой и бинарные функции.
Двоичные функции имеют значительные преимущества в скорости хранения и поиска: использование двоичного хранилища очень эффективно; использование расстояния Хэмминга для расчета расстояния увеличивает скорость поиска. Однако при расчете расстояния для объектов с плавающей запятой обычно используется евклидово расстояние или косинусное расстояние, что имеет высокую вычислительную сложность и медленную скорость поиска. . Все бинарные признаки равны 0 и 1, и признаки относительно стабильны. Основываясь на вышеизложенной ситуации, мы применяем в нашем бизнесе метод выражения признаков, основанный на двоичной форме.
Рисунок 4
Общий процесс извлечения хеш-функций видео таков: сверточная нейронная сеть извлекает функции видео, отображает функции в функции фиксированной длины с плавающей запятой и отображает функции с плавающей запятой, за которыми следует сигмоидный слой, в интервал [0,1]. Квантуется в двоичную форму пороговым значением.
Обучение сетевых моделей извлечению хеш-функций можно разделить на контролируемые и неконтролируемые формы. Обучение с учителем основано на размеченных данных для обучения, а для улучшения выразительности признаков добавлена специальная функция потерь. Его особенностью является то, что выражение признака является управляемым, и метка может указать сети, какие признаки следует сосредоточить на обучении; неконтролируемое обучение обучается на основе немаркированных данных, и обычно изучается способность выражения признака посредством преобразования самого изображения, поэтому признак заключается в том, что выражение функции не является хорошим контролем, сложнее вмешаться, какие функции должна изучить сеть. Неконтролируемое обучение все еще находится на стадии академических исследований, и его трудно напрямую применить в бизнесе. Таким образом, наша принятая в настоящее время схема также основана на контролируемом алгоритме хеширования видео.
Рисунок 5
Процесс алгоритма хэширования видео Meipai в основном разделен на пять модулей: маркировка, данные, сеть, обучение и прогнозирование. Для каждого модуля мы разработали несколько индивидуальных стратегий оптимизации, основанных на характеристиках данных и бизнес-логике Meipai. Связанная работа этих пяти модулей описана ниже.
Meipai имеет сотни систем тегов для работы с контентом, охватывающих общий контент и категории коротких видео Meipai. Однако эти существующие бизнес-лейблы не подходят для прямого обучения алгоритму, в основном из-за следующих проблем:
Распределение популярных видео по меткам показано на рисунке 6. Видно, что количество данных в каждой категории крайне неравномерно. Когда алгоритм обучен, если количество данных некоторых категорий относительно невелико, сети будет сложно изучить способность этих категорий к обучению и выражению признаков.
Изображение 6
Система бизнес-маркировки не разделена по визуальным характеристикам, что приводит к визуальной неразделимости разных категорий видео. Непосредственное обучение с такой меткой приведет к множеству ошибочных классификаций, и сети будет сложно изучить характеристики каждой категории.
Рисунок 7
Система бизнес-меток основана на разделении наиболее важного смыслового содержания и не может отражать информацию других измерений. Такие параметры, как одежда, сцена, пол и т. д., не могут быть отражены в этой системе меток. Обучение сети с помощью этой системы меток не может изучить представления признаков других измерений.
Для решения трех вышеуказанных проблем мы предлагаем многомерную и многоуровневую систему маркировки. «Многомерность» означает, что вы можете добавлять измерения в систему этикеток в соответствии с потребностями бизнеса; «многоуровневость» отражается в том, что она иерархична, и первый уровень должен быть визуально отделим, например, вышивка, красота, танец пальцев. и т. д. Категории визуально похожи на селфи, поэтому эти категории разделены на одну категорию на первом уровне для обеспечения визуальной разделимости.
Однако многомерная и многоуровневая система маркировки принесет некоторые новые проблемы. Во-первых, массивные данные маркируются в нескольких измерениях, а стоимость маркировки слишком высока. Во-вторых, модельная сетевая структура, которую мы принимаем, представляет собой каскадный метод.Каждая категория первого уровня имеет соответствующую модель второго уровня для извлечения признаков.Количество моделей велико, а вычислительная сложность также высока. Чтобы решить эти две проблемы, мы оптимизируем как аннотацию данных, так и дизайн сети.
Что касается данных, мы используем автоматические методы маркировки, чтобы снизить затраты на маркировку. Например, для пакета видеоданных, который был помечен тегами контента, нам нужно пометить его в измерении одежды. Тогда процесс автоматической маркировки:
Маркируйте небольшое количество данных.
Отдельный классификатор обучается на небольшом количестве данных, и точность классификатора составляет более 99% путем настройки уровня достоверности, то есть уровень достоверности выходного результата классификатора выше определенного порога, и результат заслуживает доверия.
Данные автоматически маркируются этим классификатором, а детали с высокой достоверностью сохраняют свои этикетки на одежде. Эта часть с низкой достоверностью не уверена, что этикетка на одежде точна, поэтому этикетка на одежде однозначно записывается как -1. Когда сеть обновляется, эта часть данных обновляет только потерю метки содержимого и не обновляет потерю метки одежды.
Чтобы видеофункции содержали многомерную информацию, во время обучения применяется метод совместного обучения с несколькими метками, чтобы уменьшить сложность многомерной модели.
Рисунок 8
Ввиду высокой вычислительной сложности вторичной модели, упомянутой выше, мы используем метод совместного использования признаков для оптимизации. То есть общие базовые признаки извлекаются из видеосети, общие признаки сначала отправляются в модель категорий первого уровня для классификации и извлечения признаков, а соответствующая модель категорий второго уровня вызывается для извлечения признаков в соответствии с классификацией. результаты категориальной модели первого уровня. Используя MobileNet в качестве базовой сети, каждое видео извлекает 5 кадров данных, выводит двухуровневую модель и может достигать скорости обработки 100 видео в секунду на Titan X.
На этапе обучения сети используется потеря триплетов для повышения выразительности признаков. Потеря триплетов сократит расстояние между похожими видео и расстояние между непохожими видео.
Рисунок 9
Более важным вопросом является то, как эффективно выбирать пары положительных и отрицательных образцов при обучении потери триплетов. Мы выбираем положительный образец видео, извлекая кадры интервала.Предположим, видео извлекает 10 кадров, из которых 1-й, 3-й, 5-й, 7-й и 9-й кадры используются в качестве целевых видеоклипов, а 2-й, 4-й, 6, 8, и 10-е кадры используются в качестве положительных образцов.Образцы видеоклипов, в то время как отрицательные образцы видеоклипов взяты из других видео разных категорий. В этом есть два преимущества: 1. Видео положительного образца похоже на целевое видео, и его легко свести 2. Нет необходимости в маркировке, что снижает стоимость маркировки.
После получения хэш-кода функции мы повышаем точность поиска, обрабатывая маску категории. Роль маски категории заключается в том, чтобы скрыть малозначительные элементы и сохранить важные элементы.
Рисунок 10
Как показано на рис. 10, мы считаем, что существует разделение труда между местоположениями с различными характеристиками. Информация, необходимая для нахождения битовых позиций важных признаков, хранится в весовых параметрах последнего слоя сети.
Рисунок 11
На рисунке 11 показан метод извлечения маски класса, а средняя часть представляет собой весовой параметр слоя классификации сети. Его форма равна количеству категорий, умноженному на длину признака, и каждый столбец весов представляет соответствующую категорию. Когда мы вводим видео в сеть, чтобы получить его категорию, мы можем найти соответствующий вес категории, взять абсолютное значение этого столбца значений веса и отсортировать их от большего к меньшему, Мы обнаруживаем, что эти абсолютные значения относительно Положение веса является важным положением в хеш-функции.
Подробное описание маски категории см. в документе «Глубокое хеширование с маской категории для быстрого поиска видео»: https://arxiv.org/pdf/1712.08315.pdf.
Рисунок 12
На рис. 12 показан общий поток сети. Принят метод совместного обучения с несколькими метками, а потеря триплетов используется для улучшения способности выражения.Сетевая структура использует каскадную модель и метод совместного использования функций. Наконец, маска категории используется для повышения точности поиска.
Рисунок 13
На рис. 13 показаны точность и производительность модели. Видео в верхнем левом углу рендеринга поиска является целевым видео, за которым следует результат поиска.
Как упоминалось ранее, система DeepHash состоит из двух основных модулей: алгоритмов и сервисов. Взяв в качестве примера видео Meipai, мы представили наш алгоритм извлечения хеш-функций видео. Далее мы представляем сервисную часть системы DeepHash.
Сервисы DeepHash делятся на офлайн-задачи и онлайн-задачи. Автономная задача отвечает за генерацию хэш-кодов массивных видеоданных в качестве целевой библиотеки функций. Конкретный контент включает в себя два модуля: обучение модели и создание функций. Короткие видеоданные пользовательского контента имеют сильную своевременность, а содержание видео в разные периоды времени отличается, поэтому бизнесу необходимо использовать самые свежие данные для регулярного обучения и обновления модели. После получения новой сетевой модели необходимо обрабатывать исторические видео в пакетном режиме, чтобы генерировать новые хэш-коды и обновлять их до целевой библиотеки функций.
Онлайн-задачи отвечают за обработку поисковых запросов в режиме реального времени и возврат аналогичных результатов вызывающей стороне. Когда приходит запрос на поиск, модуль запроса сначала обращается к массивной базе данных целевых объектов, чтобы проверить, существует ли текущий запрошенный хэш видео.Если он существует, он будет использовать текущий хэш-код для расчета расстояния от хэш-кода цели база данных функций и возвращает тот же результат, что и top. Результат; если он не существует, служба вызовет модель прогнозирования, извлечет хэш-код видео, использует хэш-код для поиска в целевой базе данных и добавит прогнозируемый хэш. код в целевую базу данных объектов одновременно.
Служба DeepHash прошла три этапа итерации версии и оптимизации от начальной поддержки популярного пула видео с одним репозиторием до последней версии, которая поддерживает полный поиск видео.
Рисунок 14
Первоначальная версия V1.0 работает на одном узле и оптимизирует только сегментирование и параллельный поиск базы данных объектов.Эта версия поддерживает базовое извлечение базы данных объектов в пределах одного миллиона.
Версия V2.0 поддерживает извлечение большего количества форм медиаданных.В этой версии у нас есть доступ к алгоритму извлечения аудиофункций. Поддерживает поиск сходства как в видео, так и в аудио формах. Чтобы поддерживать несколько типов мультимедийных функций, версия 2.0 унифицирует индекс и выполняет группировку и сегментацию для базовой базы данных функций (группировка: классификация, сначала определение категории, а затем выполнение запроса на сегментирование данных), и в то же время повысить стабильность поиска. При вырезании видео используются асинхронные вызовы для уменьшения блокировки ввода-вывода.
Версия 3.0 находится в стадии разработки. Она работает на контейнерных кластерах и оптимизирует кластеризацию поиска. Цель состоит в том, чтобы поддерживать извлечение в реальном времени сотен миллионов базовых библиотек функций.
Рисунок 15
На рис. 15 представлена иерархия бизнес-логики для поискового кластера. Среди них прокси-уровень отвечает за распределение запросов, которое может быть расширено без сохранения состояния при высоком уровне параллелизма; бизнес-уровень предварительно обрабатывает и упаковывает данные, вызывает службу извлечения уровня данных и инкапсулирует результаты в удобочитаемый для пользователя файл. форма; уровень данных запускает алгоритм поиска, делит данные базы данных объектов на срезы и выполняет параллельный поиск, чтобы обеспечить своевременность и стабильность поиска;
Далее мы показываем производительность поиска системы DeepHash. С точки зрения производительности хранилища, использование 128-битного хэш-кода для представления видео и хранения 100 миллионов видео требует менее 1,5 ГБ дискового пространства. С точки зрения скорости поиска, для запуска 8 экземпляров требуется 0,35 с, чтобы выполнить полное извлечение видео из базовой базы данных с 1 миллионом объектов; для выполнения полного извлечения видео из базовой базы данных из 300 миллионов объектов с использованием 50 экземпляров требуется всего 3 секунды.
Рис. 16 Решение DeepHash для поисковой системы в реальном времени
DeepHash — это мультимедийная поисковая система общего назначения.В дополнение к уже поддерживаемому поиску схожести видео и аудио в будущем будут добавлены дополнительные типы мультимедийных данных, например поддержка поиска таких данных, как изображения и тексты.
В настоящее время система DeepHash обеспечивает аналогичный поиск видео в рекомендательном бизнесе и дедупликацию видео в операционном бизнесе. В будущем будет доступен и аудиторский бизнес.
Рисунок 17