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

Обзор решений в области разработки идентификационных систем. Способы хранения данных. Методы искусственного интеллекта и алгоритмы распознавания лиц. Архитектура веб-приложения. Процесс обработки фотографии. Особенности реализации программной системы.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 28.10.2019
Размер файла 1,8 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

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

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

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

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

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

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

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

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

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

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

Нижний Новгород, 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 секунд;

2.1.4 Ограничения проектирования

1. Операционные системы: Windows NT, Ubuntu 18.04;

2. Языки: Python (3.6), JavaScript (ES6);

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

2.2 Взаимодействие с системой

Пользователь имеет возможность работать с системой с помощью любых доступных ему средств. Рассмотрим на двух примерах, где возможно использование данной системы:

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

2) Запрос на дополнительную проверку при смене пароля на каком-либо онлайн ресурсе. Чтобы окончательно убедиться в подлинности пользователя, запрашивается его фотография лица, которую достать злоумышленнику, зная лишь логин и пароль пользователя, очень проблематично.

2.3 Архитектура

Проанализировав вышеуказанные требования и подходы к проектированию веб-приложения, была спроектирована и реализована следующая архитектура (Рис. 7), которая состоит из 6 компонентов:

Рисунок 7. Архитектура системы

1. База данных;

2. Веб сервис;

3. Worker pool;

4. Брокер сообщений;

5. Контрольная панель;

6. Балансировщик нагрузки.

В анализе архитектур веб-приложения (Гл. 1 п. 1.6) очередь задач находилась на отдельном сервере. В данном случае было принято решение иметь очередь задач и worker процессы на каждом сервере, поскольку веб сервис не требует больших вычислительных ресурсов. Что касается серверов кэширования, то в них нет необходимости, поскольку сервисам не требуется отслеживать сессии пользователей.

2.4 Используемые языки программирования

Таблица 1. Языки программирования

Язык

Описание

Python

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

Javascript

Мультипарадигменный язык программирования.

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

2.5 Используемые библиотеки

2.5.1 Python

Таблица 2. Инструменты для Python

Библиотека

Описание

flask

Простой, гибкий фреймворк для создания веб приложений

flask_jwt_extended

Поддержка jwt для flask

flask_socketio

Поддержка websockets для flask

psutil

Сбор системной информации. Например, количество ядер процессора.

PIL

Обработка изображений

dlib

Нейронные сети и детекторы лиц, написанные на с++ с доступным интерфейсом на питоне

psycopg2

Адаптер для базы данных PostgreSQL

mysqlclient

Адаптер для базы данных MySQL

numpy

Эффективная работа с объектами линейной алгебры

base64

Кодирование и декодирование изображений

redis

Адаптер для Redis базы данных

keras

Библиотека для программирования нейронных сетей

asyncio

Асинхронное программирование. Используются для отправки асинхронных запросов на сервер для тестирования.

aiohttp

Асинхронные http запросы

pytest

Тестирование

celery

Асинхронная очередь задач

Главными инструментами являются Flask, Celery. Flask идеально подходит для небольших сервисов, которые требуют базовую функциональность с небольшими дополнениями, в то время как Django нацелен на решения более сложных задач и проблем. Flask работает на WSGI сервере, для которого существует множество доступных решений вроде UWSGI, Gunicorn и другие. Celery был выбран поскольку данный фреймворк предоставляет надежное взаимодействие с кластерами рабочих процессов, а также качественную обработку ошибок, возможность использования приоритетов и многих других полезных инструментов.

2.5.2 JavaScript

Таблица 3. Инструменты для JavaScript

Библиотека

Описание

React

Библиотека для разработки пользовательских интерфейсов в компонентном стиле

socket.io-client

Поддержка websockets на стороне браузера

react-dropzone

Графический элемент, позволяющий “скидывать” файлы в окно компонента

react-chartjs-2

Библиотека, позволяющая по данным строить большое количество графиков

material-ui

Material компоненты для react

React нацелен больше на разработку интерфейсов, в отличие от Angular, который предоставляет инструменты не только для разработки UI. Помимо этого, Angular по умолчанию использует TypeScript вместо JavaScript. React оставил реализацию инструментов и выбор языка самим разработчикам. Именно простота React стала причиной выбора этой библиотеки.

2.6 Базы данных

Таблица 4. Базы данных

База данных

Описание

PostgreSQL

Свободная объектно-реляционная система управления базами данных(СУБД).

MySQL

Свободная реляционная система управления базами данных

Redis

Резидентная система управления базами данных класса NoSQL с открытым исходным кодом, работающая со структурами данных типа «ключ -- значение». Используется как для баз данных, так и для реализации кэшей, брокеров сообщений.

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

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

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

Глава 3. Особенности реализации системы

3.1 Базы данных

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

В системе на текущий момент поддерживаются две базы данных: PostgreSQL и MySQL.

3.1.1 PostgreSQL

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

3.1.2 MySQL

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

3.1.3 Оптимизация поиска

При необходимости оптимизации поиска среди векторов в таблицах при большом количестве данных можно использовать сегментирование базы данных (рис. 8, 9).

Рисунок 8. Сегментирование по половому признаку

Рисунок 9. Сегментирование по зданиям

3.2 Веб сервис

Главная задача веб сервиса состоит в том, чтобы отвечать на запросы с данными, поступающие с камер или других источников, и отправлять задания worker процессам через Redis очередь с помощью Celery. Сервис опрашивает очередь о полученном результате с определенным интервалом и отправляет ответ обратно, как только получает результат.

Чтобы обеспечить возможность использовать любые алгоритмы распознавания и детектирования, пользователю предлагается реализовать собственный класс, унаследованный от интерфейса FaceProcessor:

Также доступна возможность использовать свою собственную обработку фотографий, для чего нужно реализовать производный класс от Preprocessing:

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

В пунктах model и preprocessing нужно вписать путь по модулям к классу относительно корневого каталога, а также имя созданного класса. В пунктах database, redis требуется ввести необходимые настройки для установления соединения с базами данных. Кроме того, у сервиса есть поддержка jwt токенов, которую можно включить при передаче секретного ключа.

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

3.3 API

Таблица 5. Точки доступа на сервере

Ресурс

Http методы

Описание

workers/<worker_id>

DELETE

удалить worker процесс с идентификатором worker_id

workers/create

POST

создать worker процесс

/image/recognize

POST

распознать человека на фотографии

/image/store

POST

сохранить векторное представление в базу данных

Таблица 6. Точки доступа Websockets на сервере

Событие

Namespace

Описание

poll_data

/

Запрос на обновление данных о компьютере (занятость процессора в процентах и т.д)

poll_workers

/

Запрос на обновление списка текущих worker процессов

debug

/debug

Включить/Отключить режим отладки

Таблица 7. Точки доступа Websockets на клиенте

Событие

Namespace

Описание

Data

/

Получение информации о запросах

workers

/

Получение активных рабочих процессов

recognition

/debug

Получение обработанных фотографий

3.4 Worker pool

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

Рисунок 10. Процесс обработки фотографии

3.5 Контрольная панель

Была реализована контрольная панель, позволяющая взаимодействовать c серверами. На данный момент контрольная панель позволяет делать следующее:

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

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

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

Рисунок 11. Интерфейс панели

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

В качестве примера были запущены два экземпляра сервиса на разных портах и к ним подключились с помощью панели (рис. 11).

3.6 Брокер сообщений

Рассмотрим шаблон проектирования Producer-Consumer. В данном паттерне используются следующие концепции:

· Producer - поток, который генерирует задание на выполнение

· Consumer- поток, который берет задание из очереди и отправляет результаты куда ему нужно

· Queue - буфер заданий с фиксированной вместимостью.

Процесс распознавания и обнаружения лиц требует достаточно больших вычислительных ресурсов, и поскольку является синхронным вызовом, то блокирует главный поток. В случае данной работы веб сервисы выступают в роли Producer, а процесс с нейронной сетью является Consumer. Чтобы соединить их используется очередь задач на основе Redis базе данных. Она хранит свое содержимое в оперативной памяти со структурой типа “ключ - значение”, что подходит для реализации очереди задач между процессами. Взаимодействие с Redis осуществляется с помощью Celery.

Начиная с версии 4 Celery официально больше не поддерживает платформы Windows. Однако, с объявляя дополнительную переменную окружения среды FORKED_BY_MULTIPROCESSING=1 решает данную проблему.

Рисунок 12. Шаблон проектирования Producer-Consumer

3.7 Балансировщик нагрузки

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

В качестве примера были запущены 3 экземпляра сервиса на разных портах. В блоке upstream указаны их адреса, а в блоке server указывается информация для самого балансировщика. В блоке location указывается, что все запросы будут перенаправляться на указанные в upstream сервисы. По умолчанию используется round robin балансировка.

3.8 Тестирование

3.8.1 Функциональное тестирование

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

1. Создание таблиц в базах данных;

2. Добавление векторов в таблицу;

3. Поиск в таблице;

4. Распознавание;

5. Требование jwt аутентификации при включенной опции использования токенов;

6. Сервер корректно отвечает на запросы с неправильными/искаженными jwt токенами;

3.8.2 Use case тестирование

Были протестированы следующие юз-кейсы:

1. Пользователь создает worker процесс;

2. Пользователь удаляет worker процесс;

3. Пользователь запрашивает идентификацию;

4. Пользователь запрашивает сохранение вектора в базе данных;

3.8.3 Нагрузочное тестирование

В ходе нагрузочного тестирования проводились эксперименты с базами данных MySQL, PostgreSQL и разным количеством worker процессов. Тест представляет из себя 80 запросов на распознавание с интервалом от 0 до 2 секунд между ними. Для достижения этой задачи использовались asyncio и aiohttp с целью отправки асинхронных запросов. Тестирование провелось на 1 сервере с размерностью вектора в 128 чисел. Результаты отображены в таблицe №8.

Таблица 8. Результаты теста

База данных

Кол-во worker процессов

Среднее время ожидания ответа на идентификацию(сек)

PostgreSQL

1

8.8

PostgreSQL

2

1.4

PostgreSQL

3

1.4

MySQL

1

5.3

MySQL

2

1.27

MySQL

3

1.34

3.9 Подход к разработке

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

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

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

идентификационный интеллект лицо алгоритм

Заключение

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

Были выполнены все поставленные задачи:

1. Проведен анализ существующих решений;

2. Проанализированы подходы к задаче распознавания лиц;

3. Проанализирована архитектура веб-приложения;

4. Сформированы требования к системе;

5. Выбран подход к разработке;

6. Выбраны инструменты для реализации;

7. Реализованы компоненты;

8. Проведено тестирование.

В качестве дальнейших шагов можно рассматривать: увеличение числа поддерживаемых СУБД, брокеров сообщений (RabbitMQ), добавление дополнительных возможностей на стороне контрольной панели, реализация автоматического контроля worker процессов.

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

[1] A. Vedaldi, O.M. Parkhi, A. Zisserman. Deep Face Recognition British Machine Vision Conference, 2015.

[2] P.J.P. et al. An introduction to the good, the bad, and the ugly face recognition challenge problem. FG, 2011.

[3] D. Chen, F. Wen, X. Cao, J. Sun. Blessing of dimensionality: High-dimensional feature and its efficient compression for face verification. CVPR, 2013.

[4] H. Aronowitz, J. Weill, O. Barkan, L. Wolf. Fast high dimensional vector multiplication face recognition. ICCV, 2013.

[5] James Philbin, Florian Schroff,Dmitry Kalenichenko. FaceNet: A Unified Embedding for Face Recognition and Clustering. CVPR, 2015.

[6] Roy Thomas Fielding. Architectural Styles and the Design of Network-based Software Architectures. 2000.

[7] N. Dalal, B. Triggs. Histogram of oriented gradients for human detection. In CVPR, 2005.

[8] Rekha N, Dr. M.Z.Kurian. Face Detection in Real Time Based on HOG. IJARCET, 2014.

[9] D. Snow, M.J. Jones, P. Viola. Detecting pedestrians using patterns of motion and appearance. Int. Journal of Computer Vision, 2005.

[10] R. Benenson, M. Mathias, L. Van Gool, M. Pedersoli. Face detection without bells and whistles. ECCV, 2014.

[11] M. Abbott, "Biometric technology use for security is growing rapidly, but privacy and data protection remain a concern," 12 December 2017.

[12] B. Violino, "Biometrics has growing, but not sole, role in authentification security," 23 March 2018.

[13] J. Szymanski, "Impact Analysis: Biometric Authentication," 12 June 2017.

[14] Google Cloud Platform, "CLOUD VISION API," Google Cloud Platform

[15] Amazon Web Services, Inc., "Amazon Rekognition," Amazon Web Services, Inc.

[16] Microsoft, "Face API"

[17] Celery

[18] Redis

[19] PostgreSQL

[20] MySQL

[21] React - A Javascript library for building user interfaces

[22] Flask - a micro web framework for Python

[23] Dlib - computer vision library

[24] Systems and software engineering - Life cycle processes - requirements engineering, ISO / IEC / IEEE 29148

[25] Архитектура высоких нагрузок: Архитектура высоких нагрузок, свободный. - Загл. c экрана.

[26] Мартин Фаулер, Архитектура корпоративных программных приложений, - 2006. - С. 33-35.

Приложения

1. Github

С реализацией можно ознакомиться по следующей ссылке: https://github.com/SergeyBazhmin/face-recognition-service

2. Инструкции по запуску сервера

1. Установить PostgreSQL / MySQL, Redis, необходимые библиотеки из requirements.txt;

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

3. Написать в конфигурационном файле необходимые сведения;

4. Запустить Redis сервер;

5. Запустить веб сервис и свой OAuth сервис (при необходимости);

6. Запустить Celery;

3. Инструкции по работе с контрольной панелью

1. Перейти в каталог с контрольной панелью и запустить с помощью команды npm start;

2. Откроется вкладка в браузере по адресу http://localhost:3000;

3. Ввести хоста (одного или несколько);

Рисунок 13. UI элемент для ввода сервера

4. Появится отдельный компонент для введенного хоста;

5. Нажав на кнопку spawn добавляется один worker процесс с указанной в конфигурационном файле моделью;

6. Появится окно, в котором отображаются текущие worker процессы. Можно удалить любой из них, нажав на кнопку Kill;

Рисунок 14. UI элемент для отдельного сервера

7. Переход во вкладку Debug позволяет отправить фотографию на сервер или посмотреть на несколько предыдущих запросов;

Рисунок 15. UI элемент для отображения активных процессов

Рисунок 16. UI элемент вкладки debug

Размещено на Allbest.ru


Подобные документы

  • Разработка алгоритма и программы для распознавания пола по фотографии с использованием искусственной нейронной сети. Создание алгоритмов: математического, работы с приложением, установки весов, реализации функции активации и обучения нейронной сети.

    курсовая работа [1,0 M], добавлен 05.01.2013

  • Понятие системы распознавания образов. Классификация систем распознавания. Разработка системы распознавания формы микрообъектов. Алгоритм для создания системы распознавания микрообъектов на кристаллограмме, особенности его реализации в программной среде.

    курсовая работа [16,2 M], добавлен 21.06.2014

  • Описание структурной схемы искусственного нейрона. Характеристика искусственной нейронной сети как математической модели и устройств параллельных вычислений на основе микропроцессоров. Применение нейронной сети для распознавания образов и сжатия данных.

    презентация [387,5 K], добавлен 11.12.2015

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

    курсовая работа [3,0 M], добавлен 14.11.2013

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

    курсовая работа [129,5 K], добавлен 09.06.2017

  • Разработка программной базы для исследований в области распознавания речи и поиска ключевых слов в ней. Расчет mel-фильтров. Скрытые марковские модели. Применение в алгоритме сверточного декодирования Витерби. Методы визуализации и обработки аудиоданных.

    курсовая работа [1,1 M], добавлен 01.06.2015

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

    дипломная работа [887,3 K], добавлен 26.11.2013

  • Необходимость в системах распознавания символов. Виды сканеров и их характеристики. Оптимальное разрешение при сканировании. Программы распознавания текста. Получение электронного документа. FineReader - система оптического распознавания текстов.

    презентация [469,2 K], добавлен 15.03.2015

  • Процессы распознавания символов. Шаблонные и структурные алгоритмы распознавания. Процесс обработки поступающего документа. Обзор существующих приложений по оптическому распознаванию символов. Определение фиксированного шага и сегментация слов.

    дипломная работа [3,3 M], добавлен 11.02.2017

  • Искусственные нейронные сети как одна из широко известных и используемых моделей машинного обучения. Знакомство с особенностями разработки системы распознавания изображений на основе аппарата искусственных нейронных сетей. Анализ типов машинного обучения.

    дипломная работа [1,8 M], добавлен 08.02.2017

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