РАСПОЗНАВАНИЕ ЛИЧНОСТИ ПО РИСУНКУ ВЕН ПАЛЬЦЕВ НА ОСНОВЕ ОБУЧЕНИЯ НЕЙРОННОЙ СЕТИ

Авторы: М.В. Калашник, А.В. Ковалёв, Т.В. Мелешенко, Ю.А. Шулаева

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

Ключевые слова: распознавание, идентификация, верификация, вены, нейронные сети, машинное обучение.

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

  1. Модернизировать оборудование для получения фотографий:
    • синхронизация создания фотографии и нажатия кнопки;
    • решение проблемы с засветом на суставах пальца.
  2. Создать маски для полученного датасета:
    • написание нейросети для создания масок;
    • ручная отрисовка масок для обучения нейросети;
    • обучение нейронной сети.
  3. Идентифицировать человека по рисунку вен:
    • преобразовать изображения в удобный для сравнения в вид;
    • создать базу данных;
    • разработать алгоритм сравнения

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

Устройство для получения рисунка вен в данном исследовании представляет из себя корпус, веб-камеру и ИК-светодиоды. Корпус оборудования изготовлен с учетом фокусного расстояния веб-камеры таким образом, чтобы фокус всегда был настроен на верхнюю крышку короба, где будет находиться палец. У Веб-камеры снят ИК-фильтр, для того, чтобы камера имела большую чувствительность к инфракрасному диапазону. Для получении потока инфракрасного света использовались 5 светодиодов с длиной волны 850 нм. Подобрана интенсивность светового потока. Освещение объекта осуществляется на просвет. При данном подходе качество получаемого рисунка вен выше, чем при снимках в отраженном свете.

Для компьютера разработано программное обеспечение на языке Python, которое, используя библиотеку OpenCV, активизирует камеру при получении сигнала с COM-порта для получения фотографий. Логика работы устройства представлена на рис. 1.

Когда палец попадает в зону видимости ультразвукового дальномера, датчик посылает сигнал плате Ардуино, плата Ардуино посылает сигнал на реле, которое замыкает цепь «блок питания – светодиод», и включаются светодиоды, после этого Ардуино посылает сигнал в Serial Port компьютера, который, в свою очередь, делает снимок пальца. Светодиоды выключаются.

При обработке изображений применялось множество алгоритмов, таких как выравнивание гистограмм, адаптивное пороговое выравнивание, выравнивание по Гауссу, результаты работы некоторых из них приведены на рис. 2.

Для построения алгоритма распознавания структура нейронной сети была взята из статьи "A lung U-net in Keras by Peter Grenholm" by Peter Grenholm [1].

Обучение нейронной сети проводилось на основе базы данных Dr. Ajay Kumar из Китайского Гонконгского политехнического университета [2]. Маски, предложенные в данной базе, имеют неудовлетворительное для обучения качество, поэтому было принято решение отрисовать 50 изображений вручную и обучить нейронную сеть создавать подобные маски. К сожалению, данных, полученных вручную, было крайне мало для нейронной сети, поэтому с использованием библиотеки Augmentor [3] для Python было создано 10000 изображений пальцев и 10000 изображений масок, чего оказалось вполне достаточно для обучения.

На выходе после работы нейронной сети создается маска для обработанного изображения пальца, что позволяет найти на фотографии желаемую область 1309 для обнаружения вен. Остальная часть фотографии представляет собой черный фон. Пример получаемых масок можно видеть на рис. 3.

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

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

Было решено сделать по две маски вен для каждого пальца: с нажатием и соблюдением толщины вен и без нажатия, и с соблюдением только основного рисунка. Пример представлен на рис. 4.

В процессе разработки было найдено два метода сравнения масок:

Было решено сравнивать изображения по хэшу. Кроме того, такой подход в будущем позволит провести наглядное сравнение работы простого алгоритма и обученной нейронной сети и выбрать лучший. Для вычисления хэша использовался алгоритм [4].

В конечном результате программа работает по следующему алгоритму:

  1. С помощью библиотеки glob из папки выделяются все изображения формата bmp.
  2. Полученные маски хэшируются.
  3. Данные о пользователе, пальце, которые заранее определены в названии маски, и сгенерированный хэш вносятся в csv-таблицу.
  4. По установленной погрешности, которая на данный момент составляет 20 единиц (расстояние Хэмминга), находятся все схожие пальцы по простому алгоритму поиска соседей. Погрешность была выявлена опытным путем при сравнении заведомо отобранных идентичных пальцев.
  5. Данные трансформируются в матрицу для сравнения качества результатов.

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

Список литературы:

  1. Grenholm P. A lung U-net in Keras by Peter Grenholm. URL: https://www.kaggle. com/toregil/a-lung-u-net-in-keras (дата обращения: 05.04.2018).
  2. База снимков пальцев (вен, и отпечатков). Dr. Ajay Kumar, Гонконгский Политехнический университет, Китай. URL: http://www4.comp.polyu.edu.hk/~csajaykr/myhome/database_request/fv/ (дата обращения: 06.04.2018).
  3. Augmentor. URL: https://augmentor.readthedocs.io/en/master/ (дата обращения: 20.03.2018).
  4. Алгоритм pHash. URL: https://github.com/JohannesBuchner/imagehash/blob/master/imagehash/__init__.py#L151 (дата обращения: 06.04.2018).