Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: Научного журнала «Студенческий» № 29(73)

Рубрика журнала: Информационные технологии

Скачать книгу(-и): скачать журнал часть 1, скачать журнал часть 2, скачать журнал часть 3

Библиографическое описание:
Королев Р.Ю., Попко К.С. СИСТЕМА РАСПОЗНАВАНИЯ ЛИЦ, КАК МЕТОД ИДЕНТИФИКАЦИИ ПОЛЬЗОВАТЕЛЯ // Студенческий: электрон. научн. журн. 2019. № 29(73). URL: https://sibac.info/journal/student/73/151918 (дата обращения: 29.03.2024).

СИСТЕМА РАСПОЗНАВАНИЯ ЛИЦ, КАК МЕТОД ИДЕНТИФИКАЦИИ ПОЛЬЗОВАТЕЛЯ

Королев Роман Юрьевич

студент НИУ МИЭТ по направлению «Прикладная математика»,

РФ, г. Зеленоград

Воспитанник ЦМИТ «Перспектива»,

РФ, г. Курганинск

Попко Кирилл Сергеевич

инженер по направлению радиофизика, магистр радиофизики, Аспирант ФГБОУ ВПО «Кубанский государственный технологический университет»

РФ, г. Краснодар

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. В результате создана программа для распознавания лиц с возможностью обучения. Она может использоваться как инструмент для авто заполнения форм, включения голосового ассистента, а также как интеллектуальная система оценивания мер человека.

Апробация работы:

  1. Российская научно-социальная программа для молодежи и школьников «Шаг в будущее», МГТУ им. Баумана, г. Москва, 2018-2019 гг.;
  2. Фестиваль «От Винта», г. Краснодар, 2018 г.;
  3. Всероссийский конкурс научно-исследовательских работ имени Д. И. Менделеева, г. Москва, 2018 г.;
  4. Всероссийская олимпиада «Созвездие», г. Королев, 2018 г.;
  5. Премия «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. Классификация пользователя

 

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

 

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

  1. Метод Виолы-Джонса // Wikipedia. - [Электронный ресурс] - Режим доступа. – URL: https://ru.wikipedia.org (Дата обращения 27.02.2018).
  2. OpenCV modules // OpenCV. – [Электронный ресурс] – Режим доступа. – URL: https://docs.opencv.org (Дата обращения 29.04.2018).
  3. Face ID // Wikipedia. – [Электронный ресурс] – Режим доступа. ­– URL: https://ru.wikipedia.org (Дата обращения 10.01.2018).

Оставить комментарий

Форма обратной связи о взаимодействии с сайтом
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.