
該系統允許用戶將圖像上傳到數據庫,然後在出勤檢查期間使用該圖像來識別其面部。公認的面孔與數據庫匹配,並且出勤率實時更新。該系統還包括一個安全的登錄功能,供教師查看出勤記錄。
該項目是如何使用計算機視覺和機器學習來自動化傳統流程的一個很好的例子,從而使它們更有效,準確。
在傳統出勤系統中,標記出勤的過程通常是手動的,耗時的,容易出現錯誤。隨著機器學習和計算機視覺的出現,我們現在擁有自動化此過程並使其更高效和準確的工具。
我們的面部識別出勤系統旨在利用這些技術提供無縫且自動的出勤跟踪解決方案。該系統使用面部識別技術來識別個人並標誌著他們的出勤率。此過程消除了對手動輸入的需求,並減少了錯誤或欺詐性條目的機會。
該系統是使用Python,Flask,OpenCV和Firebase構建的。 Python和Flask提供了後端功能,OPENCV用於面部檢測和識別,而Firebase用作存儲用戶信息和出勤記錄的數據庫。
該系統還為教師提供了安全的登錄功能,使他們可以查看出勤記錄。此功能可確保只有授權的個人才能訪問出勤數據。
無論您是一門想要簡化出勤跟踪過程的大學,還是希望自動化員工入住系統的企業,我們的面部識別出勤系統都提供了一個強大而有效的解決方案。
請單擊下面的圖片以獲取項目視頻

面部識別出勤系統具有許多功能,旨在使出勤跟踪盡可能無縫和高效:
面部識別:該系統使用高級面部識別技術來識別個人並標記出勤率。這消除了對手動輸入的需求,並確保出勤跟踪的準確性。
實時出勤跟踪:系統實時跟踪出勤率。一旦系統識別個人,他們的出勤率就會在數據庫中標記和更新。
安全的老師登錄:系統包括針對教師的安全登錄功能。這使教師可以查看出勤記錄,並確保只有授權的個人才能訪問此數據。
多級支持:系統支持多個類。可以將學生參加多個課程,並且每個班級都會單獨跟踪他們的出勤率。
數據庫集成:系統與基於雲的NOSQL數據庫Firebase集成。這樣可以有效地存儲和檢索用戶信息和出勤記錄。
網絡攝像頭支持:系統支持網絡攝像頭輸入以進行面部識別。這使設置並在各種設置中使用變得易於設置。
用戶友好的接口:該系統具有用戶友好的接口,使用戶易於導航和使用該系統。
開源:系統是開源。歡迎開發人員貢獻並幫助改善系統。





要在本地機器上啟動並運行面部識別出勤系統,請按照以下步驟操作:
克隆存儲庫:首先,將存儲庫克隆到您的本地計算機。您可以通過在終端中運行以下命令來執行此操作:
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 create -n your_env_name python=3.8
conda activate your_env_name
這將創建一個虛擬環境並激活它。所有依賴項將安裝在此虛擬環境中。
安裝依賴項:導航到克隆的項目目錄中,並通過運行安裝必要的依賴項:
pip install -r requirements.txt
此命令將安裝requirements.txt文件中列出的所有必要庫和軟件包。
請注意,您需要從dlib網站下載“ shape_predictor_face_face_face_face_face_face_dats.dat”的形狀預測器文件。您可以從這裡下載文件。您可以將文件放入檢測文件夾中,需要在face_matching.py文件中為DATFILE變量編寫文件的完整路徑,如下所示。

設置Firebase :系統將firebase用於數據庫操作。您需要設置一個火箱項目,並用自己的項目替換項目中的燃料配置。您可以遵循“ Firebase設置指南”進行說明。



運行應用程序:首先運行下面的命令,然後輸入教師登錄的密碼。
python generate_password_hash.py
然後將“ has”複製到configs/database.yaml文件中,以enter-your-teacher-login-hash部分。
所有設置完成後,您可以通過在終端中執行以下命令來運行應用程序:
python app.py
這將啟動燒瓶服務器,並且該應用程序將在http://127.0.0.1:5000/ 5000/上訪問。
請注意,您需要連接到計算機的網絡攝像頭才能正常工作。如果您使用的是筆記本電腦,則內置網絡攝像頭可以正常工作。
一旦您運行了面部識別出勤系統,就可以通過遵循以下步驟開始使用它:
主頁:打開您的網絡瀏覽器並導航到http://127.0.0.1:5000/ 。這將帶您進入應用程序的主頁。
上傳新的面孔:要在系統中添加新學生,請單擊“以圖像為圖像”按鈕。這將使您可以上傳學生的臉部圖像。圖像應清晰,學生的臉應可見。另外,您可以通過單擊“從相機捕獲新面”按鈕來捕獲相機的圖像。
添加學生信息:上傳圖像後,您將被重定向到可以輸入學生信息的頁面。這包括學生的姓名,電子郵件,用戶類型(學生或老師),他們參加的課程以及密碼。輸入所有信息後,單擊“提交”按鈕。
面部識別:回到主頁上,您可以單擊“識別面”按鈕。這將開始面部識別過程。該系統將嘗試將網絡攝像頭前面的面部與數據庫中的面匹配。
課程選擇:如果找到匹配項,則將您重定向到可以選擇類的頁面。選定類的出勤率將在數據庫中更新。
老師登錄:如果您是老師,則可以通過單擊主頁上的“老師登錄”按鈕來查看出席率。您將被要求輸入密碼。輸入正確的密碼後,您將被重定向到出勤頁面,您可以在其中看到學生及其出勤率。
請記住,面部識別功能需要網絡攝像頭。如果您使用的是筆記本電腦,則內置網絡攝像頭可以正常工作。如果您使用的是桌面,則需要將網絡攝像頭連接到計算機。
面部識別出勤系統依靠幾個Python庫才能正常運行。這是主要依賴性列表:
燒瓶:輕巧的Web應用程序框架。它用於處理應用程序的Web服務器端。
OPENCV :編程功能庫主要針對實時計算機視覺。它用於捕獲網絡攝像頭的圖像並執行面部檢測。
Firebase Admin :用於與Firebase服務互動的庫。它用於與Firebase實時數據庫和Firebase存儲相互作用。
Werkzeug :全面的WSGI Web應用程序庫。它用於處理燒瓶中的文件上傳。
枕頭:Python成像庫為您的Python解釋器添加了圖像處理功能。
Numpy :Python編程語言的庫,為大型多維數組和矩陣增加了支持,以及大量高級數學功能集合以在這些數組上運行。
要安裝這些依賴項,您可以使用PIP,Pip Manager for Python。只需在終端中運行以下命令:
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開發為Web應用程序。
3。 Firebase數據庫:這是所有必要數據存儲的地方。該數據庫將存儲學生信息,出勤記錄以及任何其他必要的數據。面部識別系統和用戶界面都將與數據庫進行交互以存儲和檢索數據。
互動:
面部識別系統將捕獲用戶相機的圖像或視頻幀,檢測面,提取功能和匹配面。匹配面時,系統將將學生的ID以及當前日期和時間發送到Firebase數據庫以記錄出席率。
用戶界面將顯示Firebase數據庫的出勤記錄。當學生或講師登錄時,界面將其ID發送到Firebase數據庫以檢索出勤記錄。該界面還將為學生提供註冊課程和教師創建課程的選項,這些操作還將涉及將數據發送到Firebase數據庫。
Firebase數據庫將存儲系統的所有數據。當它從面部識別系統或用戶界面接收數據時,它將更新相關記錄。當它從用戶界面收到數據請求時,它將檢索請求的記錄並將其發送到接口。
這是系統體系結構和組件之間的交互的簡化視圖。根據項目的特定要求,您可能需要添加更多組件或交互。例如,如果您要確保只有註冊的學生和講師才能訪問System.docs/images/database_design.png,則可能需要添加一個用於處理用戶身份驗證的組件。
現在,讓我們設計並繪製Firebase的數據庫模式。這包括定義將存儲的數據(例如,學生信息,出勤記錄等)以及該數據將如何結構和相關。

用戶集合:此集合將存儲有關所有用戶的信息,包括學生和講師。每個用戶都有一個唯一的ID,每個用戶存儲的數據可能包括:
userID :用戶的唯一標識符。name :用戶的全名。email :用戶的電子郵件地址。embeddings :用戶臉部嵌入userType :用戶類型(學生或講師)。password :用戶的密碼(安全存儲)。classes :用戶入學的程序列表(適合學生)和該學生的出勤人數這是我們數據庫結構的簡化視圖。我們還將學生的圖像存儲在火箱存儲中。這些圖像存儲在名為static/圖像的文件夾中,圖像的名稱是學生的ID。
這是您項目的關鍵部分,涉及幾個步驟:

研究面部識別算法:
實施面部識別系統:
將面部識別系統與firebase數據庫集成: