
Sistem ini memungkinkan pengguna untuk mengunggah gambar mereka ke database, yang kemudian digunakan untuk mengenali wajah mereka selama pemeriksaan kehadiran. Wajah yang diakui dicocokkan dengan database, dan kehadiran diperbarui secara real-time. Sistem ini juga mencakup fitur login yang aman bagi para guru untuk melihat catatan kehadiran.
Proyek ini adalah contoh yang sangat baik tentang bagaimana visi komputer dan pembelajaran mesin dapat digunakan untuk mengotomatisasi proses tradisional, membuatnya lebih efisien dan akurat.
Dalam sistem kehadiran tradisional, proses menandai kehadiran sering kali manual, memakan waktu, dan rentan terhadap kesalahan. Dengan munculnya pembelajaran mesin dan visi komputer, kami sekarang memiliki alat untuk mengotomatiskan proses ini dan membuatnya lebih efisien dan akurat.
Sistem kehadiran pengenalan wajah kami dirancang untuk memanfaatkan teknologi ini untuk memberikan solusi pelacakan kehadiran yang mulus dan otomatis. Sistem ini menggunakan teknologi pengenalan wajah untuk mengidentifikasi individu dan menandai kehadiran mereka. Proses ini menghilangkan kebutuhan untuk masuk manual dan mengurangi kemungkinan kesalahan atau entri penipuan.
Sistem ini dibangun menggunakan Python, Flask, Opencv, dan Firebase. Python dan Flask menyediakan fungsionalitas backend, OpenCV digunakan untuk deteksi dan pengakuan wajah, dan firebase digunakan sebagai database untuk menyimpan informasi pengguna dan catatan kehadiran.
Sistem ini juga mencakup fitur login yang aman untuk guru, memungkinkan mereka untuk melihat catatan kehadiran. Fitur ini memastikan bahwa hanya individu yang berwenang yang memiliki akses ke data kehadiran.
Apakah Anda seorang universitas yang ingin merampingkan proses pelacakan kehadiran Anda atau bisnis yang ingin mengotomatisasi sistem check-in karyawan Anda, sistem kehadiran pengakuan wajah kami memberikan solusi yang kuat dan efisien.
Silakan klik gambar di bawah ini untuk video proyek

Sistem kehadiran pengenalan wajah hadir dengan sejumlah fitur yang dirancang untuk membuat pelacakan kehadiran seusun dan seefisien mungkin:
Pengenalan Wajah : Sistem menggunakan teknologi pengenalan wajah canggih untuk mengidentifikasi individu dan menandai kehadiran mereka. Ini menghilangkan kebutuhan untuk masuk manual dan memastikan akurasi yang hadir dalam pelacakan kehadiran.
Pelacakan kehadiran waktu nyata : Sistem melacak kehadiran secara real-time. Segera setelah seorang individu diakui oleh sistem, kehadiran mereka ditandai dan diperbarui dalam database.
Login Guru Aman : Sistem ini mencakup fitur login yang aman untuk guru. Ini memungkinkan guru untuk melihat catatan kehadiran dan memastikan bahwa hanya orang yang berwenang yang memiliki akses ke data ini.
Dukungan Multi-Kelas : Sistem mendukung banyak kelas. Siswa dapat terdaftar di berbagai kelas, dan kehadiran mereka dilacak secara terpisah untuk setiap kelas.
Integrasi Basis Data : Sistem ini terintegrasi dengan Firebase, database NoSQL berbasis cloud. Ini memungkinkan penyimpanan dan pengambilan informasi pengguna dan catatan kehadiran yang efisien.
Dukungan webcam : Sistem mendukung input webcam untuk pengenalan wajah. Ini membuatnya mudah diatur dan digunakan dalam berbagai pengaturan.
Antarmuka yang ramah pengguna : Sistem ini memiliki antarmuka yang ramah pengguna, memudahkan pengguna untuk menavigasi dan menggunakan sistem.
Open Source : Sistem ini open source. Pengembang dipersilakan untuk berkontribusi dan membantu meningkatkan sistem.





Untuk mendapatkan sistem kehadiran pengenalan wajah dan berjalan di mesin lokal Anda, ikuti langkah -langkah ini:
Kloning repositori : Pertama, klon repositori ke mesin lokal Anda. Anda dapat melakukan ini dengan menjalankan perintah berikut di terminal Anda:
git clone https://github.com/turhancan97/Intelligent-Face-Recognition-Attendance-System.git
Buat lingkungan virtual dan aktifkan. Anda dapat melakukan ini dengan menjalankan perintah berikut di terminal Anda:
Lingkungan Python
python3.8 -m venv your_env_name
source your_env_name/bin/activate
atau
lingkungan conda
conda create -n your_env_name python=3.8
conda activate your_env_name
Ini akan menciptakan lingkungan virtual dan mengaktifkannya. Semua dependensi akan dipasang di lingkungan virtual ini.
Instal Dependencies : Navigasi ke direktori proyek yang dikloning dan instal dependensi yang diperlukan dengan menjalankan:
pip install -r requirements.txt
Perintah ini akan menginstal semua pustaka dan paket yang diperlukan yang tercantum dalam file requirements.txt .
Harap dicatat bahwa Anda perlu mengunduh file prediktor bentuk 'shape_predictor_68_face_landmarks.dat' dari situs web dlib. Anda dapat mengunduh file dari sini. Anda dapat memasukkan file di folder deteksi dan Anda perlu menulis jalur lengkap file di file face_matching.py untuk variabel datfile seperti di bawah ini.

Mengatur Firebase : Sistem menggunakan Firebase untuk operasi basis data. Anda perlu mengatur proyek Firebase dan mengganti konfigurasi Firebase di proyek dengan milik Anda. Anda dapat mengikuti panduan pengaturan Firebase untuk instruksi.



Jalankan aplikasi : Pertama jalankan perintah di bawah ini dan masukkan kata sandi untuk login guru.
python generate_password_hash.py
Kemudian salin file Configs/Database.YAML ke bagian ENTER-TEACHER-LOGIN-HASH.
Setelah semua pengaturan selesai, Anda dapat menjalankan aplikasi dengan mengeksekusi perintah berikut di terminal:
python app.py
Ini akan memulai server Flask dan aplikasi akan dapat diakses di http://127.0.0.1:5000/ .
Harap dicatat bahwa Anda memerlukan webcam yang terhubung ke mesin Anda agar fitur pengenalan wajah berfungsi. Jika Anda menggunakan laptop, webcam bawaan akan berfungsi dengan baik.
Setelah Anda menjalankan sistem kehadiran pengenalan wajah, Anda dapat mulai menggunakannya dengan mengikuti langkah -langkah ini:
Halaman Beranda : Buka browser web Anda dan navigasikan ke http://127.0.0.1:5000/ . Ini akan membawa Anda ke halaman beranda aplikasi.
Unggah wajah baru : Untuk menambahkan siswa baru ke sistem, klik tombol "Unggah wajah baru sebagai gambar". Ini akan memungkinkan Anda untuk mengunggah gambar wajah siswa. Gambar harus jelas dan wajah siswa harus terlihat. Juga, Anda dapat menangkap gambar dari kamera dengan mengklik tombol "Tangkap Wajah Baru Dari Kamera".
Tambahkan Informasi Siswa : Setelah mengunggah gambar, Anda akan diarahkan ke halaman tempat Anda dapat memasukkan informasi siswa. Ini termasuk nama siswa, email, jenis pengguna (siswa atau guru), kelas yang mereka daftarkan, dan kata sandi. Setelah Anda memasukkan semua informasi, klik tombol "Kirim".
Pengenalan Wajah : Kembali di halaman beranda, Anda dapat mengklik tombol "ACEVER FACE". Ini akan memulai proses pengenalan wajah. Sistem akan mencoba mencocokkan wajah di depan webcam dengan wajah di database.
Pilihan kelas : Jika kecocokan ditemukan, Anda akan diarahkan ke halaman tempat Anda dapat memilih kelas. Kehadiran untuk kelas yang dipilih akan diperbarui dalam database.
Login Guru : Jika Anda seorang guru, Anda dapat melihat kehadiran dengan mengklik tombol "Guru Login" di halaman beranda. Anda akan diminta untuk memasukkan kata sandi. Setelah kata sandi yang benar dimasukkan, Anda akan dialihkan ke halaman kehadiran di mana Anda dapat melihat daftar siswa dan kehadiran mereka.
Ingat, fitur pengenalan wajah membutuhkan webcam. Jika Anda menggunakan laptop, webcam bawaan akan berfungsi dengan baik. Jika Anda menggunakan desktop, Anda harus menghubungkan webcam ke mesin Anda.
Sistem kehadiran pengenalan wajah bergantung pada beberapa perpustakaan Python agar berfungsi dengan benar. Berikut adalah daftar dependensi utama:
Flask : Kerangka kerja aplikasi web yang ringan. Ini digunakan untuk menangani sisi server web aplikasi.
OpenCV : Perpustakaan fungsi pemrograman terutama ditujukan untuk visi komputer real-time. Ini digunakan untuk menangkap gambar dari webcam dan melakukan deteksi wajah.
Firebase Admin : Perpustakaan untuk berinteraksi dengan layanan Firebase. Ini digunakan untuk berinteraksi dengan database realtime firebase dan penyimpanan firebase.
Werkzeug : Perpustakaan Aplikasi Web WSGI yang komprehensif. Ini digunakan untuk menangani unggahan file dalam flask.
Bantal : Perpustakaan Pencitraan Python menambahkan kemampuan pemrosesan gambar ke penerjemah Python Anda.
Numpy : Perpustakaan untuk bahasa pemrograman Python, menambahkan dukungan untuk array dan matriks multi-dimensi yang besar, bersama dengan koleksi besar fungsi matematika tingkat tinggi untuk beroperasi pada array ini.
Untuk menginstal dependensi ini, Anda dapat menggunakan PIP, manajer paket untuk Python. Cukup jalankan perintah berikut di terminal Anda:
pip install -r requirements.txt Ini akan menginstal semua paket yang diperlukan. Pastikan Anda berada di direktori yang benar saat Anda menjalankan perintah ini (direktori harus berisi file requirements.txt ).
Kontribusi untuk sistem kehadiran pengakuan wajah sangat disambut! Jika Anda memiliki permintaan fitur, laporan bug, atau proposal untuk refactoring kode, jangan ragu untuk membuka masalah atau membuat permintaan tarik.
Berikut adalah beberapa cara Anda dapat berkontribusi:
Meningkatkan UI/UX : Antarmuka saat ini cukup mendasar. Jika Anda memiliki pengalaman dengan pengembangan front-end dan memiliki beberapa ide tentang cara meningkatkan antarmuka pengguna atau pengalaman pengguna, kontribusi Anda akan sangat dihargai.
Menambahkan fitur baru : Jika Anda memiliki ide untuk fitur baru yang cocok dengan proyek ini, jangan ragu untuk menyarankannya dengan membuka masalah. Jika Anda ingin menerapkannya sendiri, bahkan lebih baik! Buka permintaan tarik dengan perubahan Anda dan kami akan memeriksanya.
Pelaporan Bug : Jika Anda menemukan bug apa pun saat menggunakan sistem, silakan laporkan dengan membuka masalah. Sertakan sebanyak mungkin informasi tentang bug dan keadaan di mana itu terjadi.
Kode refactoring : Seperti halnya proyek perangkat lunak apa pun, selalu ada ruang untuk perbaikan dalam basis kode. Jika Anda melihat kesempatan untuk refactor beberapa kode untuk membuatnya lebih bersih, lebih efisien, atau lebih kuat, kami akan dengan senang hati meninjau proposal Anda.
Sebelum berkontribusi, pastikan untuk memeriksa masalah yang ada dan menarik permintaan untuk menghindari upaya duplikasi. Juga, ketika Anda membuka permintaan tarik, pastikan untuk menyertakan deskripsi yang jelas dan terperinci tentang perubahan yang telah Anda buat.
Terima kasih atas minat Anda untuk berkontribusi pada sistem kehadiran pengakuan wajah!
Ada beberapa area di mana sistem dapat ditingkatkan atau diperluas di masa depan:
Penugasan ID Siswa : Saat ini, ID siswa ditugaskan sebagai satu lebih dari jumlah total gambar dalam database. Di masa depan, kami berencana untuk mengoptimalkan proses ini dengan menetapkan ID siswa yang hilang (misalnya, jika ID 1,2,3,4, [], 6,7,8, ID gambar baru akan 5).
Peningkatan Antarmuka Pengguna : Kami bertujuan untuk meningkatkan daya tarik estetika antarmuka untuk memberikan pengalaman pengguna yang lebih menarik.
Penambahan Gambar Database : Sampai sekarang, gambar ditambahkan ke database segera setelah ditangkap. Kami berencana untuk memodifikasi proses ini sehingga gambar hanya ditambahkan ke database setelah informasi yang sesuai dimasukkan.
Optimalisasi Basis Data : Kami bertujuan untuk mengoptimalkan operasi basis data untuk mempercepat proses dengan menghubungi mereka hanya sekali.
Peningkatan Keamanan : Kami berencana untuk mengimplementasikan metode yang lebih aman untuk penanganan data dan otentikasi pengguna.
Login Siswa : Di masa depan, kami berencana untuk mengizinkan siswa masuk ke sistem menggunakan kata sandi mereka.
Database Guru : Kami bertujuan untuk membuat database terpisah untuk guru. Ketika tombol 'Guru Login' ditekan, nama pengguna dan kata sandi akan diminta.
Pandangan Guru : Setelah masuk, guru akan dapat melihat kehadiran siswa berdasarkan kelas yang mereka ajarkan.
Penyebaran : Saat ini, sistem ini dirancang untuk berjalan secara lokal. Di masa depan, kami berencana untuk menggunakan sistem pada platform seperti Heroku, yang akan membuatnya dapat diakses dari mana saja dan bukan hanya pada mesin lokal.
Penanganan kesalahan yang ditingkatkan dan umpan balik pengguna : Sementara sistem saat ini menangani kesalahan dan memberikan umpan balik kepada pengguna, aspek-aspek ini dapat ditingkatkan untuk membuat sistem lebih kuat dan ramah pengguna.
Pembaruan waktu-nyata : Saat ini, data kehadiran diperbarui ketika siswa masuk. Di masa depan, kami dapat menerapkan pembaruan waktu-nyata, sehingga data kehadiran diperbarui secara instan segera setelah wajah siswa diakui.
Integrasi dengan sistem lain : Sistem ini dapat diintegrasikan dengan sistem lain yang digunakan dalam lembaga pendidikan, seperti sistem manajemen pembelajaran atau sistem informasi siswa. Ini akan memungkinkan pengalaman yang lebih mulus bagi siswa dan guru.
Fitur tambahan : Ada banyak fitur tambahan yang dapat ditambahkan ke sistem, seperti dukungan untuk beberapa kamera, pengakuan beberapa wajah sekaligus, atau kemampuan untuk menangani kondisi pencahayaan yang berbeda.
Ini hanya beberapa ide untuk perbaikan di masa depan. Kami selalu terbuka untuk ide dan saran baru, jadi silakan berkontribusi!
Proyek ini dilisensikan di bawah lisensi MIT. Ini berarti Anda bebas menggunakan, memodifikasi, dan mendistribusikan proyek berdasarkan ketentuan lisensi ini. Silakan lihat file lisensi untuk lebih jelasnya.
Harap dicatat bahwa proyek ini disediakan "sebagaimana adanya" tanpa jaminan apa pun. Penulis tidak bertanggung jawab atas kerusakan atau masalah yang mungkin timbul dari menggunakan proyek. Selalu periksa sendiri kode sebelum menggunakannya di lingkungan produksi.
Berikut adalah tampilan tingkat tinggi dari komponen sistem dan interaksinya:

1. Sistem Pengenalan Wajah: Ini adalah inti dari proyek Anda. Ini akan menangkap gambar atau bingkai video, mendeteksi wajah, fitur ekstrak, dan wajah yang cocok. Sistem ini akan dikembangkan menggunakan Python dan OpenCV.
2. Antarmuka Pengguna: Ini adalah bagian dari sistem yang akan berinteraksi dengan pengguna (siswa dan instruktur). Ini akan menampilkan informasi dari database Firebase dan mengirim input pengguna ke database. Antarmuka akan dikembangkan sebagai aplikasi web menggunakan HTML, CSS, dan JavaScript.
3. Firebase Database: Di sinilah semua data yang diperlukan akan disimpan. Basis data akan menyimpan informasi siswa, catatan kehadiran, dan data lain yang diperlukan. Sistem pengenalan wajah dan antarmuka pengguna akan berinteraksi dengan database untuk menyimpan dan mengambil data.
Interaksi:
Sistem pengenalan wajah akan menangkap gambar atau bingkai video dari kamera pengguna, mendeteksi wajah, fitur ekstrak, dan wajah yang cocok. Ketika sebuah wajah dicocokkan, sistem akan mengirim ID siswa dan tanggal dan waktu saat ini ke database Firebase untuk merekam kehadiran.
Antarmuka pengguna akan menampilkan catatan kehadiran dari database Firebase. Ketika seorang siswa atau instruktur masuk, antarmuka akan mengirim ID mereka ke database Firebase untuk mengambil catatan kehadiran mereka. Antarmuka juga akan menyediakan opsi bagi siswa untuk mendaftar kelas dan bagi instruktur untuk membuat kelas, dan tindakan ini juga akan melibatkan pengiriman data ke database Firebase.
Database Firebase akan menyimpan semua data untuk sistem. Ketika menerima data dari sistem pengenalan wajah atau antarmuka pengguna, ia akan memperbarui catatan yang relevan. Ketika menerima permintaan untuk data dari antarmuka pengguna, ia akan mengambil catatan yang diminta dan mengirimkannya ke antarmuka.
Ini adalah pandangan yang disederhanakan dari arsitektur sistem dan interaksi antara komponen. Bergantung pada persyaratan spesifik proyek Anda, Anda mungkin perlu menambahkan lebih banyak komponen atau interaksi. Misalnya, Anda mungkin perlu menambahkan komponen untuk menangani otentikasi pengguna jika Anda ingin memastikan bahwa hanya siswa dan instruktur yang terdaftar yang dapat mengakses sistem.docs/images/database_design.png
Mari sekarang mendesain dan menggambar skema basis data untuk Firebase. Ini termasuk mendefinisikan data yang akan disimpan (misalnya, informasi siswa, catatan kehadiran, dll.) Dan bagaimana data ini akan disusun dan terkait.

Koleksi Pengguna: Koleksi ini akan menyimpan informasi tentang semua pengguna, termasuk siswa dan instruktur. Setiap pengguna akan memiliki ID yang unik, dan data yang disimpan untuk setiap pengguna mungkin termasuk:
userID : Pengidentifikasi unik untuk pengguna.name : Nama lengkap pengguna.email : Alamat email pengguna.embeddings : embeddings wajah penggunauserType : Jenis pengguna (siswa atau instruktur).password : Kata sandi pengguna (disimpan dengan aman).classes : Daftar program di mana pengguna terdaftar (untuk siswa) dan jumlah kehadiran siswa ituIni adalah pandangan yang disederhanakan dari struktur basis data kami. Kami juga menyimpan gambar siswa di penyimpanan firebase. Gambar disimpan dalam folder bernama statis/gambar dan nama gambar adalah ID siswa.
Ini adalah bagian penting dari proyek Anda dan melibatkan beberapa langkah:

Algoritma pengenalan wajah penelitian:
Menerapkan sistem pengenalan wajah:
Mengintegrasikan sistem pengenalan wajah dengan basis data firebase: