Как работает технология
В основе работы DeepDive лежит несколько распространённых свёрточных нейронных сетей. Взаимодействуя между собой, они могут помочь распознать актёра или музыку в фильме.
В первую очередь нужно определить, что на конкретном изображении вообще есть человеческое лицо, то есть первоначально решается задача детектирования лица.
Затем можно сопоставить этому лицу некоторый математический объект, то есть сигнатуру — многомерный вектор, описывающий лицо. Основное свойство этой сигнатуры в том, что у похожих лиц будет похожая сигнатура, а у непохожих лиц будут непохожие сигнатуры. Так возможно работать с лицами как с математическими объектами.
Третья задача — идентификация лица, выяснение, какому актёру оно принадлежит.
В результате DeepDive — продукт последовательного решения этих трёх задач. Для его создания понадобилось огромное количество экспериментов и разных подходов.
Как найти нужного актёра
Искать в мировых библиотеках актёров — весьма ресурсозатратно. Поэтому зона сужена до энциклопедии Кинопоиска. Отбирается список актёров, игравших в конкретном фильме или серии, сопоставляется с профильными фотографиями, а затем определяется их сигнатура.
У актёров огромное количество ролей, и их внешний вид может значительно меняться — из-за смены цвета волос, использования линз и так далее.
Например, если кто-то настолько изменён, что его трудно узнать, алгоритмы, скорее всего, тоже не справятся. В таких ситуациях на помощь приходят дополнительные методы.
После работы нейросетей и автоматических алгоритмов оценивается степень уверенности в результате. Если система не уверена, что перед ней нужный актёр, этот вопрос выносится на краудсорсинговую платформу.
Если и на этом этапе остаются сомнения, задачу передают более опытным специалистам — редакторам. Они могут провести детальное исследование: поискать информацию в Google и Яндексе, свериться с референсами, проверить IMDb и другие источники. В результате они смогут точно сказать, соответствует ли изображение конкретному актёру.
Несмотря на возможности машинного обучения, финальное решение остаётся за человеком. Но благодаря автоматическим алгоритмам доля ручной работы значительно сокращается.
Статика vs динамика
В целом со статикой процесс проще. Если есть список кандидатов, подходящих под определённые параметры актёра, и можно сравнить их сигнатуры, то при условии, что человек на фотографии смотрит в камеру, хорошо освещён и его лицо полностью видно, вероятность успешного распознавания будет высокой.
С видео ситуация становится гораздо сложнее.
Но именно такие случаи и важно распознавать. Поэтому разработчики стараются применять более сложные методы, чем просто детектирование наличия лица и его сигнатуры.
Когда говорят об обучении алгоритма, обычно подразумевают обучение конкретной модели машинного или глубокого обучения. Но в случае с DeepDive были использованы уже готовые технологии, разработанные в Яндексе. Например, в компании есть отдел компьютерного зрения, предоставляющий сервис распознавания лиц, который был интегрирован в DeepDive. Эта технология применяется не только Кинопоиском, но и другими сервисами. Нейросеть не обучалась с нуля: готовая разработка была адаптирована для задач DeepDive.
Ошибки неизбежны
Распознавать лица в фильмах значительно сложнее, чем, например, в метро. В реальной жизни алгоритмы работают в контролируемых условиях: камеры размещены так, чтобы запечатлеть лицо с нужного ракурса, обеспечено хорошее освещение, а человек вынужден смотреть в объектив, например, проходя через турникет.
В кино всё иначе: актёры часто загримированы, камера может снимать со спины, сбоку или в тени, режиссёрские приёмы могут намеренно скрывать лицо, в сцене может быть злодей, личность которого нужно сохранить в тайне.
Бывают ситуации, когда два актёра проходят друг за другом, и их лица могут «перескочить»: если лицо одного актёра видно нечётко, алгоритм может ошибочно принять его за другого.
Также сложность возникает, если актёр в профильной базе выглядит иначе. Например, на фото в энциклопедии Кинопоиска он молодой, а в фильме ему уже 50 лет. Или актёр изменил свой стиль, причёску, сделал пластику носа, надел линзы. В таких ситуациях алгоритму будет сложнее сопоставить изображения.
К тому же в кино снимается очень много людей, и подобрать актуальные фотографии для всех — задача крайне сложная. Это можно сделать только для самых популярных актёров.
Непростые кейсы
Система хорошо работает именно с популярными актёрами и фильмами. Их относительно немного, поэтому с ними всё в порядке. Но когда речь идёт о нишевых проектах — например, военных фильмах с тысячами участников массовки, — возникают сложности.
Система работает только с лицом: строит его сигнатуру и сравнивает с базой. Конечно, можно совершенствовать технологию и добавлять новые методы, но покрытие небольшой доли случаев часто не оправдывает затрат. Поэтому всегда приходится расставлять приоритеты: что действительно важно для работы алгоритма, а чем можно пренебречь. Это компромисс между трудозатратами, вычислительными ресурсами, финансами и временем специалистов.
Работает ли DeepDive вне Кинопоиска?
В совокупности для распознавания лиц и музыки в технологии используются 6–7 различных нейросетей. Сам DeepDive как продукт привязан к Кинопоиску, но отдельные его нейросети применяются в других сервисах.
Например, в Яндекс Такси одна из библиотек DeepDive, связанная с сигнатурами лиц, использовалась для обнаружения мошенничества водителей. Или другой пример: алгоритм, который определяет, были ли монтажные склейки в видео.
Он применяется для выявления сцен с курением, насилием и другими нежелательными элементами.
Определить трек за 3–4 секунды — реально
В распознавании звука есть два направления: определение голосов и распознавание музыки. Это разные задачи, и для них требуются разные нейросети.
В первую очередь выполняется идентификация аудиофрагментов: нейросеть определяет, где звучит музыка. Затем этот участок вырезается и передаётся другой модели, которая строит его спектрограмму (анализирует тоны и обертоны) и сопоставляет её с известными треками.
Алгоритм выделяет музыку даже на фоне шумов — например, разговоров, звуков машин, дождя. После этого он сравнивает её с эталонными саундтреками.
Если персонаж поёт достаточно хорошо, возможно, система распознает мелодию. Но из-за отсутствия инструментального сопровождения спектрограмма будет сильно отличаться — скорее всего, алгоритм не найдёт совпадений.
Актёра или трек можно распознать, даже если алгоритм их не узнал
Если система не смогла автоматически определить актёра, в Кинопоиске он просто не отобразится. Но если пользователи указывают на ошибку и говорят, что актёр известный и его необходимо добавить, фильм отправляется на ручную проверку. Иногда заранее понятно, что качество распознавания в определённых сценах низкое, — такие фильмы передаются на дополнительную обработку вручную.
Если трек не входит в библиотеку Яндекс Музыки, его нельзя воспроизводить. Но можно создать его цифровой отпечаток — сигнатуру, сравнить с известными записями и указать исполнителя и название трека. Это не нарушение авторских прав: сам контент не распространяется.
В планах — повышение точности распознавания
-
Переход от распознавания всей фигуры актёра к определению только его головы.
Если человек повернётся спиной, система сможет идентифицировать его именно по форме головы. Это снизит погрешности, связанные с позами и движениями.
-
Использование больших языковых моделей.
Сейчас разрабатываются нейросети, которые могут анализировать изображение и текстом описывать, что на нём происходит. Такую технологию можно адаптировать и для Кинопоиска, но пока неясно, насколько это будет рентабельно.
-
Пополнение базы данных актёров, особенно в международных проектах.
Кинопоиск выходит на новые рынки, но у сервиса пока недостаточно информации о звёздах, популярных за пределами России. Команда разработки планирует добывать и загружать новые профильные фотографии, чтобы улучшить точность распознавания.
-
Автоматическое распознавание текста в кадре (OCR).
Это позволит собирать списки актёров из титров фильма, исключая человеческий фактор и повышая точность сопоставления с базой данных Кинопоиска.