Краткое руководство по видео распознавания лица BBC R & D

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

Возьмите следующие изображения с принцем Гарри и Меган Маркл на улице. Здесь мы видим Гарри и Меган под разными углами - спереди, сбоку и сзади - но мы легко узнаем их по признакам: цвет кожи, цвет волос и т. Д. Мы также принимаем во внимание определенные социальные сигналы. Толпа смотрит на них, они хорошо одеты, они в центре каждого выстрела, и есть очевидная последовательность выстрелов из одной и той же сцены. Здесь много слоев человеческой интуиции, о которых мы, как правило, даже не задумываемся, обнаруживая культурные и физические показатели.

Мы, естественно, узнаем Гарри и Меган, несмотря на разные углы на этих снимках

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

Мы уже работаем над созданием этой технологии на BBC. Наша система, получившая название FaceRec, разрабатывается Группой данных по исследованиям в Интернете и службам будущего в рамках исследований и разработок BBC (мы сохраним некоторые нажатия клавиш и далее будем называть их Группой данных). Он построен с использованием комбинации внутреннего кода и внешнего программного обеспечения с открытым исходным кодом, в частности, Seetaface, механизма распознавания лиц C ++.

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

1. Обнаружить выстрелы

Для того чтобы каждое лицо было обнаружено в видео, нам сначала нужно разбить видео на составляющие его кадры (кадр определяется как серия кадров, работающих в течение непрерывного периода времени). Для этого FaceRec использует библиотеку обработки мультимедиа FFmpeg, которая использует функцию для возврата времени начала и конца всех снимков в данном видео.

2. Определить лица

Следующим шагом является проверка каждого кадра, чтобы увидеть, содержит ли он человеческие лица. Это сложная проблема - должны ли мы пытаться определить каждое лицо на футбольном матче? Лицо на футболке считается? Есть ли фотографии на обложках газет?

Итерируя по каждому снимку, FaceRec берет кадры из снимка и передает их в SeetaFace, который затем возвращает ограничивающие рамки того места, где, по его мнению, находятся лица. Механизм распознавания лиц SeetaFace определяет, достаточно ли «учитывается» лицо, чтобы включить его в свой вывод. Обратите внимание, что SeetaFace не сообщает, кто, по его мнению, является обнаруженными людьми, просто считает, что обнаружил лицо в заданном месте в кадре.

3. Создать треки лица

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

FaceRec берет каждую ограничивающую рамку лица и пытается сопоставить ее со следующей логической ограничительной рамкой в ​​следующем кадре. Это не всегда совершенно очевидно, поскольку лица могут быть временно скрыты или ограничивающие рамки могут пересекаться друг с другом, когда один человек движется позади другого.

Ограничительные рамки отслеживают лица через выстрел

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

4. Создание векторов лица для треков

Алгоритмы машинного обучения часто работают путем преобразования входного материала в математические векторы. Затем они узнают, какие части этого «векторного пространства» принадлежат конкретным категориям или типам ввода. Что касается лиц, они узнают, что векторы, представляющие лицо принца Гарри, как правило, находятся в определенной области, в то время как векторы Меган, как правило, находятся в другом разделе. Можно также ожидать, что векторы лица принца Уильяма будут ближе к Гарри, чем к Меган, поскольку они связаны и имеют схожие характеристики.

Чтобы создать векторы для обнаруженных лиц, FaceRec использует библиотеку идентификации лиц SeetaFace. FaceRec подает обрезанные фотографии обнаруженных лиц в пределах их ограничивающих рамок от средней точки отслеживания лица. Он получает обратно 2024-мерный вектор, который представляет особенности этого лица.

5. Распознавать лица людей по векторам

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

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

На самом деле, этим должны руководить журналисты BBC News и люди, о которых они чаще всего сообщают. Мы также должны знать, что неизвестные люди делают новости каждый день, и когда они делают, мы можем не иметь никаких предыдущих фотографий их. Принимая во внимание эти ограничения, команда Data сосредоточилась в основном на знаменитостях, международных лидерах, политиках Великобритании в Парламенте и Палате лордов при обучении FaceRec.

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

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

IRFS создал две модели:

  1. Модель архива: известные люди 20-го века, отобранные людьми из BBC Archive. Эта модель содержала около 1000 человек.
  2. Новостная модель: она все еще находится в стадии разработки, и в нее войдут более 2000 членов парламента Великобритании и региональных собраний, Палаты лордов и мировых лидеров. Учебные изображения были получены из BBC News, Factual и Drama.

Затем эти обученные модели используются для предсказания того, какие люди попадают в видео-ролики.

6. Кластерные треки лица

Теперь, когда все треки лица были помечены, последний шаг - собрать все треки одного и того же человека.

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

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

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

Визуализация лиц с помощью TensorBoard

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

Вместо того, чтобы упасть в темную дыру, пытаясь идеально решить эту проблему, команда Data решила использовать несколько эвристик. FaceRec разделяет проблему на две отдельные категории: лица людей, которых она узнает, и лица людей, которых она не знает. Для распознанных лиц он просто объединяет все дорожки лиц, которые имеют одинаковую предсказанную метку (имя). Для нераспознанных лиц он использует технику, называемую иерархической кластеризацией по векторам лиц, чтобы сгруппировать их, но не давать им метки.

7. Вывести информацию

Последний шаг для FaceRec - получение всей информации, собранной на разных этапах. Это происходит в форме файла JSON, который содержит:

Список треков в видео. Для каждого трека есть:

  • Предсказанный человек для этого следа
  • Уверенность в прогнозе
  • Отслеживать UUID
  • Face-вектор для этого трека
  • Список кадров в этом треке

В списке кадров информация о каждом кадре включает в себя:

  • Вектор лица для этого кадра, если он был обнаружен
  • Ограничительные рамки координат для лица
  • Время в видео происходит кадр

Что мы можем сделать с этими данными? Вы можете проверить наш следующий пост в блоге, чтобы увидеть наши идеи.

Заворачивать

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

После понимания внутренней работы системы FaceRec, задача для News Labs состояла в том, чтобы увидеть, где эта технология может добавить ценность для бизнеса в BBC. Как мы можем продемонстрировать способности FaceRec с помощью интуитивно понятного демо? К каким производственным системам мы могли бы добавить FaceRec? Чьи проблемы рабочего процесса это может решить? И что важно, как люди относятся к использованию распознавания лиц? Мы говорим о проблемах развертывания новой технологии в крупной организации и о вопросах, с которыми мы столкнулись при разработке прототипа распознавания лиц в «Распознавании лиц: какая польза от них для редакций?».