An attendance tracking application with facial recognition.
Requirement
- I am using npm. 2.Download NodeJS
Step 1: Download the source code open CMD and type "git clone https://github.com/lisha19/Face-Recognition.git".
- Open CMD in VSCode, change directory to "client" folder and install the dependency [command: cd client && npm i]
- Open another terminal, change directory to "server" folder and install the dependency [command: cd server && npm i]
- Go to https://www.mongodb.com/try to register a free-tier account.
- Create a project named "Attendlytical" and create a cluster named "Attendlytical-Cluster".
- Choose the nearest region.
- Adding IP whitelist "0.0.0.0" to allow all network access.
- Go to https://cloudinary.com/users/register/free to register a free-tier account.
- You will get an api key and app secret.
- In tab "Media Library", create folder named "Attendlytical".
- Inside folder "Attendlytical", create another two folders named "ProfilePicture" and "FaceGallery".
- Click Setting icon on top right.
- Under tab "Upload", scroll down until you see "Upload presets".
- Click "Add upload preset", set Upload preset name to "attendlytical_facegallery" and folder set to "Attendlytical/FaceGallery".
- Leave the others as default and click "Save".
- Again, click "Add upload preset", set Upload preset name to "attendlytical_profilepicture" and folder set to "Attendlytical/ProfilePicture".
- Leave the others as default and click "Save".
- Go to GCP console: https://console.cloud.google.com/apis.
- Create an OAuth credential for google login.
- Under tab "Credentials", click "Create Credential" and choose "OAuth client ID".
- Choose the application type "Web Application".
- Name the OAuth client name "Google Login".
- Add the javascript origin: http://localhost:3000, https://attendlytical.netlify.app
- Add the redirect uri: https://developers.google.com/oauthplayground.
- Click "Save".
- Create an OAuth credential for email sending.
- Under tab "Credentials", click "Create Credential" and choose "OAuth client ID".
- Choose the application type "Web Application".
- Name the OAuth client name "Mail".
- Add the javascript origin: http://localhost:4000, https://attendlytical.netlify.app
- Add the redirect uri: https://developers.google.com/oauthplayground.
- Click "Save".
- Under tab "OAuth Consent Screen", enter the required info (app name, app logo, app uri, privacy policy, etc).
- Inside the "server" folder, create a file named ".env" used to save the credential data of database, API and so on.
- Inside ".env" file, create 10 variables named "MONGO_URI", "SECRET_KEY", "CLOUDINARY_NAME", "CLOUDINARY_API_KEY", "CLOUDINARY_API_SECRET", "GOOGLE_OAUTH_USERNAME", "GOOGLE_OAUTH_CLIENT_ID", "GOOGLE_OAUTH_CLIENT_SECRET", "GOOGLE_OAUTH_REFRESH_TOKEN" and "GOOGLE_OAUTH_REDIRECT_URI".
- Go to MongoDB Cloud, select "connect" and choose "Node.js" to get the connection string. Set the MONGO_URI respectively.
- Set your SECRET_KEY to any random string (e.g: uHRQzuVUcfwT9G21).
- Go to Cloudinary, copy the app name, id and secret, assigned to CLOUDINARY_NAME, CLOUDINARY_API_KEY, CLOUDINARY_API_SECRET.
- Assign GOOGLE_OAUTH_USERNAME to your gmail (e.g: [email protected])
- Go to GCP console, choose the "Attendlytical" project.
- Under "Credentials" tab, select "mail" OAuth client, copy the app id and secret, assigned to "GOOGLE_OAUTH_CLIENT_ID" and "GOOGLE_OAUTH_CLIENT_SECRET".
- Go to https://developers.google.com/oauthplayground, enter scope: "https://mail.google.com".
- Before submiting, click the setting icon on the top right.
- Click "Use your own OAuth credentials"
- Enter "Client ID" and "Client Secret" of "mail" OAuth client.
- Submit the API scope.
- You will get an authorization code, exchange it with access token and refresh token.
- Assign the refresh token to GOOGLE_OAUTH_REFRESH_TOKEN.
- Assign GOOGLE_OAUTH_REDIRECT_URI to https://developers.google.com/oauthplayground.
- The face api model have been put in the "client/public/models" folder.
Instructions For Professor:
- Register here.
- Create a course.
- Give the course unique ID.
- Students has to send the request to register, accept the registration.
- You do not need upload picture of students, It will be done by students.
- After all student registration, select a course show below and take the attendance.
- You can see how many face photo of all the registered students have uploaded.
- Ensure that the students upload their face photo, otherwise there is no facial data of that student for reference.
- Only those enroll in the particular course will be counted into dataset for facial classification.
- Select date , time and camera inside attendance room.
- Wait for the model to be loaded.
- Set the distance as you wish.
- Submit the attendance form if finished.
- Visualize the attendance data in "Attendance History", or you can enter a particular course and click "View Attendance History".
- Check Attendance
- Thank You.
Instructions For Student:
- Register an account.
- Enroll into a course.
- Wait for system loaded.
- Upload your face photo in "Face Gallery", at least your two photos must be uploaded.
- Wait for all models being loaded.
- The system will perform face detection, ensuring only a single face exist and rejecting photo with empty face or multiple faces.
- Photos will save in image storage.
- When your lecturer take the attendance of a particular course, all your uploaded facial data will be counted into the dataset for facial comparison.
- You can Visualize your attendance data by clicking on "Attendance History" , or you can enter a particular course and click "View Attendance History"
- Make sure the 10 env variables have been assigned in ".env" file.
- Install the "nodemon" which can restart the server script automatically if changes are detected.
- Open CMD, execute command "npm i -g nodemon" to install nodemon globally.
- Take a look at "server/package.json".
- Open CMD under directory "server", type "npm run dev".
- The server is running on http://localhost:4000.
- The client script is built using ReactJS, through CRA command.
- Open CMD under directory "client", type "npm start".
- The client is running on http://localhost:3000.