Если вы следите за нами здесь, возможно, вы читали рассказ о LWF benchmark. Кстати, мы там номер шесть. Недавно Faceter был включен в список еще одного популярного бенчмарка - MegaFace.

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

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

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

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

Как работает тест MegaFace

  1. Начать

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

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

2. Извлечение векторов признаков

Когда вы получите доступ, вы сможете скачать три набора данных:

Megaface (~ 1 млн фото), FaceScrub (~ 100k фото) и FGNet (~ 3500 фото).

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

Важно: вы можете тренировать свой алгоритм с любым набором данных, кроме этих трех.

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

И лучше взять набор данных, который не пересекается с этими тремя. Например, не стоит использовать один из самых популярных наборов данных MS-Seleb-1M (миллион изображений знаменитостей) для обучения нейронной сети. Поскольку FaceScrub также состоит из изображений знаменитостей, на них наверняка будут изображения одних и тех же людей.

Например, вы, вероятно, увидите Брэда Питта в обоих. Это значит, что ваш NN будет намного лучше узнавать Брэда Питта, если его тренировать по его картинкам, и результат не будет объективным.

В нашем случае мы используем собственный набор данных, предоставленный нашим партнером из финансовой отрасли.

3. Вызов

Есть две разные проблемы. Разница в том, что в первом случае вы можете обучить свою NN с любым набором данных (кроме этих трех, конечно). Во втором случае вам необходимо загрузить специальный набор данных MegaFace из 672 тыс. Личностей (4,7 миллиона фотографий) и использовать его для обучения своей сетевой сети.

Самый популярный - первый. Все результаты этого задания публикуются здесь (для набора данных FaceScrub) и здесь (для FGNet). Поясним, что они означают.

Степень идентификации и размер отвлекающих факторов

На втором этапе вы подготовили векторы функций FaceScrub и векторы функций изображений MegaFace. Они вам понадобятся сейчас.

Набор данных FaceScrub содержит в общей сложности 107 818 неограниченных изображений лиц 530 знаменитостей, полученных из Интернета, примерно по 200 изображений на человека.

Ребята из Вашингтонского университета разделили этот набор данных на три части. И разослали всем разработчикам только часть. Вам нужно будет использовать его для запуска специальных скриптов вместе с этим набором данных. Набор данных MegaFace (одноминутные картинки) будет использоваться в качестве отвлекающих факторов.

Что это значит? Давайте углубимся в процесс сравнения.

Вам нужно взять рис №1 (вектор признаков) человека №1 из FaceScrub и добавить его в набор отвлекающих факторов.

Затем вам нужно сравнить фото № 2 того же человека из FaceScrub с каждым вектором функций из MegaFace (включая фото № 1, которое мы добавили ранее).

Результатом каждого сравнения является число, показывающее расстояние между двумя векторами. Если ваш алгоритм работает хорошо, расстояние между вектором признаков на рис # 1 и всеми векторами отвлекающих факторов будет больше, чем расстояние между вектором на рис # 1 и вектором на рис # 2 (потому что это один и тот же человек на двух разных изображениях). Лучше меньшее расстояние между рис. №1 и рис. №2. Когда вы закончите сравнение первого рисунка, вам нужно откатить все изменения в двух наборах данных. Затем вы берете следующий вектор и проделываете ту же процедуру. Затем повторите с каждым рисунком из набора FaceScrub.

Очевидный способ обмануть - размыть или обрезать изображения из MegaFace перед векторным извлечением. В этом случае расстояние между картинками из FaceScrub и из MegaFace будет очень большим. Никто не узнает, что отвлекающие факторы были изменены - участник должен отправлять векторы признаков и результаты только на рассмотрение.

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

4. Результаты

В конце у вас будет X случаев, когда ваш алротим был прав - он правильно распознал человека на картинке. Точность = X, разделенное на все количество изображений в наборе данных FaceScrub.

Давайте посмотрим на текущую таблицу результатов:

Faceter занимает 17-е место в мире. Неплохо, правда? Учитывая, что протестированный алгоритм уже устарел, а новый намного мощнее.

Вы видите, что есть числа для разных наборов: 1,2 и 3. Как мы упоминали ранее, разработчики получают только одну часть набора данных FaceScrub. Они отправляют результаты вместе со всеми тремя наборами векторов. Команда MegaFace из Вашингтонского университета тестирует их с двумя другими частями FaceScrub, чтобы проверить результаты. Суть этого теста - выяснить, какой алгоритм лучше всего извлекает векторы из изображений.

Когда вы отправляете свои данные, вы также должны определить размер набора обучающих данных, который вы используете. В большинстве случаев он большой (0,5 млн фото и больше), но иногда бывает 100-500 тысяч. И в данном случае это действительно небольшой размер. Конечно, алгоритм, который был обучен с большим набором данных, будет сильнее, чем алгоритм, обученный с ~ 100k картинками.

Если вы посмотрите на страницу с результатами, вы увидите две диаграммы внизу. Они давно не обновлялись. Их цель - показать, как алгоритм работает с разным количеством отвлекающих факторов. Если у вас есть только одно изображение, которое вам нужно распознать, и только один отвлекающий фактор, любой алгоритм даст 100% точность. Но когда вы увеличиваете количество отвлекающих факторов, разные алгоритмы ведут себя по-разному. Вы можете видеть, как резко упали некоторые алгоритмы, которые были обучены с небольшим набором данных. Но не все из них - Beijing Deep Sense довольно хороша и может конкурировать с Google Face Net и другими людьми.

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

Вот почему тест MegaFace - это не соревнование, а лишь один из многих способов протестировать ваши алгоритмы.

В Части II мы расскажем вам, что означает «Уровень идентификации по сравнению с рангом», и обсудим разницу между FaceScrub и FGNet.