
このシステムを使用すると、ユーザーは画像をデータベースにアップロードできます。データベースは、出席チェック中に顔を認識するために使用されます。認識された顔はデータベースと一致し、出席者はリアルタイムで更新されます。このシステムには、教師が出席記録を表示するための安全なログイン機能も含まれています。
このプロジェクトは、コンピュータービジョンと機械学習を使用して従来のプロセスを自動化し、より効率的かつ正確にする方法の優れた例です。
従来の出席システムでは、出席をマークするプロセスは、多くの場合、手動で、時間がかかり、エラーが発生しやすくなります。機械学習とコンピュータービジョンの出現により、このプロセスを自動化し、より効率的かつ正確にするためのツールがあります。
Face認識出席システムは、これらのテクノロジーを活用して、シームレスで自動化された出席追跡ソリューションを提供するように設計されています。このシステムは、顔認識技術を使用して個人を特定し、出席者をマークします。このプロセスは、手動入力の必要性を排除し、エラーや不正エントリの可能性を減らします。
このシステムは、Python、Flask、OpenCV、およびFirebaseを使用して構築されています。 PythonとFlaskはバックエンド機能を提供し、OPENCVは顔の検出と認識に使用され、FireBaseはユーザー情報と出席記録を保存するためのデータベースとして使用されます。
このシステムには、教師向けの安全なログイン機能も含まれており、出席記録を表示できるようにします。この機能により、認定された個人のみが出席データにアクセスできるようになります。
あなたが出席追跡プロセスを合理化しようとしている大学であろうと、従業員のチェックインシステムを自動化しようとするビジネスであろうと、Face認識出席システムは堅牢で効率的なソリューションを提供します。
プロジェクトビデオについては、下の写真をクリックしてください

フェイス認識出席システムには、出席追跡を可能な限りシームレスで効率的にするように設計された多くの機能があります。
顔認識:このシステムは、高度な顔認識技術を使用して個人を特定し、出席者をマークします。これにより、手動入力の必要性がなくなり、出席追跡の正確性が保証されます。
リアルタイムの出席追跡:システムはリアルタイムで出席を追跡します。個人がシステムによって認識されるとすぐに、彼らの出席はデータベースでマークされ、更新されます。
安全な教師ログイン:システムには、教師向けの安全なログイン機能が含まれています。これにより、教師は出席記録を表示することができ、認定された個人のみがこのデータにアクセスできるようにします。
マルチクラスサポート:システムは複数のクラスをサポートします。学生は複数のクラスに登録でき、出席者は各クラスで個別に追跡されます。
データベース統合:システムは、クラウドベースの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 WebサイトからShape Predictorファイル 'Shape_predictor_68_face_landmarks.dat'をダウンロードする必要があることに注意してください。ここからファイルをダウンロードできます。ファイルを検出フォルダーに配置すると、以下のようにdatfile変数のFace_matching.pyファイルにファイルのフルパスを記述する必要があります。

FireBaseのセットアップ:システムは、データベース操作にFireBaseを使用します。 Firebaseプロジェクトを設定し、プロジェクトのFirebase構成を独自のものに置き換える必要があります。指示については、FireBaseセットアップガイドに従うことができます。



アプリケーションを実行します:最初にコマンドを以下に実行し、教師ログインのパスワードを入力します。
python generate_password_hash.py
次に、hasをconfigs/database.yamlファイルにコピーします。
すべてのセットアップが完了したら、端末で次のコマンドを実行してアプリケーションを実行できます。
python app.py
これにより、フラスコサーバーが開始され、アプリケーションにhttp://127.0.0.1:5000/でアクセスできます。
顔認識機能が機能するには、マシンに接続されたウェブカメラが必要であることに注意してください。ラップトップを使用している場合、内蔵のウェブカメラは正常に動作します。
顔認識出席システムを実行したら、次の手順に従って使用を開始できます。
ホームページ:Webブラウザを開き、 http://127.0.0.1:5000/に移動します。これにより、アプリケーションのホームページに表示されます。
新しい顔をアップロードする:新しい生徒をシステムに追加するには、[画像として新しい顔をアップロード]ボタンをクリックします。これにより、生徒の顔の画像をアップロードできます。画像は明確で、生徒の顔が表示されるはずです。また、「カメラから新しい顔をキャプチャする」ボタンをクリックして、カメラから画像をキャプチャできます。
学生情報の追加:画像をアップロードした後、学生の情報を入力できるページにリダイレクトされます。これには、生徒の名前、電子メール、ユーザータイプ(生徒または教師)、登録されているクラス、パスワードが含まれます。すべての情報を入力したら、[送信]ボタンをクリックします。
顔の認識:ホームページに戻ると、[顔の認識]ボタンをクリックできます。これにより、顔認識プロセスが開始されます。システムは、ウェブカメラの前の顔をデータベースの顔と一致させようとします。
クラスの選択:一致が見つかった場合、クラスを選択できるページにリダイレクトされます。選択したクラスの出席はデータベースで更新されます。
教師のログイン:あなたが教師である場合、ホームページの「教師ログイン」ボタンをクリックして出席者を表示できます。パスワードを入力するように求められます。正しいパスワードが入力されると、出席ページにリダイレクトされ、生徒のリストと出席者のリストが表示されます。
フェイス認識機能にはウェブカメラが必要であることを忘れないでください。ラップトップを使用している場合、内蔵のウェブカメラは正常に動作します。デスクトップを使用している場合は、ウェブカメラをマシンに接続する必要があります。
顔認識出席システムは、いくつかのPythonライブラリに依存して正しく機能します。主な依存関係のリストは次のとおりです。
フラスコ:軽量のWebアプリケーションフレームワーク。アプリケーションのWebサーバー側を処理するために使用されます。
OPENCV :プログラミング機能のライブラリは、主にリアルタイムのコンピュータービジョンを目的としています。ウェブカメラから画像をキャプチャし、顔検出を実行するために使用されます。
FireBase管理者:FireBaseサービスと対話するためのライブラリ。 FireBaseのリアルタイムデータベースとFireBaseストレージと対話するために使用されます。
Werkzeug :包括的なWSGI Webアプリケーションライブラリ。 Flaskのファイルアップロードを処理するために使用されます。
枕: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になります)。
ユーザーインターフェイスの改善:より魅力的なユーザーエクスペリエンスを提供するために、インターフェイスの審美的な魅力を強化することを目指しています。
データベースの画像の追加:現在、キャプチャされるとすぐに画像がデータベースに追加されます。対応する情報が入力された後に画像がデータベースにのみ追加されるように、このプロセスを変更する予定です。
データベースの最適化:データベース操作を最適化して、1回だけ呼び出すことでプロセスを高速化することを目指しています。
セキュリティの強化:データ処理とユーザー認証のためのより安全な方法を実装する予定です。
学生のログイン:将来的には、生徒がパスワードを使用してシステムにログインできるようにする予定です。
教師データベース:教師向けの別のデータベースを作成することを目指しています。 「ティーチャーログイン」ボタンが押されると、ユーザー名とパスワードが要求されます。
教師ビュー:ログインすると、教師は教えるクラスに基づいて生徒の出席を見ることができます。
展開:現在、システムはローカルで実行するように設計されています。将来的には、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 :ユーザーが登録されているプログラムのリスト(学生向け)およびその学生の出席数これは、データベースの構造の単純化されたビューです。また、生徒の画像をFirebaseストレージに保存しました。画像は静的/画像という名前のフォルダーに保存され、画像の名前は学生のIDです。
これはプロジェクトの重要な部分であり、いくつかのステップが含まれます。

顔の認識アルゴリズムを研究する:
フェイス認識システムを実装します。
Firebaseデータベースとフェイス認識システムを統合します。