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

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ОБРАЗОВАНИЯ

«НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ

«ВЫСШАЯ ШКОЛА ЭКОНОМИКИ»

Факультет информатики, математики и компьютерных наук

Программа подготовки бакалавров по направлению программная инженерия

ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА

Разработка системы контроля доступа на основе распознавания лиц с помощью нейронной сети

Бажмин Сергей Александрович

Нижний Новгород, 2019

Оглавление

Введение

  • Глава 1. Обзор существующих подходов и решений в области разработки идентификационных систем
    • 1.1 Существующие решения
      • 1.1.1 Panasonic FacePRO Facial Recognition System
      • 1.1.2 FindFace
      • 1.1.3 VOCORD FaceControl
    • 1.2 Способы хранения данных
    • 1.3 API для задач распознавания и нахождения лиц
      • 1.3.1 Vision API (Google)
      • 1.3.2 Face API (Microsoft)
      • 1.3.3 Rekognition (Amazon)
    • 1.4 Обзор методов распознавания лиц
    • 1.5 Обзор алгоритмов обнаружения лиц
    • 1.6 Обзор архитектур веб-приложений
    • Выводы по главе
  • Глава 2. Архитектура, требования к системе и выбор инструментов
    • 2.1 Требования к системе
      • 2.1.1 Функциональные требования
      • 2.1.2 Требования к удобству и простоте использования
      • 2.1.3 Требования к производительности
      • 2.1.4 Ограничения проектирования
    • 2.3 Архитектура
    • 2.4 Используемые языки программирования
    • 2.5 Используемые библиотеки
      • 2.5.1 Python
      • 2.5.2 JavaScript
    • 2.6 Базы данных
    • Выводы по главе
  • Глава 3. Особенности реализации системы
    • 3.1 Базы данных
      • 3.1.1 PostgreSQL
      • 3.1.2 MySQL
      • 3.1.3 Оптимизация поиска
    • 3.2 Веб сервис
      • 3.3 API
    • 3.4 Worker pool
    • 3.5 Контрольная панель
    • 3.6 Брокер сообщений
    • 3.7 Балансировщик нагрузки
    • 3.8 Тестирование
      • 3.8.1 Функциональное тестирование
      • 3.8.2 Use case тестирование
      • 3.8.3 Нагрузочное тестирование
    • 3.9 Подход к разработке
    • Выводы по главе
  • Заключение
  • Список литературы
  • Приложения

Введение

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

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

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

· Физические носители ключей. Например, пластиковые карты с магнитной полосой и другие.

· Биометрия. В данном случае ключом или паролем является параметр, который является частью человека.

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

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

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

1. Проанализировать подходы к проектированию веб-приложений;

2. Спроектировать архитектуру системы;

3. Проанализировать методы искусственного интеллекта и использовать наиболее подходящие алгоритмы.

Глава 1. Обзор существующих подходов и решений в области разработки идентификационных систем

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

1.1 Существующие решения

1.1.1 Panasonic FacePRO Facial Recognition System

Продукт компании Panasonic позволяет производить распознавание лиц с помощью камер Panasonic i-PRO. Утверждается, что их сервер может поддерживать обработку с 20 камер в режиме реального времени с высокоскоростным поиском до 30 тысяч зарегистрированных лиц. Их приложение позволяет просматривать базу данных из лиц, производить различные расчеты и анализировать данные.

Основные преимущества системы отображены на рис. 1,2

Рисунок 1. Идентификационная система в общем случае

Рисунок 2. Идентификационная система Panasonic

1.1.2 FindFace

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

· Обнаружение лиц;

· Проверка подлинности;

· Идентификация;

· Распознавание эмоций;

FindFace использует собственные оптимизированные базы данных и нейронные сети для перечисленных задач;

1.1.3 VOCORD FaceControl

Продукт компании VOCORD является системой биометрического распознавания лиц, которая в дополнение определяет пол и возраст человека. Согласно указанным на их официальном сайте техническим характеристикам, в системе используются решения из области глубокого обучения, а базой данных является Microsoft SQL Server.

1.2 Способы хранения данных

Существуют три вида решений:

· Древовидные структуры данных;

· Реляционные базы данных;

· Оптимизированные базы данных.

Структуры данных KD tree и Ball tree способны находить ближайшего соседа, то есть точку, расстояние до которой минимально от заданной, со сложностью . Такой подход стал возможен благодаря тому, что фотографии можно отобразить в многомерное евклидово пространство. Однако, данные при таком подходе обычно находятся в оперативной памяти, что не является выгодным решением при большом количестве лиц. Данная проблема легко решается реляционными базами данных. Некоторые из компаний, например Facebook, создали свою собственную базу данных Faiss, ориентированную на быстрый поиск среди векторов.

1.3 API для задач распознавания и нахождения лиц

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

1.3.1 Vision API (Google)

Google Cloud's Vision API предназначен по большей части для решения проблем классификации и анализа изображений. По части лиц пользователям доступно лишь их детектирование.

1.3.2 Face API (Microsoft)

Компания Microsoft предлагает решения задач верификации, идентификации и обнаружения лиц. Однако, все это доступно с большими ограничениями: небольшой размер галереи лиц и лимит запросов.

1.3.3 Rekognition (Amazon)

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

1.4 Обзор методов распознавания лиц

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

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

1.5 Обзор алгоритмов обнаружения лиц

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

· Алгоритмы, опирающиеся на множество правил. Исходя из того, как человек распознает лицо, делаются некие предположения, которые проверяются, проводя анализ фотографии;

· Алгоритмы, опирающиеся на признаки. Фотография делится на регионы, по которым собираются некоторые признаки. Далее эти признаки используются, чтобы обучить бинарный классификатор, который определяет является ли заданный регион лицом или нет;

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

· Алгоритмы, выучивающие представления лиц. К таким алгоритмам относятся Eigenface методы, алгоритмы машинного и глубокого обучения, алгоритмы понижения размерности.

1.6 Обзор архитектур веб-приложений

Самый простой вариант - запуск приложения и его компонентов на одном сервере:

Рисунок 3. Пример простой архитектуры веб-приложения

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

Рисунок 4. Архитектура с разделенными компонентами

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

Рисунок 5. Архитектура с несколькими экземплярами приложения

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

Рисунок 6. Архитектура веб-приложения с очередью сообщений

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

Выводы по главе

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

Глава 2. Архитектура, требования к системе и выбор инструментов

2.1 Требования к системе

Взяв за основу элементы из структуры Software requirements specification стандарта ISO/IEC/IEEE 29148-2011, были выдвинуты требования к системе.

2.1.1 Функциональные требования

1. Система должна осуществлять идентификацию личности;

2. Система должна иметь возможность добавления собственных моделей и способов обработки фотографий;

3. Система должна обеспечивать эффективное хранение фотографий;

4. Система должна обеспечивать динамическое создание / удаление процессов с работающими в них нейронными сетями при необходимости;

5. Система может контролироваться с помощью контрольной панели;

6. Контрольная панель должна отображать статистику запросов и текущие расходы ресурсов сервера;

7. Контрольная панель должна имеет возможность отправить фотографию на любой сервер и получить результаты;

8. В качестве очереди задач должна использоваться key-value база данных;

9. Должен быть приоритет выполнения задач;

2.1.2 Требования к удобству и простоте использования

1. Интерфейс контрольной панели должен иметь простую структуру;

2. Настройка экземпляра сервера не должна занимать много времени;

2.1.3 Требования к производительности

1. Время отклика должно составлять не более 6 секунд;

2. Масштабируемость должна возрастать пропорционально объему приобщенных ресурсов;

3. Количество запросов не должно увеличивать время отклика в разы;

4. Время задержки создания и удаления дополнительных рабочих процессов не должно превышать 10 секунд;

Источник: https://otherreferats.allbest.ru/download/1176324/