Статья опубликована в рамках: Научного журнала «Студенческий» № 29(73)
Рубрика журнала: Информационные технологии
Скачать книгу(-и): скачать журнал часть 1, скачать журнал часть 2, скачать журнал часть 3
СИСТЕМА РАСПОЗНАВАНИЯ ЛИЦ, КАК МЕТОД ИДЕНТИФИКАЦИИ ПОЛЬЗОВАТЕЛЯ
FACE RECOGNITION SYSTEM AS A METHOD OF USER IDENTIFICATION
Roman Korolev
Student NRU MIET in the direction “Applied Mathematics”,
Russia, Zelenograd
Pupil CMIT "Perspective",
Russia, Kurganinsk
Kirill Popko
Engineer in the direction of radio physics, radio physics master,
Graduate student of FSBEI HPE “Kuban State Technological University”
Russia, Krasnodar
АННОТАЦИЯ
В аналоге данного проекта используется модуль из лазеров, который сканирует лицо пользователя и при дальнейшей работе ищет совпадения с обученной базой данных. Предложено идентифицировать пользователей при помощи распознавания их лиц с помощью камеры. Для этого были использованы метод Виолы-Джонса [1] и библиотека OpenCV [2] для языка Python. В результате создана программа для распознавания лиц с возможностью обучения. Она может использоваться как инструмент для авто заполнения форм, включения голосового ассистента, а также как интеллектуальная система оценивания мер человека.
Апробация работы:
- Российская научно-социальная программа для молодежи и школьников «Шаг в будущее», МГТУ им. Баумана, г. Москва, 2018-2019 гг.;
- Фестиваль «От Винта», г. Краснодар, 2018 г.;
- Всероссийский конкурс научно-исследовательских работ имени Д. И. Менделеева, г. Москва, 2018 г.;
- Всероссийская олимпиада «Созвездие», г. Королев, 2018 г.;
- Премия «IQ года», г. Краснодар 2017 г.
ABSTRACT
An analogue of this project uses a module from lasers that scans the user's face and during further work looks for matches with the trained database. It is proposed to identify users by recognizing their faces using a camera. For this, the Viola-Jones method [1] and the OpenCV [2] library for the Python language were used. As a result, a program for face recognition with the possibility of training was created. It can be used as a tool for auto-filling out forms, including a voice assistant, and also as an intelligent system for evaluating human measures.
Ключевые слова: распознавание лица; метод Виолы-Джонса; OpenCV.
Keywords: face recognizing; Viola-Jones method; OpenCV.
В основу данной работы легла технология от компании Apple «Face ID» [3]. Для ее реализации нужен дополнительный компонент для проецирования точек на лицо пользователя.
Было решено реализовать идею идентификации пользователя по лицу с использованием одной лишь камеры. При разработке данного алгоритма ключевыми факторами успешности проекта являлись следующие критерии: точность распознавания и нагрузка на систему, поэтому было решено использовать метод Виолы-Джонса [1] для нахождения лица на изображении с камеры. Данный метод использует для поиска лиц каскады Хаара. Листинг программы нахождения лица, реализованный с помощью библиотеки OpenCV [2] выглядит следующим образом:
face_cascade=cv2.CascadeClassifier('haarcascade_frontalface_default.xml') #задаем изображение каскада Хаара для лица
ret,img = cap.read()#считываем кадры с камеры для обработки
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #переводим изображение в чб, т.к. быстрее обрабатывать
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2) #обводим лицо прямоугольником
cv2.imshow('camera', img) #показываем изображение с камеры
Изображение с камеры, после использования данного алгоритма выглядит следующим образом:
Рисунок 1. Обнаружение лица
Для классификации пользователей был использован распознаватель из библиотеки OpenCV [2]. При его обучении данные о пользователе сохраняются в отдельный файл. Листинг программы обучения распознавателя выглядит следующим образом:
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') #задаем изображение каскада Хаара для лица
face_id = 3 #id совпадает с номером в массиве names
cap = cv2.VideoCapture(0) #получаем картинку с нулевой камеры
count = 0 #переменная для счета снятых фото
while True:
ret, img = cap.read()#считываем каждый кадр с камеры для дальнейшей обработки
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #переводим изображение в чб, т.к. быстрее обрабатывать
faces = face_cascade.detectMultiScale(gray, 1.3, 5) #ищем лица с помощью каскадов Хаара
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2) #обводим лицо прямоугольником
count += 1
cv2.imwrite("F:\\Jarvis\\dataset\\User." + str(face_id) + '.' + str(count) + ".jpg", gray[y:y + h, x:x + w])#сохраняем фотку для дальнейшего обучения
cv2.imshow('image', img) #показываем изображение с камеры
if count >= 100:
break
recognizer.write('F:\\Jarvis\\trainer\\trainer.yml')#записываем данные в файл trainer.yml
После выполнения данного кода в файл trainer.yml будет сохранена выборка фотографий с id=3.
Листинг программы классификации пользователей выглядит следующим образом:
names = ['None', 'User']#задаем id для пользователей
face_cascade=cv2.CascadeClassifier('haarcascade_frontalface_default.xml') #задаем изображение каскада Хаара для лица
ret,img = cap.read()#считываем кадры с камеры для обработки
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #переводим изображение в чб, т.к. быстрее обрабатывать
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2) #обводим лицо прямоугольником
id,confidence = recognizer.predict(gray[y:y + h, x:x + w]) #сравниваем лицо с базой данных
if (confidence <=55):
id = names[id]
cv2.putText(img, str(id), (x + 5, y - 5),font, 1, (255, 255, 255), 2) #помещаем текст с именем найденного лица
cv2.imshow('camera', img) #показываем изображение с камеры
Изображение с камеры, после использования данного алгоритма выглядит следующим образом:
Рисунок 2. Классификация пользователя
Результатом работы стала идентификация пользователей с помощью камеры. Данный метод можно использовать, например, для автоматического заполнения форм входа на сайтах.
Список литературы:
- Метод Виолы-Джонса // Wikipedia. - [Электронный ресурс] - Режим доступа. – URL: https://ru.wikipedia.org (Дата обращения 27.02.2018).
- OpenCV modules // OpenCV. – [Электронный ресурс] – Режим доступа. – URL: https://docs.opencv.org (Дата обращения 29.04.2018).
- Face ID // Wikipedia. – [Электронный ресурс] – Режим доступа. – URL: https://ru.wikipedia.org (Дата обращения 10.01.2018).
Оставить комментарий