12+ Свидетельство СМИ ЭЛ № ФС 77 - 70917 Лицензия на образовательную деятельность №0001058 |
Пользовательское соглашение Контактная и правовая информация |
Легович Светлана Ивановна180 Закончила физический факультет (кафедра ядерной физики) в Белорусском Государственном Университете им. В.И. Ленина, а также очную аспирантуру Института Ядерной Энергетики Академии наук БССР. Россия, Московская обл., Дубна |
Преподаватель Легович С.И.
Цель работы: проектирование и внедрение системы видеорегистрации на примере проходной колледжа университета «Дубна».
Задачи работы: 1. Изучить возможности программы «Питон» применительно к согласованным действиям с базой данных и автоматическими устройствами проходной. 2. Написание кода программы и создание запросов в базу данных. 3. Подготовка базы фотографий нужного размера и качества. 4. Изучить особенности пропускного режима колледжа для внедрения новой системы пропуска студентов и сотрудников.
Каждый из нас хоть раз стоял в длинных очередях, чтобы зарегистрироваться на прием к врачу, посещение выставки, музея, участвовать в выборах, пройти через турникет на работу, учебу и т.д. Десятки людей задействованы, чтобы сверять списки, отмечать присутствие, а если кого-то забыли внести в эти списки, перепутали имя, описались в личных данных, то процесс прохода затягивается порой надолго.
Рис. 1. Массовый проход по пропускам
Если учесть требования инфекционной безопасности, которые возникли в связи с эпидемиями COVID и гриппа, опасностью террористических актов и просто непредвиденных обстоятельств, то массовый проход людей на запланированные мероприятия делается весьма проблематичным.
Мы широкими шагами вошли в так называемый цифровой век, когда, сидя дома, можно купить билеты, зарегистрироваться на самолет, записаться в любое учреждение на прием, так почему же не внести в список требуемых личных данных и фотографию? Тогда многие процессы идентификации личности, установления права на проход или присутствие можно вести в автоматическом режиме. Для внедрения такого процесса потребуется всего лишь видеосканер при входе, подключенный к базам данных и соответствующему программному обеспечению.
Распознавание лиц — программное обеспечение, которое отображает, анализирует, а затем подтверждает личность лица на фотографии или видео — является одним из самых мощных инструментов наблюдения, когда-либо созданных. В то время как многие люди взаимодействуют с распознаванием лиц просто как способ разблокировать свои телефоны или отсортировать свои фотографии, то, как компании и правительства используют его, будет иметь гораздо большее влияние на жизнь людей.
В работе предлагается реализовать такой способ идентификации на примере учета сотрудников и студентов колледжа, входящих в учебный корпус. Люди часто забывают, теряют или путаются в различных карточках и пропусках, что создает трудности на проходной. Учет учащихся на занятиях, когда в электронном журнале при входе в класс сразу производится соответствующая пометка, сэкономит время для урока. Составить базу фотографий всех студентов не представляет большого труда, но видеорегистрация на таких мероприятиях, как поточные лекции, конференции, семинары в актовом зале и т.д. выведет систему учета на современный уровень. Особенно актуален этот способ учета в экстремальных условиях при пожарах, террористических угрозах, когда надо знать точно не только количество людей, но и кто именно находится в помещении.
На предварительном этапе был проведён анализ исходных данных, на основании которых составлены требования к эффективности и критическим показателям будущей системы электронного контроля доступа.
Было определено, что на настоящий момент предполагаемое количество студентов и сотрудников составляет примерно 500 человек, ежегодно это количество может увеличиваться ориентировочно в среднем на 30-60 человек; срок обучения студентов составляет от 3 до 4 лет, без учета возможных академических отпусков. В связи с этим, было принято решение об ограничении рабочего объема библиотеки референтных изображений для анализа, исходя из планового количества студентов и сотрудников в течение 5 лет, что с учетом запаса составило 500 изображений. Также предусмотрено архивное хранение референтных фотографий предыдущих периодов и выделенное архивное упорядоченное хранение фотографий неопознанных входящих людей. Предполагается возможность использования 2-х изображений для идентификации людей, носящих как линзы, так и очки для корректировки зрения.
В связи с ограниченными возможностями имеющихся технических средств составлены требования к размещению видеосканера во входной группе колледжа, а также разработан регламент прохождения автоматического распознавания. Предлагаемое место установки видеосканера расположено в непосредственной близости к входному турникету таким образом, чтобы рабочее поле и фокусные характеристики камеры позволяли анализировать людей с ростом от 1,5 м до 1,9 м. Для обеспечения наглядности и доступности принципов работы системы предлагается нанести на пол входной группы специализированную цветную разметку, обозначающее место обязательной остановки входящих. Расположение данной разметки непосредственно связано с местом установки видеосканера и его фокусными характеристиками. Также в качестве поддерживающих и разъясняющих мер предлагается размещение памяток с требованием снять солнцезащитные очки, шапки, опустить высоко поднятый ворот / намотанный шарф.
Таким образом входящий сотрудник или студент колледжа должен будет выполнить следующие действия для автоматической идентификации при входе в учебный корпус:
Предварительно предоставить фотографии лица в процессе зачисления / трудоустройства;
Войти с улицы во входную группу учебного корпуса;
Убрать предметы, закрывающие лицо;
Остановиться на цветовой разметке у турникета;
Дождаться разрешительного сигнала турникета;
Пройти в учебный корпус.
Для решения нестандартных ситуаций предполагается возможность поиска и представления фотографии из базы данных на пульте охраны.
Помимо технического оснащения особое внимание необходимо уделить непосредственно программному обеспечению, которое и будет выполнять роль автоматического вахтера и регистратора.
Для удобства разработана предварительная версия программы для распознавания лиц на языке Python с использованием 4-х библиотек: face_recognition (для распознавания лиц), numpy (для обработки списков и массивов), cv2 (для захвата видео с камеры) и OS (для решения всех вопросов, связанных папками, путями, именами изображений или файлов и т.д.). Программа совместима с серверами на базе операционной системе Linux.
Как указывалось ранее, для автоматического распознавания необходимо заранее загрузить и персонифицировать эталонные фотографии лиц, которые в дальнейшем будут использоваться для сравнения и сопоставления с фактическими изображениями входящих людей. Размещение данных референтных изображений проводится в папку на указанном сервере, доступ к которому прописан непосредственно в коде программы.
Эталонные изображения обрабатываются с использованием ряда предусмотренных переменных, например, функции для получения имен, а также кодировок лиц и цикла для извлечения всех кодировок лиц) обеспечивается получение уникального «кода» изображения и модели RGB. Обработанные эталонные изображения и соответствующие кодовые обозначения хранятся в списке, по которому при получении входящего запроса на идентификацию проводится поиск совпадений. Анализ осуществляется с использованием нейросетевых алгоритмов, подключаемых в виде сторонних библиотек.
Запрос на идентификацию поступает в автоматическом режиме. Текущий кадр с видеосканера преобразуется в цветовую модель RGB, для которой определяются координаты местоположения лица и проводится кодировка. После завершения процесса кодировки осуществляется автоматический поиск-сравнение с заданной базой данных.
Рис. 2. Вид проходной с видеосканером
При выявлении полного соответствия последовательности кода отдельный сигнал поступает на турникет, позволяющий человеку зайти в учебный корпус, а также проводится автоматическая фиксация времени и идентификационных данных в журнале учета. В случае, если последовательность кода не соответствует ни одной из записей зарегистрированной библиотеки, разрешительный сигнал на турникет не поступает, однако, происходит сохранение фотографии входящего человека с указанием времени и даты в назначенную архивную папку. Дальнейшее решение о допуске принимает сотрудник пульта охраны.
Программный алгоритм выглядит следующим образом:
Импорт необходимых данных для успешного запуска программы
import face_recognition as fr # Для распознавания лиц
import numpy as np # Для обработки всех списков/массивов
import cv2 # Для захвата видео с веб-камеры
import os # Для решения всех вопросов, связанных с папками, путями, именами изображений/файлов и т. д.
Настройка пути к папке, содержащей все известные лица (фотографии). В папке «известные» имя изображения / файла — это имя человека, которого нужно распознать.
faces_path = "C:\\path\\to\\folder\\with\\known\\faces"
Задание функции для получения имен лиц, а также кодировок лиц:
def get_face_encodings():
face_names =
face_encodings = []
Настройка цикла for для извлечения всех кодировок лиц и хранения их в списке. Цикл ниже также получает имена людей и удаляет «.jpg» и сохраняет имена в списке:
for i, name in enumerate(face_names):
face =
face_names[i] = name.split(".")[0] # Удаление ".jpg" или любого другого расширения изображения.
return face_encodings, face_names
Получение кодировок лиц и их сохранение в переменной face_encodings вместе с именами:
face_encodings, face_names = get_face_encodings()
Настройка ссылки на веб-камеру, при наличии одной вебкамеры в скобках пишется 0:
video = cv2.VideoCapture(0)
Установка переменной, которая будет использоваться для масштабирования размера изображения:
scl = 2
Настройка непрерывной записи футажа с веб-камеры
while True:
success, image =
Уменьшение текущего кадра для ускорения программы:
resized_image =
Преобразование текущего кадра в RGB для работы модуля распознавания лиц:
rgb_image =
Получение координат местоположения лица и неизвестных кодировок:
face_locations =
unknown_encodings =
Настройка цикла, отвечающего за перебор каждой кодировки, а также местоположения лица:
for face_encoding, face_location in zip(unknown_encodings, face_locations):
Настройка сравнения известных лиц с неизвестными лицами:
result =
Настройка получения правильного имени, если совпадение было найдено:
if True in result:
name =
Установление координат для расположения лица:
top, right, bottom, left = face_location
Выделение опознаваемых лиц прямоугольником:
Настройка шрифта, а также отображение текста имени:
font = cv2.FONT_HERSHEY_DUPLEX
Отображение конечного изображения на экране:
Было проведено пилотное тестирование с использованием веб-камеры ноутбука HP Laptop 15s-eq2090ur и базы из 16 изображений студентов и преподавателей. Система показала рабочую работопригодность.
Программу можно легко адаптировать под любую другую систему в зависимости от используемой директории, в которой хранятся фотографии. В качестве видеосканера могут использоваться вариативные модели камер: от веб-камеры до иных средств фиксации и передачи изображений на компьютер в реальном времени.
Данная технология позволит в разы ускорить проверку документов, сократит очереди и поможет при экстремальных ситуациях, когда каждая секунда важна.
Помимо заявленного применения были обозначены следующие направления для усовершенствования системы:
- предусмотреть вариативность распознавания лиц в очках различной степени затемнения, в шапках, с частично прикрытым лицом, при смене цвета волос и значительном изменении прически, при наличии бороды / усов и т.п.;
- предусмотреть возможность автоматического переноса эталонной фотографии в архив в случае, если в течение года отсутствовали факты регистрации входа указанного лица (исключить необходимость массового переноса референтных фотографий в архив вручную);
- предусмотреть возможность поиска совпадений и проведение анализа статистики по неидентифицированным фотографиям из истории посещений.
Список литературы:
Github, Face Recognition -
Stan Li, Anil Jain Handbook of Face Recognition. - «Springer», 2005 г.
Joseph H., Joe M. - Learning OpenCV 4 Computer Vision with Python 3. - «Packt Publishing», 2000 г.
NumPy, Learn NumPy -
Prateek J. - OpenCV with Python By Example - «Packt», 2015 г.
Zed S. Learn Python 3 the Hard Way: A Very Simple Introduction to the Terrifyingly Beautiful World of Computers and Code (Zed Shaw's Hard Way Series) - «Addison-Wesley Professional», 2017г.
Python, Documentation -
Дэвид М. Язык программирования PYTHON - «К., ДиаСофт», 2000г.
Romain B., Benjamin A. Face Analysis Under Uncontrolled Conditions: From Face Detection to Expression Recognition - «Wiley-ISTE», 2022г.
Digital Citizen, RGB -
Tproger.ru, OpenCV - https://tproger.ru/translations/opencv-python-guide/