Зоркий глаз
проект

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

Скачать:

ВложениеРазмер
Файл zorkiy_glaz-legovich.docx471.76 КБ

Предварительный просмотр:

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

     

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. Предварительно предоставить фотографии лица в процессе зачисления / трудоустройства;
  2. Войти с улицы во входную группу учебного корпуса;
  3. Убрать предметы, закрывающие лицо;
  4. Остановиться на цветовой разметке у турникета;
  5. Дождаться разрешительного сигнала турникета;
  6. Пройти в учебный корпус.  

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

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

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

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

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

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

Рис. 2.  Вид проходной с видеосканером

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

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

  1. Импорт необходимых данных для успешного запуска программы

import face_recognition as fr # Для распознавания лиц 

import numpy as np # Для обработки всех списков/массивов

import cv2 # Для захвата видео с веб-камеры

import os # Для решения всех вопросов, связанных с папками, путями, именами изображений/файлов и т. д. 

  1. Настройка пути к папке, содержащей все известные лица (фотографии). В папке «известные» имя изображения / файла — это имя человека, которого нужно распознать.

faces_path = "C:\\path\\to\\folder\\with\\known\\faces"

  1. Задание функции для получения имен лиц, а также кодировок лиц:

def get_face_encodings():

face_names = os.listdir(faces_path)

face_encodings = []

  1. Настройка цикла 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

  1. Получение кодировок лиц и их сохранение в переменной face_encodings вместе с именами:

face_encodings, face_names = get_face_encodings()

  1. Настройка ссылки на веб-камеру, при наличии одной вебкамеры в скобках пишется 0:

video = cv2.VideoCapture(0)

  1. Установка переменной, которая будет использоваться для масштабирования размера изображения:

scl = 2

  1. Настройка непрерывной записи футажа с веб-камеры

while True:

success, image = video.read()

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

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

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

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

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

 face_locations = fr.face_locations(rgb_image)

 unknown_encodings = fr.face_encodings(rgb_image, face_locations)

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

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

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

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

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

if True in result:

name = face_names[result.index(True)]

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

 top, right, bottom, left = face_location

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

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

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

font = cv2.FONT_HERSHEY_DUPLEX

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

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

cv2.imshow("frame", image)

cv2.waitKey(1)

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

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

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

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

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

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

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

 

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

  1. Github, Face Recognition - https://github.com/ageitgey/face_recognition
  2. Stan Li, Anil Jain  Handbook of Face Recognition. - «Springer», 2005 г.
  3. Joseph H., Joe M. - Learning OpenCV 4 Computer Vision with Python 3. - «Packt Publishing», 2000 г.
  4. NumPy, Learn NumPy - https://numpy.org/learn/
  5. Prateek J. - OpenCV with Python By Example - «Packt», 2015 г.
  6. 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г.
  7. Python, Documentation - https://www.python.org/doc/
  8. Дэвид М. Язык программирования PYTHON - «К., ДиаСофт», 2000г.
  9. Romain B., Benjamin A. Face Analysis Under Uncontrolled Conditions: From Face Detection to Expression Recognition - «Wiley-ISTE», 2022г.
  10. Digital Citizen, RGB - https://www.digitalcitizen.life/rgb-rgb-lighting/
  11. Tproger.ru, OpenCV - https://tproger.ru/translations/opencv-python-guide/

По теме: методические разработки, презентации и конспекты

« ЭТО ПРАЗДНИК СО СЛЕЗАМИ НА ГЛАЗАХ…» ( Сценарий праздника, посвящённого 67-годовщине Победы).

« ЭТО  ПРАЗДНИК  СО  СЛЕЗАМИ  НА  ГЛАЗАХ…»( Сценарий праздника, посвящённого  67-годовщине Победы)....

Открытый внеклассный концерт - поздравление "Загляни в мамины глаза"

Цель:  Укрепление семейных отношений через совместную творческую деятельность. «Восславим Женщину – Мать, чья любовь не знает преград, чьей грудью вскормлен весь мир. Всё прекрасное в ...

Глазами ребенка

Маленький сборник моих стихов...

Зимняя погода радует глаз

Wow, this article is fastidious, mу sister is analyzing such thіngs, thеrefore ӏ am going tо let know hеr.| bookmarked!!, I love yоur website!| Wаy cool! Ѕome very valid poіnts! I аppreciate you pe...

Коррекционно- развивающая программа"Мир глазами детей" арт - терапия в общей системе психокоррекционной работы с воспитанниками социально- реабилитационного центра.

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

«Взаимодействие основного и дополнительного образования детей через реализацию проекта «Красная книга природы Санкт-Петербурга и Ленинградской области глазами детей»

Зачетная работа по курсам повышения квалификации «Инновационная и экспериментально-исследовательская деятельностьв дополнительно образовании»Данная разработка может быть полезна в работе учителям нача...