
이 시스템을 통해 사용자는 이미지를 데이터베이스에 업로드 할 수 있으며 출석 점검 중에 얼굴을 인식하는 데 사용됩니다. 인식 된 얼굴은 데이터베이스와 일치하며 출석은 실시간으로 업데이트됩니다. 이 시스템에는 교사가 출석 기록을 볼 수있는 안전한 로그인 기능도 포함되어 있습니다.
이 프로젝트는 컴퓨터 비전 및 기계 학습을 사용하여 전통적인 프로세스를 자동화하여보다 효율적이고 정확하게 만드는 방법에 대한 훌륭한 예입니다.
전통적인 출석 시스템에서 출석 표시 프로세스는 종종 매뉴얼, 시간 소모적이며 오류가 발생하기 쉬운 일입니다. 기계 학습과 컴퓨터 비전의 출현으로 이제이 프로세스를 자동화하고보다 효율적이고 정확하게 만드는 도구가 있습니다.
얼굴 인식 출석 시스템은 이러한 기술을 활용하여 원활하고 자동화 된 출석 추적 솔루션을 제공하도록 설계되었습니다. 이 시스템은 얼굴 인식 기술을 사용하여 개인을 식별하고 출석을 표시합니다. 이 프로세스는 수동 입력의 필요성을 제거하고 오류 또는 사기 항목의 가능성을 줄입니다.
이 시스템은 Python, Flask, OpenCV 및 Firebase를 사용하여 구축됩니다. Python 및 Flask는 백엔드 기능을 제공하고 OpenCV는 얼굴 감지 및 인식에 사용되며 FireBase는 사용자 정보 및 출석 기록을 저장하는 데 데이터베이스로 사용됩니다.
이 시스템에는 또한 교사를위한 안전한 로그인 기능이 포함되어있어 출석 기록을 볼 수 있습니다. 이 기능은 승인 된 개인 만 출석 데이터에 액세스 할 수 있도록합니다.
출석 추적 프로세스를 간소화하려는 대학이든 직원 체크인 시스템을 자동화하려는 비즈니스이든, 얼굴 인식 출석 시스템은 강력하고 효율적인 솔루션을 제공합니다.
프로젝트 비디오를 보려면 아래 그림을 클릭하십시오

얼굴 인식 출석 시스템 에는 출석 추적을 가능한 한 원활하고 효율적으로 만들기 위해 설계된 다양한 기능이 있습니다.
얼굴 인식 :이 시스템은 고급 얼굴 인식 기술을 사용하여 개인을 식별하고 출석을 표시합니다. 이를 통해 수동 입력이 필요하지 않으며 출석 추적의 정확성을 보장합니다.
실시간 출석 추적 : 시스템은 출석을 실시간으로 추적합니다. 개인이 시스템에 의해 인식 되 자마자 데이터베이스에 출석이 표시되고 업데이트됩니다.
보안 교사 로그인 :이 시스템에는 교사를위한 안전한 로그인 기능이 포함되어 있습니다. 이를 통해 교사는 출석 기록을보고 공인 된 개인만이 데이터에 액세스 할 수 있도록합니다.
멀티 클래스 지원 : 시스템은 여러 클래스를 지원합니다. 학생들은 여러 수업에 등록 할 수 있으며 각 수업마다 출석이 별도로 추적됩니다.
데이터베이스 통합 : 시스템은 클라우드 기반 NOSQL 데이터베이스 인 FireBase와 통합됩니다. 이를 통해 사용자 정보 및 출석 기록을 효율적으로 저장하고 검색 할 수 있습니다.
웹캠 지원 :이 시스템은 얼굴 인식을 위해 웹캠 입력을 지원합니다. 이를 통해 다양한 설정에서 쉽게 설정하고 사용할 수 있습니다.
사용자 친화적 인 인터페이스 : 시스템에는 사용자 친화적 인 인터페이스가있어 사용자가 시스템을 쉽게 탐색하고 사용할 수 있습니다.
오픈 소스 : 시스템은 오픈 소스입니다. 개발자는 시스템에 기여하고 개선 할 수 있습니다.





로컬 컴퓨터에서 얼굴 인식 출석 시스템을 시작하고 실행하려면 다음을 수행하십시오.
저장소를 복제하십시오 . 먼저 저장소를 로컬 컴퓨터로 복제하십시오. 터미널에서 다음 명령을 실행하여이를 수행 할 수 있습니다.
git clone https://github.com/turhancan97/Intelligent-Face-Recognition-Attendance-System.git
가상 환경을 만들고 활성화하십시오. 터미널에서 다음 명령을 실행하여이를 수행 할 수 있습니다.
파이썬 환경
python3.8 -m venv your_env_name
source your_env_name/bin/activate
또는
콘다 환경
conda create -n your_env_name python=3.8
conda activate your_env_name
이렇게하면 가상 환경이 생겨 활성화됩니다. 이 가상 환경에 모든 종속성이 설치됩니다.
종속성 설치 : 복제 된 프로젝트 디렉토리로 이동하고 실행하여 필요한 종속성을 설치하십시오.
pip install -r requirements.txt
이 명령은 requirements.txt 파일에 나열된 모든 필요한 라이브러리 및 패키지를 설치합니다.
DLIB 웹 사이트에서 Shape Predictor 파일 'shape_predictor_68_face_landmarks.dat'을 다운로드해야합니다. 여기에서 파일을 다운로드 할 수 있습니다. 파일을 감지 폴더에 넣을 수 있으며 아래와 같이 Datfile 변수에 대해 Face_Matching.py 파일에 파일의 전체 경로를 작성해야합니다.

Firebase 설정 : 시스템은 데이터베이스 작업에 Firebase를 사용합니다. Firebase 프로젝트를 설정하고 프로젝트의 Firebase 구성을 자체적으로 교체해야합니다. 지침을 위해 Firebase 설정 안내서를 따라갈 수 있습니다.



응용 프로그램 실행 : 먼저 아래 명령을 실행하고 교사 로그인을위한 비밀번호를 입력하십시오.
python generate_password_hash.py
그런 다음 configs/database.yaml 파일에 HOLS를 TEACHER ENTER-LOGIN-HASH 섹션에 복사하십시오.
모든 설정이 완료되면 터미널에서 다음 명령을 실행하여 응용 프로그램을 실행할 수 있습니다.
python app.py
이것은 플라스크 서버가 시작되며 응용 프로그램은 http://127.0.0.1:5000/ 에서 액세스 할 수 있습니다.
얼굴 인식 기능이 작동하려면 컴퓨터에 연결된 웹캠이 필요합니다. 노트북을 사용하는 경우 내장 웹캠이 제대로 작동합니다.
얼굴 인식 출석 시스템이 실행되면 다음 단계를 수행하여 사용할 수 있습니다.
홈페이지 : 웹 브라우저를 열고 http://127.0.0.1:5000/ 로 이동하십시오. 이것은 신청서의 홈페이지로 이동합니다.
새 얼굴 업로드 : 시스템에 새 학생을 추가하려면 "새면 업로드 이미지로 업로드"버튼을 클릭하십시오. 이를 통해 학생의 얼굴 이미지를 업로드 할 수 있습니다. 이미지는 명확해야하며 학생의 얼굴이 보일 것입니다. 또한 "카메라에서 새 얼굴 캡처"버튼을 클릭하여 카메라에서 이미지를 캡처 할 수 있습니다.
학생 정보 추가 : 이미지를 업로드 한 후에는 학생의 정보를 입력 할 수있는 페이지로 리디렉션됩니다. 여기에는 학생의 이름, 이메일, 사용자 유형 (학생 또는 교사), 등록 된 수업 및 비밀번호가 포함됩니다. 모든 정보를 입력 한 후 "제출"버튼을 클릭하십시오.
얼굴 인식 : 홈페이지에서 "얼굴 인식"버튼을 클릭 할 수 있습니다. 이것은 얼굴 인식 과정을 시작합니다. 시스템은 웹캠 앞의 얼굴을 데이터베이스의 얼굴과 일치 시키려고합니다.
클래스 선택 : 경기가 발견되면 클래스를 선택할 수있는 페이지로 리디렉션됩니다. 선택한 클래스의 출석은 데이터베이스에서 업데이트됩니다.
교사 로그인 : 교사 인 경우 홈페이지의 "교사 로그인"버튼을 클릭하여 출석을 볼 수 있습니다. 비밀번호를 입력하라는 요청을받습니다. 올바른 암호가 입력되면 학생 목록과 출석을 볼 수있는 출석 페이지로 리디렉션됩니다.
얼굴 인식 기능에는 웹캠이 필요합니다. 노트북을 사용하는 경우 내장 웹캠이 제대로 작동합니다. 데스크탑을 사용하는 경우 웹캠을 컴퓨터에 연결해야합니다.
얼굴 인식 출석 시스템은 여러 파이썬 라이브러리에 의존하여 올바르게 작동합니다. 다음은 주요 종속성 목록입니다.
플라스크 : 가벼운 웹 응용 프로그램 프레임 워크. 응용 프로그램의 웹 서버 측을 처리하는 데 사용됩니다.
OPENCV : 프로그래밍 기능 라이브러리는 주로 실시간 컴퓨터 비전을 목표로합니다. 웹캠에서 이미지를 캡처하고 얼굴 감지를 수행하는 데 사용됩니다.
Firebase Admin : Firebase 서비스와 상호 작용하기위한 라이브러리. Firebase Realtime 데이터베이스 및 FireBase 스토리지와 상호 작용하는 데 사용됩니다.
Werkzeug : 포괄적 인 WSGI 웹 애플리케이션 라이브러리. 플라스크에서 파일 업로드를 처리하는 데 사용됩니다.
베개 : Python 이미징 라이브러리는 Python 통역사에 이미지 처리 기능을 추가합니다.
Numpy : Python 프로그래밍 언어를위한 라이브러리로, 대규모 다차원 배열 및 행렬에 대한 지원을 추가하고 이러한 배열에서 작동 할 대규모 고급 수학 수학 기능 모음.
이러한 종속성을 설치하려면 Python의 패키지 관리자 인 PIP를 사용할 수 있습니다. 터미널에서 다음 명령을 실행하기 만하면됩니다.
pip install -r requirements.txt 필요한 모든 패키지를 설치합니다. 이 명령을 실행할 때 올바른 디렉토리에 있는지 확인하십시오 (디렉토리에 requirements.txt 파일이 포함되어 있어야합니다).
얼굴 인식 출석 시스템에 대한 기여는 매우 환영합니다! 기능 요청, 버그 보고서 또는 코드 리팩토링 제안이있는 경우 문제를 열거 나 풀어 요청을 작성하십시오.
기여할 수있는 몇 가지 방법은 다음과 같습니다.
UI/UX 개선 : 현재 인터페이스는 매우 기본적입니다. 프론트 엔드 개발에 대한 경험이 있고 사용자 인터페이스 또는 사용자 경험을 향상시키는 방법에 대한 아이디어가 있다면 기여에 큰 감사를드립니다.
새로운 기능 추가 :이 프로젝트에 적합한 새로운 기능에 대한 아이디어가 있다면 문제를 열어 자유롭게 제안하십시오. 직접 구현하고 싶다면 더 좋습니다! 변경 사항으로 풀 요청을 열면 검토하겠습니다.
버그보고 : 시스템을 사용하는 동안 버그가 발생하는 경우 문제를 열어서보고하십시오. 버그와 발생한 상황에 대한 가능한 많은 정보를 포함시킵니다.
리팩토링 코드 : 모든 소프트웨어 프로젝트와 마찬가지로 코드베이스의 개선의 여지가 항상 있습니다. 더 깨끗하고 효율적이거나 강력하게 만들기 위해 일부 코드를 리팩터링 할 수있는 기회가 있다면 제안서를 검토하게되어 기쁩니다.
기여하기 전에 기존 문제를 확인하고 복제 노력을 피하기 위해 요청을 가져 오십시오. 또한 풀 요청을 열면 변경 사항에 대한 명확하고 자세한 설명을 포함시켜야합니다.
얼굴 인식 출석 시스템에 기여하는 데 관심을 가져 주셔서 감사합니다!
향후 시스템을 개선하거나 확장 할 수있는 몇 가지 영역이 있습니다.
학생 ID 과제 : 현재, 학생 ID는 데이터베이스의 총 이미지 수보다 하나 더 할당됩니다. 앞으로 누락 된 학생 ID를 할당 하여이 프로세스를 최적화 할 계획입니다 (예 : ID가 1,2,3,4, [], 6,7,8 인 경우 새 이미지의 ID는 5가됩니다).
사용자 인터페이스 개선 :보다 매력적인 사용자 경험을 제공하기 위해 인터페이스의 미적 매력을 향상시키는 것을 목표로합니다.
데이터베이스 이미지 추가 : 현재 이미지가 캡처하자마자 데이터베이스에 이미지가 추가됩니다. 해당 정보를 입력 한 후 이미지가 데이터베이스에만 추가되도록이 프로세스를 수정할 계획입니다.
데이터베이스 최적화 : 데이터베이스 작업을 최적화하여 프로세스를 한 번만 호출하여 프로세스 속도를 높이는 것을 목표로합니다.
보안 향상 : 데이터 처리 및 사용자 인증을위한보다 안전한 방법을 구현할 계획입니다.
학생 로그인 : 앞으로, 우리는 학생들이 암호를 사용하여 시스템에 로그인 할 수 있도록 계획합니다.
교사 데이터베이스 : 우리는 교사를위한 별도의 데이터베이스를 만드는 것을 목표로합니다. '교사 로그인'버튼을 누르면 사용자 이름과 비밀번호가 요청됩니다.
교사보기 : 일단 로그인하면 교사는 가르치는 수업에 따라 학생 출석을 볼 수 있습니다.
배포 : 현재 시스템은 로컬로 실행되도록 설계되었습니다. 앞으로 우리는 Heroku와 같은 플랫폼에 시스템을 배포 할 계획이며,이 시스템은 로컬 컴퓨터뿐만 아니라 어디서나 액세스 할 수 있습니다.
향상된 오류 처리 및 사용자 피드백 : 시스템이 현재 오류를 처리하고 사용자에게 피드백을 제공하지만 이러한 측면을 개선하여 시스템을보다 강력하고 사용자 친화적으로 만들 수 있습니다.
실시간 업데이트 : 현재 학생이 로그인하면 출석 데이터가 업데이트됩니다. 향후, 우리는 실시간 업데이트를 구현하여 학생의 얼굴이 인식 되 자마자 출석 데이터가 즉시 업데이트되도록합니다.
다른 시스템과의 통합 : 시스템은 학습 관리 시스템 또는 학생 정보 시스템과 같은 교육 기관에 사용되는 다른 시스템과 통합 될 수 있습니다. 이것은 학생과 교사 모두에게 더 완벽한 경험을 허용 할 것입니다.
추가 기능 : 여러 카메라 지원, 한 번에 여러면의 인식 또는 다양한 조명 조건을 처리하는 기능과 같이 시스템에 추가 할 수있는 여러 기능이 있습니다.
이것들은 향후 개선을위한 몇 가지 아이디어 일뿐입니다. 우리는 항상 새로운 아이디어와 제안에 개방되어 있으므로 자유롭게 기여하십시오!
이 프로젝트는 MIT 라이센스에 따라 라이센스가 부여됩니다. 이는이 라이센스의 조건에 따라 프로젝트를 자유롭게 사용, 수정 및 배포 할 수 있음을 의미합니다. 자세한 내용은 라이센스 파일을 참조하십시오.
이 프로젝트는 보증없이 "있는 그대로"제공됩니다. 저자는 프로젝트를 사용하여 발생할 수있는 손상이나 문제에 대해 책임을지지 않습니다. 프로덕션 환경에서 사용하기 전에 항상 코드를 직접 확인하십시오.
다음은 시스템 구성 요소와 그 상호 작용에 대한 높은 수준의 관점입니다.

1. 얼굴 인식 시스템 : 이것은 프로젝트의 핵심입니다. 이미지 또는 비디오 프레임을 캡처하고,면을 감지하고, 특징을 추출하며, 얼굴을 일치시킵니다. 이 시스템은 Python 및 OpenCV를 사용하여 개발됩니다.
2. 사용자 인터페이스 : 사용자 (학생 및 강사)가 상호 작용할 시스템의 일부입니다. FireBase 데이터베이스의 정보를 표시하고 사용자 입력을 데이터베이스로 보냅니다. 인터페이스는 HTML, CSS 및 JavaScript를 사용하여 웹 응용 프로그램으로 개발됩니다.
3. Firebase 데이터베이스 : 필요한 모든 데이터가 저장되는 곳입니다. 데이터베이스는 학생 정보, 출석 기록 및 기타 필요한 데이터를 저장합니다. 얼굴 인식 시스템 및 사용자 인터페이스는 데이터베이스와 상호 작용하여 데이터를 저장하고 검색합니다.
상호 작용 :
얼굴 인식 시스템은 사용자 카메라에서 이미지 또는 비디오 프레임을 캡처하고 얼굴을 감지하고 기능을 추출하며 얼굴을 일치시킵니다. 얼굴이 일치하면 시스템은 학생의 ID와 현재 날짜 및 시간을 Firebase 데이터베이스로 보내 출석을 기록합니다.
사용자 인터페이스는 FireBase 데이터베이스에서 출석 레코드를 표시합니다. 학생 또는 강사가 로그인하면 인터페이스는 ID를 FireBase 데이터베이스로 보내 출석 기록을 검색합니다. 이 인터페이스는 또한 학생들이 수업에 등록하고 강사가 수업을 만들 수있는 옵션을 제공하며 이러한 작업에는 데이터를 FireBase 데이터베이스로 전송하는 것도 포함됩니다.
Firebase 데이터베이스는 시스템의 모든 데이터를 저장합니다. 얼굴 인식 시스템 또는 사용자 인터페이스에서 데이터를 수신하면 관련 레코드를 업데이트합니다. 사용자 인터페이스에서 데이터 요청을 받으면 요청 된 레코드를 검색하여 인터페이스로 보냅니다.
이것은 시스템 아키텍처와 구성 요소 간의 상호 작용에 대한 단순화 된 관점입니다. 프로젝트의 특정 요구 사항에 따라 더 많은 구성 요소 나 상호 작용을 추가해야 할 수도 있습니다. 예를 들어 등록 된 학생과 강사 만 시스템에 액세스 할 수 있는지 확인하려면 사용자 인증을 처리하기 위해 구성 요소를 추가해야 할 수도 있습니다 .docs/images/database_design.png
이제 FireBase 용 데이터베이스 스키마를 설계하고 그 봅시다. 여기에는 저장 될 데이터 (예 : 학생 정보, 출석 기록 등) 및이 데이터가 구조화되고 관련되는 방법이 포함됩니다.

사용자 컬렉션 : 이 컬렉션은 학생과 강사를 포함한 모든 사용자에 대한 정보를 저장합니다. 각 사용자는 고유 한 ID가 있으며 각 사용자에 대해 저장된 데이터에는 다음이 포함될 수 있습니다.
userID : 사용자를위한 고유 식별자.name : 사용자의 이름.email : 사용자의 이메일 주소.embeddings : 사용자 얼굴 임베딩userType : 사용자 유형 (학생 또는 강사).password : 사용자의 비밀번호 (안전하게 저장).classes : 사용자가 등록한 프로그램 목록 (학생) 및 해당 학생의 출석 수이것은 데이터베이스의 구조에 대한 단순화 된 관점입니다. 또한 Firebase Storage에 학생의 이미지를 저장했습니다. 이미지는 static/images라는 폴더에 저장되며 이미지 이름은 학생의 ID입니다.
이것은 프로젝트의 중요한 부분이며 여러 단계를 포함합니다.

연구 얼굴 인식 알고리즘 :
얼굴 인식 시스템 구현 :
FireBase 데이터베이스와 얼굴 인식 시스템을 통합 :