Определение родства по фотографии — довольно молодая область компьютерного зрения, и своим развитием она во многом обязана другим областям, таким как распознавание лица и верификация личности.Встатье приводится архитектура сверточной нейронной сети, предназначенной для автоматического определения родства двух людей по их фотографиям, а также описываются техники, которые помогают эффективно обучать данную нейронную сеть.
Ключевые слова: сверточная нейронная сеть, сиамская нейронная сеть, распознавание лиц.
Кровные родственники часто имеют схожие черты лица. Несмотря на это, исследования задачи автоматического определения родства двух людей по фотографии долгое время не давали достаточно надежных результатов для реализации ее решения на практике. Причиной этому служило то, что базы данных изображений для задач распознавания родственных связей были недостаточно велики, а алгоритмы не обладали достаточной обобщающей способностью, чтобы отразить все скрытые факторы, влияющие на соотношение черт лица у разных членов семьи. С появлением и популяризацией сверточных нейронных сетей, которые после победы в соревновании ImageNet в 2012 году [1] показали крайнюю эффективность в задачах классификации изображений и распознавания лиц, это изменилось — сверточные нейронные сети предоставили мощный инструментарий как для сбора и разметки огромных наборов данных, так и для построения достаточно дискриминативных моделей.
Целью данной работы является построение системы для автоматического определения кровного родства двух людей по их фотографиям.
Алгоритм решения. В качестве основы для данной системы используется архитектура нейронной сети под названием «сиамская сеть» [2]. Такая сеть строится из двух идентичных нейронных сетей, имеющих одинаковые веса (кодировщиков). Сиамская сеть принимает на вход две фотографии и возвращает значение меры близости, выученной в ходе обучения.
Обучающая выборка. В качестве обучающей выборки используется набор данных Families In the Wild [3]. Он содержит фотографии 2316 человек из одной из 470 семей, а также список, указывающий, кто из этих людей состоит в кровном родстве. Этот набор разбивается на обучающее и валидационное (проверочное) множество в соотношении 90 %/10 %.
Архитектура нейронной сети. Предлагаемая архитектура представлена на рис. 1.
Рис. 1. Архитектура нейронной сети
В качестве кодировщика используется сеть FaceNet [4], предобученная на большом наборе лиц VGGFace2 [5]. Эта сеть применяется к обоим изображениям, чтобы получить их векторное представление. Затем эти векторные представления передаются в полносвязные слои, которые предсказывают вероятность родства.
Обучение. Сеть обучается методом обратного распространения ошибки с использованием оптимизационного алгоритма Adam [6]. Во время обучения сэмплируется одинаковое количество позитивных и негативных примеров. В качестве позитивного примера выбирается случайная пара из списка людей, находящихся в родстве. В качестве негативного примера выбираются два случайных человека, не находящихся в родстве. Затем для каждого из них из множества фотографий, на которых представлен этот человек, выбирается случайная фотография.
В качестве функции потерь используется бинарная кросс-энтропия. График изменения значения функции потерь на обучающем и валидационном множестве представлен на рис. 2, график изменения точности — на рис. 3.
Рис. 2. График зависимости ошибки от количества эпох обучения
Рис. 3. График зависимости точности от количества эпох обучения
Результаты. Для оценки работы сети использовалась тестовая выборка, которая содержит 5310 пар изображений людей как состоящих, так и не состоящих в кровном родстве. Точность сети оценивалась по площади под ROC-кривой [7]. На тестовой выборке значение этой характеристики составило 0,82.
Заключение. В работе описана архитектура сверточной нейронной сети, предназначенной для решения задачи автоматического определения кровного родства двух людей по их фотографиям. Представлены техники, которые позволяют эффективно обучать данную сеть. Полученные результаты показывают работоспособность и эффективность данной нейронной сети.
Литература:
1. Krizhevsky A., Sutskever I., Hinton G. E. ImageNet classification with deep convolutional neural networks // Communications of the ACM. 2017. Vol. 60(6). P. 84–90.
2. Chopra S., Hadsell R., LeCun Y. Learning a similarity metric discriminatively, with application to face verification // IEEE Computer Society Conference on Computer Vision and Pattern Recognition. 2005. Vol. 1. P. 539–546.
3. Robinson J. P., et al. Visual kinship recognition of families in the wild // IEEE Transactions on Pattern Analysis and Machine Intelligence. 2018. Vol. 40(11). P. 2624–2637.
4. Schroff F., Kalenichenko D., Philbin J. FaceNet: A unified embedding for face recognition and clustering // IEEE Conference on Computer Vision and Pattern Recognition (CVPR). 2015. P. 815–823
5. Cao Q., et al. VGGFace2: A dataset for recognising faces across pose and age // IEEE International Conference on Automatic Face and Gesture Recognition. 2018. P. 67–74.
6. Diederik K., Ba J. Adam: a method for stochastic optimization // International Conference on Learning Representations (ICLR). 2015.
7. Fawcett T. An introduction to ROC analysis // Pattern Recognition Letters. 2006. Vol. 27. P. 861–874.