Это часть серии, описывающей разработку Moviegoer, междисциплинарного проекта по науке о данных, благородная цель которого — научить машины смотреть фильмы и интерпретировать эмоции и антецеденты (поведенческая причина/следствие).

Фильм без какой-либо структуры — это всего лишь набор из нескольких тысяч кадров изображений и очень длинной звуковой дорожки. Разговоры перетекают один в другой, персонажи появляются и исчезают без причины, а мы телепортируемся из одного места в другое. Мы можем начать организовывать фильм, разделив его на отдельные сцены. Мы будем использовать пример Трудностей перевода (2003).

Для начала мы просто определим диалоговые сцены с двумя персонажами. Это самые основные строительные блоки фильмов: всего два персонажа, говорящие вместе, не отвлекаясь, просто продвигая сюжет своим диалогом. В современном кинематографе эти сцены обычно снимаются особым образом. Мы можем воспользоваться этим, ища определенные модели выстрелов.

Шаблон A/B/A/B

Сцены диалогов с двумя персонажами обычно следуют очень четкой схеме. Говорит персонаж А, затем персонаж Б, затем снова А, затем снова Б и т. д. Мы переключаемся между двумя персонажами.

Мы ищем эти два якорных снимка, которые являются снимками двух персонажей и образуют паттерн A/B/A/B. Мы просматриваем каждый кадр в фильме и пытаемся найти примеры этих паттернов ABAB. У нас есть несколько существующих фреймов данных для использования — ранее мы сгруппировали похожие фреймы в «шоты». Например, все кадры с Шарлоттой сгруппированы в один кластер снимков.

У нас есть еще один уникальный снимок Боба.

Мы обнаружили схему A/B/A/B: четыре кадра, где A и B чередуются. Следующим шагом в рабочем процессе является проверка лиц и проверка того, что на снимке A лицо слева, а на снимке B лицо справа (или произвольное обратное назначение). На этих двух снимках лицо слева и лицо справа, поэтому они проходят тест.

Расширение сцены

Мы можем расширить сцену, проверив эти два опорных снимка поблизости. В настоящее время наша сцена состоит только из паттерна A/B/A/B: всего два опорных кадра. Но могут быть и другие кадры, переходы, прерывающие эти якорные кадры. Врезки — это кадры, которые являются частью сцены, но не являются опорными кадрами. Это могут быть такие кадры, как крупный план объекта или кадр от первого лица, на котором персонаж смотрит на объект.

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

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

Этот алгоритм имеет гораздо больший успех с традиционными популярными фильмами. Например, когда мы применили это к романтической комедии Плюс один (2019), мы обнаружили 18 сцен. Сцены диалогов с двумя персонажами, в которых два персонажа обмениваются резкими диалогами, являются основным продуктом романтических комедий.

Хотите увидеть больше?