12+  Свидетельство СМИ ЭЛ № ФС 77 - 70917
Лицензия на образовательную деятельность №0001058
Пользовательское соглашение     Контактная и правовая информация
 
Педагогическое сообщество
УРОК.РФУРОК
 
Материал опубликовала
Легович Светлана Ивановна180
Закончила физический факультет (кафедра ядерной физики) в Белорусском Государственном Университете им. В.И. Ленина, а также очную аспирантуру Института Ядерной Энергетики Академии наук БССР.
Россия, Московская обл., Дубна

«ЗОРКИЙ ГЛАЗ. ТЕХНОЛОГИЯ FACE RECOGNITION»

Преподаватель Легович С.И.



Цель работы: проектирование и внедрение системы видеорегистрации на примере проходной колледжа университета «Дубна».

Задачи работы: 1. Изучить возможности программы «Питон» применительно к согласованным действиям с базой данных и автоматическими устройствами проходной. 2. Написание кода программы и создание запросов в базу данных. 3. Подготовка базы фотографий нужного размера и качества. 4. Изучить особенности пропускного режима колледжа для внедрения новой системы пропуска студентов и сотрудников.

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

t1680933587aa.gift1680933587ab.jpg

Рис. 1. Массовый проход по пропускам

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

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

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

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

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

Было определено, что на настоящий момент предполагаемое количество студентов и сотрудников составляет примерно 500 человек, ежегодно это количество может увеличиваться ориентировочно в среднем на 30-60 человек; срок обучения студентов составляет от 3 до 4 лет, без учета возможных академических отпусков. В связи с этим, было принято решение об ограничении рабочего объема библиотеки референтных изображений для анализа, исходя из планового количества студентов и сотрудников в течение 5 лет, что с учетом запаса составило 500 изображений. Также предусмотрено архивное хранение референтных фотографий предыдущих периодов и выделенное архивное упорядоченное хранение фотографий неопознанных входящих людей. Предполагается возможность использования 2-х изображений для идентификации людей, носящих как линзы, так и очки для корректировки зрения.

В связи с ограниченными возможностями имеющихся технических средств составлены требования к размещению видеосканера во входной группе колледжа, а также разработан регламент прохождения автоматического распознавания. Предлагаемое место установки видеосканера расположено в непосредственной близости к входному турникету таким образом, чтобы рабочее поле и фокусные характеристики камеры позволяли анализировать людей с ростом от 1,5 м до 1,9 м. Для обеспечения наглядности и доступности принципов работы системы предлагается нанести на пол входной группы специализированную цветную разметку, обозначающее место обязательной остановки входящих. Расположение данной разметки непосредственно связано с местом установки видеосканера и его фокусными характеристиками. Также в качестве поддерживающих и разъясняющих мер предлагается размещение памяток с требованием снять солнцезащитные очки, шапки, опустить высоко поднятый ворот / намотанный шарф.

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

Предварительно предоставить фотографии лица в процессе зачисления / трудоустройства;

Войти с улицы во входную группу учебного корпуса;

Убрать предметы, закрывающие лицо;

Остановиться на цветовой разметке у турникета;

Дождаться разрешительного сигнала турникета;

Пройти в учебный корпус.

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

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

Для удобства разработана предварительная версия программы для распознавания лиц на языке Python с использованием 4-х библиотек: face_recognition (для распознавания лиц), numpy (для обработки списков и массивов), cv2 (для захвата видео с камеры) и OS (для решения всех вопросов, связанных папками, путями, именами изображений или файлов и т.д.). Программа совместима с серверами на базе операционной системе Linux.

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

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

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


t1680933587aa.gift1680933587ac.jpg

Рис. 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 = os.listdir (faces_path)

face_encodings = []

Настройка цикла for для извлечения всех кодировок лиц и хранения их в списке. Цикл ниже также получает имена людей и удаляет «.jpg» и сохраняет имена в списке:

for i, name in enumerate(face_names):

face = fr.load_image_file (f"{faces_path}\\{name}")

face_encodings.append (fr.face_encodings(face)[0])

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 = video.read ()

Уменьшение текущего кадра для ускорения программы:

resized_image = cv2.resize (image, (int(image.shape[1]/scl), int(image.shape[0]/scl)))

Преобразование текущего кадра в RGB для работы модуля распознавания лиц:

rgb_image = cv2.cvtColor (resized_image, cv2.COLOR_BGR2RGB)

Получение координат местоположения лица и неизвестных кодировок:

face_locations = fr.face_locations (rgb_image)

unknown_encodings = fr.face_encodings (rgb_image, face_locations)

Настройка цикла, отвечающего за перебор каждой кодировки, а также местоположения лица:

for face_encoding, face_location in zip(unknown_encodings, face_locations):

Настройка сравнения известных лиц с неизвестными лицами:

result = fr.compare_faces (face_encodings, face_encoding, 0.4)

Настройка получения правильного имени, если совпадение было найдено:

if True in result:

name = face_names[result.index (True)]

Установление координат для расположения лица:

top, right, bottom, left = face_location

Выделение опознаваемых лиц прямоугольником:

cv2.rectangle (image, (left*scl, top*scl), (right*scl, bottom*scl), (0, 0, 255), 2)

Настройка шрифта, а также отображение текста имени:

font = cv2.FONT_HERSHEY_DUPLEX

cv2.putText (image, name, (left*scl, bottom*scl + 20), font, 0.8, (255, 255, 255), 1)

Отображение конечного изображения на экране:

cv2.imshow ("frame", image)

cv2.waitKey (1)

Было проведено пилотное тестирование с использованием веб-камеры ноутбука HP Laptop 15s-eq2090ur и базы из 16 изображений студентов и преподавателей. Система показала рабочую работопригодность.

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

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

Помимо заявленного применения были обозначены следующие направления для усовершенствования системы:

- предусмотреть вариативность распознавания лиц в очках различной степени затемнения, в шапках, с частично прикрытым лицом, при смене цвета волос и значительном изменении прически, при наличии бороды / усов и т.п.;

- предусмотреть возможность автоматического переноса эталонной фотографии в архив в случае, если в течение года отсутствовали факты регистрации входа указанного лица (исключить необходимость массового переноса референтных фотографий в архив вручную);

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

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

Github, Face Recognition - https://github.com/ageitgey/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 - https://numpy.org/learn/

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 - https://www.python.org/doc/

Дэвид М. Язык программирования PYTHON - «К., ДиаСофт», 2000г.

Romain B., Benjamin A. Face Analysis Under Uncontrolled Conditions: From Face Detection to Expression Recognition - «Wiley-ISTE», 2022г.

Digital Citizen, RGB - https://www.digitalcitizen.life/rgb-rgb-lighting/

Tproger.ru, OpenCV - https://tproger.ru/translations/opencv-python-guide/

Опубликовано


Комментарии (0)

Чтобы написать комментарий необходимо авторизоваться.