
Система позволяет пользователям загружать свое изображение в базу данных, которая затем используется для распознавания их лица во время проверки посещаемости. Признанные лица соответствуют базе данных, а посещаемость обновляется в режиме реального времени. Система также включает в себя безопасную функцию входа для учителей для просмотра записей посещаемости.
Этот проект является отличным примером того, как компьютерное зрение и машинное обучение можно использовать для автоматизации традиционных процессов, что делает их более эффективными и точными.
В традиционных системах посещаемости процесс маркировки посещаемости часто является ручным, трудоемким и подверженным ошибкам. Благодаря появлению машинного обучения и компьютерного зрения, у нас теперь есть инструменты для автоматизации этого процесса и сделать его более эффективным и точным.
Наша система посещаемости распознавания лица предназначена для использования этих технологий для обеспечения бесшовного и автоматизированного решения для отслеживания посещаемости. Система использует технологию распознавания лица для выявления людей и отметить их посещаемость. Этот процесс устраняет необходимость в ручном въезде и снижает шансы на ошибки или мошеннические записи.
Система построена с использованием Python, Flask, OpenCV и Firebase. Python и Flask предоставляют функциональность бэкэнд, OpenCV используется для обнаружения и распознавания лица, а Firebase используется в качестве базы данных для хранения информации пользователя и записей посещаемости.
Система также включает в себя безопасную функцию входа для учителей, что позволяет им просматривать записи посещаемости. Эта функция гарантирует, что только уполномоченные лица имеют доступ к данным посещаемости.
Являетесь ли вы университетом, хотите упростить процесс отслеживания посещаемости или бизнес, стремясь автоматизировать систему регистрации сотрудника, наша система посещаемости лица предоставляет надежное и эффективное решение.
Пожалуйста, нажмите на картинку ниже для видео проекта

Система посещаемости распознавания лица поставляется с множеством функций, предназначенных для того, чтобы сделать отслеживание посещаемости максимально плавным и эффективным:
Распознавание лица : система использует расширенную технологию распознавания лица для выявления людей и отметить их посещаемость. Это устраняет необходимость в ручном въезде и обеспечивает точность отслеживания посещаемости.
Отслеживание посещаемости в реальном времени : система отслеживает посещаемость в режиме реального времени. Как только человек узнает системой, их посещаемость помечена и обновлена в базе данных.
Безопасный вход для учителя : система включает в себя безопасную функцию входа для учителей. Это позволяет учителям просматривать записи посещаемости и гарантирует, что только уполномоченные лица имеют доступ к этим данным.
Поддержка с несколькими классами : система поддерживает несколько классов. Студенты могут быть зачислены в несколько классов, а их посещаемость отслеживается отдельно для каждого класса.
Интеграция базы данных : система интегрирована с Firebase, облачной базой данных NOSQL. Это позволяет эффективно хранение и поиск информации пользователя и записей посещаемости.
Поддержка веб -камеры : система поддерживает ввод веб -камеры для распознавания лица. Это облегчает настройку и использование в различных настройках.
Интерфейс, удобный для пользователя : система оснащена удобным интерфейсом, что позволяет пользователям легко ориентироваться и использовать систему.
Открытый исходный код : система с открытым исходным кодом. Разработчики могут внести свой вклад и помочь улучшить систему.





Чтобы поднять систему посещаемости распознавания лица на вашей локальной машине, следуйте этим шагам:
Клонировать репозиторий : во -первых, клонируйте репозиторий на местную машину. Вы можете сделать это, запустив следующую команду в своем терминале:
git clone https://github.com/turhancan97/Intelligent-Face-Recognition-Attendance-System.git
Создайте виртуальную среду и активируйте ее. Вы можете сделать это, выполнив следующие команды в вашем терминале:
Среда Python
python3.8 -m venv your_env_name
source your_env_name/bin/activate
или
Conda Environment
conda create -n your_env_name python=3.8
conda activate your_env_name
Это создаст виртуальную среду и активирует ее. Все зависимости будут установлены в этой виртуальной среде.
Установите зависимости : перейдите в клонированный каталог проектов и установите необходимые зависимости, работая:
pip install -r requirements.txt
Эта команда установит все необходимые библиотеки и пакеты, перечисленные в файле requirements.txt .
Обратите внимание, что вам нужно загрузить файл предиктора Shape 'SHAME_PREDICTOR_68_FACE_LANDMARKS.DAT' с веб -сайта DLIB. Вы можете скачать файл отсюда. Вы можете поместить файл в папку обнаружения, и вам нужно написать полный путь файла в файле face_matching.py для переменной datfile , как ниже.

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



Запустите приложение : сначала запустите команду ниже и введите пароль для входа учителя.
python generate_password_hash.py
Затем скопируйте файл configs/database.yaml в раздел «Ввод»-The-Teacher-Login-Hash.
После завершения настройки вы можете запустить приложение, выполнив следующую команду в терминале:
python app.py
Это запустит сервер Flask, и приложение будет доступно по адресу http://127.0.0.1:5000/ .
Обратите внимание, что вам нужна веб -камера, подключенная к вашей машине для работы по распознаванию лица. Если вы используете ноутбук, встроенная веб-камера будет работать нормально.
После того, как у вас работает система посещаемости распознавания лица, вы можете начать использовать ее, выполнив эти шаги:
Главная страница : Откройте свой веб -браузер и перейдите по адресу http://127.0.0.1:5000/ . Это приведет вас к домашней странице приложения.
Загрузите новое лицо : чтобы добавить нового студента в систему, нажмите кнопку «Загрузите новое лицо как изображение». Это позволит вам загрузить изображение лица студента. Изображение должно быть ясным, и лицо ученика должно быть видно. Кроме того, вы можете запечатлеть изображение с камеры, нажав на кнопку «Захватить новое лицо с камеры».
Добавьте информацию о студенте : после загрузки изображения вы будете перенаправлены на страницу, на которую вы можете ввести информацию студента. Это включает в себя имя студента, электронную почту, тип пользователя (ученик или учитель), классы, в которых они зачислены, и пароль. После того, как вы ввели всю информацию, нажмите кнопку «Отправить».
Распознавание лица : вернемся на домашней странице, вы можете нажать на кнопку «распознавать лицо». Это начнет процесс распознавания лица. Система попытается сопоставить лицо перед веб -камерой с лицами в базе данных.
Выбор класса : Если совпадение найдено, вы будете перенаправлены на страницу, на которую вы можете выбрать класс. Посещаемость выбранного класса будет обновлена в базе данных.
Вход учителя : если вы учитель, вы можете просмотреть посещаемость, нажав кнопку «Вход учителя» на главной странице. Вас попросят ввести пароль. Как только введен правильный пароль, вы будете перенаправлены на страницу посещаемости, где вы можете увидеть список студентов и их посещаемость.
Помните, что функция распознавания лица требует веб -камеры. Если вы используете ноутбук, встроенная веб-камера будет работать нормально. Если вы используете рабочий стол, вам нужно будет подключить веб -камеру к вашей машине.
Система посещаемости распознавания лица опирается на несколько библиотек Python для правильной работы. Вот список основных зависимостей:
Колба : легкая структура веб -приложений. Он используется для обработки стороны веб -сервера приложения.
OpenCV : библиотека функций программирования, в основном нацеленная на компьютерное зрение в реальном времени. Он используется для захвата изображений с веб -камеры и выполнения обнаружения лица.
Админ Firebase : библиотека для взаимодействия с службами Firebase. Он используется для взаимодействия с базой данных Firebase Realtime и хранилищем Firebase.
Werkzeug : комплексная библиотека веб -приложений WSGI. Он используется для обработки загрузки файлов в колбу.
Подушка : библиотека изображений Python добавляет возможности обработки изображений к вашему интерпретатору Python.
Numpy : библиотека для языка программирования Python, добавляя поддержку крупных многомерных массивов и матриц, а также большую коллекцию математических функций высокого уровня для работы на этих массивах.
Чтобы установить эти зависимости, вы можете использовать PIP, диспетчер пакетов для Python. Просто запустите следующую команду в вашем терминале:
pip install -r requirements.txt Это установит все необходимые пакеты. Убедитесь, что вы находитесь в правильном каталоге при выполнении этой команды (каталог должен содержать файл requirements.txt ).
Вклад в систему посещаемости распознавания лица очень приветствуется! Если у вас есть запрос на функции, отчет об ошибках или предложение для рефакторинга кода, пожалуйста, не стесняйтесь открыть проблему или создать запрос на вытяжение.
Вот несколько способов внести свой вклад:
Улучшение пользовательского интерфейса/UX : текущий интерфейс довольно простой. Если у вас есть опыт работы с фронтальной разработкой, и у вас есть некоторые идеи о том, как улучшить пользовательский интерфейс или пользовательский опыт, ваш вклад был бы очень признателен.
Добавление новых функций : если у вас есть идея для новой функции, которая хорошо бы соответствовала этому проекту, не стесняйтесь предлагать его, открыв проблему. Если вы хотите реализовать это самостоятельно, еще лучше! Откройте запрос на привлечение с вашими изменениями, и мы рассмотрим его.
Отчетность об ошибках : если вы сталкиваетесь с какими -либо ошибками при использовании системы, сообщите о них, открыв проблему. Включите как можно больше информации о ошибке и обстоятельствах, при которых она произошла.
Рефакторинг : как и в любом программном проекте, в кодовой базе всегда есть место для улучшения. Если вы увидите возможность рефакторировать какой -то код, чтобы сделать его более чистым, более эффективным или более надежным, мы будем рады рассмотреть ваше предложение.
Прежде чем внести свой вклад, пожалуйста, убедитесь, что проверяйте существующие проблемы и обращайте запросов, чтобы избежать дублирования усилий. Кроме того, когда вы открываете запрос на вытяжение, обязательно включите четкое и подробное описание сделанных вами изменений.
Спасибо за заинтересованность в вклад в систему посещаемости распознавания лица!
Есть несколько областей, где в будущем система может быть улучшена или расширена:
Назначение идентификатора студента : В настоящее время идентификатор учащегося назначается как одно больше, чем общее количество изображений в базе данных. В будущем мы планируем оптимизировать этот процесс, назначив пропущенные идентификаторы студентов (например, если идентификаторы составляют 1,2,3,4, [], 6,7,8, идентификатор нового изображения будет 5).
Улучшения пользовательского интерфейса : мы стремимся улучшить эстетическую привлекательность интерфейса, чтобы обеспечить более привлекательный пользовательский опыт.
Добавление изображения базы данных : на данный момент в базу данных добавляется изображение, как только оно будет захвачено. Мы планируем изменить этот процесс так, чтобы изображение было добавлено только в базу данных после введения соответствующей информации.
Оптимизация базы данных : мы стремимся оптимизировать операции базы данных, чтобы ускорить процесс, вызывая их только один раз.
Улучшения безопасности : мы планируем реализовать более безопасные методы обработки данных и аутентификации пользователей.
Вход студентов : В будущем мы планируем позволить студентам войти в систему, используя свои пароли.
База данных учителей : мы стремимся создать отдельную базу данных для учителей. Когда нажата кнопка «Вход учителя», будет запрошено имя пользователя и пароль.
Просмотр учителей : После входа учителя смогут просматривать посещаемость учащихся на основе занятий, которые они преподают.
Развертывание : в настоящее время система предназначена для работы локально. В будущем мы планируем развернуть систему на платформе, такой как Heroku, которая сделает ее доступной из любого места, а не только на локальной машине.
Улучшенная обработка ошибок и отзывы пользователей : хотя система в настоящее время обрабатывает ошибки и предоставляет отзывы пользователю, эти аспекты могут быть улучшены, чтобы сделать систему более надежной и удобной для пользователя.
Обновления в режиме реального времени : в настоящее время данные посещаемости обновляются при входе в систему студента.
Интеграция с другими системами : система может быть интегрирована с другими системами, используемыми в учебных заведениях, такими как системы управления обучением или информационные системы студентов. Это позволило бы получить более плавный опыт как для студентов, так и для учителей.
Дополнительные функции : Существует много дополнительных функций, которые могут быть добавлены в систему, такие как поддержка нескольких камер, распознавание нескольких лиц одновременно или возможность обрабатывать различные условия освещения.
Это всего лишь несколько идей для будущих улучшений. Мы всегда открыты для новых идей и предложений, так что не стесняйтесь вносить свой вклад!
Этот проект лицензирован по лицензии MIT. Это означает, что вы можете свободно использовать, изменять и распространять проект в соответствии с условиями настоящей лицензии. Пожалуйста, смотрите файл лицензии для получения более подробной информации.
Обратите внимание, что этот проект предоставляется «как есть» без каких -либо гарантий. Авторы не несут ответственности за любой ущерб или проблемы, которые могут возникнуть в результате использования проекта. Всегда проверяйте код самостоятельно, прежде чем использовать его в производственной среде.
Вот высокий взгляд на компоненты системы и их взаимодействие:

1. Система распознавания лица: это ядро вашего проекта. Он будет снимать изображения или видео кадры, обнаруживать границы, извлекать функции и соответствовать лицам. Эта система будет разработана с использованием Python и OpenCV.
2. Пользовательский интерфейс: это та часть системы, с которой будут взаимодействовать пользователи (студенты и инструкторы). Он будет отображать информацию из базы данных Firebase и отправлять входы пользователей в базу данных. Интерфейс будет разработан как веб -приложение с использованием HTML, CSS и JavaScript.
3. База данных Firebase: Здесь будут храниться все необходимые данные. База данных будет хранить информацию о студентах, записи посещаемости и любые другие необходимые данные. Система распознавания лица и пользовательский интерфейс будут взаимодействовать с базой данных для хранения и извлечения данных.
Взаимодействия:
Система распознавания лиц будет снимать изображения или видео кадры с камеры пользователя, обнаруживать границы, извлекать функции и соответствовать лицам. Когда лицо будет сопоставлено, система отправит идентификатор студента и текущую дату и время в базу данных Firebase для записи посещаемости.
Пользовательский интерфейс будет отображать записи посещаемости из базы данных Firebase. Когда студент или инструктор входит в систему, интерфейс отправит свой идентификатор в базу данных Firebase для получения записей об их посещаемости. Интерфейс также предоставит студентам варианты регистрации для занятий и для инструкторов для создания классов, и эти действия также будут включать отправку данных в базу данных Firebase.
База данных Firebase будет хранить все данные для системы. Когда он получает данные из системы распознавания лица или пользовательского интерфейса, он обновит соответствующие записи. Когда он получит запрос на данные из пользовательского интерфейса, он извлечет запрашиваемые записи и отправит их в интерфейс.
Это упрощенный вид архитектуры системы и взаимодействия между компонентами. В зависимости от конкретных требований вашего проекта, вам может потребоваться добавить больше компонентов или взаимодействий. Например, вам может потребоваться добавить компонент для обработки аутентификации пользователей, если вы хотите убедиться, что только зарегистрированные студенты и инструкторы могут получить доступ к System.docs/images/database_design.png
Давайте теперь разработаем и нарисуем схему базы данных для Firebase. Это включает в себя определение данных, которые будут сохранены (например, информация о студентах, записи посещаемости и т. Д.) И то, как эти данные будут структурированы и связаны.

Коллекция пользователей: в этой коллекции будет храниться информация обо всех пользователях, включая как студентов, так и инструкторов. У каждого пользователя будет уникальный идентификатор, и данные, хранящиеся для каждого пользователя, могут включать:
userID : уникальный идентификатор для пользователя.name : полное имя пользователя.email : адрес электронной почты пользователя.embeddings : Пользовательские лицаuserType : тип пользователя (студента или инструктора).password : пароль пользователя (хранится надежно).classes : Список программ, в которых пользователь зачислен (для студентов) и количество посещаемости этого студентаЭто упрощенное представление о структуре нашей базы данных. Мы также сохранили изображения студента в хранилище Firebase. Изображения хранятся в папке с именем Static/Images, а название изображений - идентификатор студента.
Это важная часть вашего проекта и включает в себя несколько шагов:

Исследования сталкиваются с алгоритмами распознавания:
Реализуйте систему распознавания лица:
Интегрируйте систему распознавания лица с базой данных Firebase: