The application follows a modular package structure organized as follows:
- FaceRecognitionApp Face Recognition App
- StudentManager Student Manager System
- AppConfig: Manages application configuration settings, including detection parameters and system preferences. All config is always stored and saved into app.properties
- AppLogger: Handles logging throughout the application.
- IConfigChangeListener: Interface for listening to configuration changes.
- Student: Represents student data entities with ID, name, and other attributes.
- Session: Session data, eg(CS102 G1 Week1)
- Roster: Roster data, eg(CS102 G1)
- config
- FaceCropSettingsPanel: UI panel for configuring face cropping settings.
- detection
- Face detection related UI components.
- homepage
- LoginPage: Main login interface for user authentication.
- MainDashboard: Primary dashboard after login.
- SettingsGUI: Settings and configuration interface.
- ReportsGUI: Reports history interface
- recognition
- CameraPanel: Displays camera feed and handles video processing.
- LiveRecognitionViewer: UI for live face recognition functionality.
- settings
- SettingsCenter: Central hub for managing different settings panels.
- WelcomeView: Welcome screen in settings.
- FaceData: Storing of FaceData of images
- FaceCandidate: A detected Face from a camera
- FaceImage: image and embedding
- DBConnection: Link to Database
- StudentRepositoryInstance: CRUD functionality for Student Database
- SessionRepositoryInstance: CRUD functionality for Session Database
- RosterRepositoryInstance: CRUD functionality for Roster Database
- the rest has relational CRUD functionality for cross-tables
- CSVGenerator: Generates CSV reports.
- ExcelGenerator: Generates Excel reports.
- PDFGenerator: Generates PDF reports.
- StudentData: Handles student data for reporting.
- ReportLog: Reporting Logging
- embedding
- FaceEmbeddingGenerator: Generates face embeddings for recognition.
- EmbeddingQualityAnalyzer: Analyzes quality of generated embeddings.
- recognition
- LiveRecognitionService: Core service for live face recognition.
- session
- SessionManager: Manages user sessions.
- student
- StudentManager: Manages student-related operations.
- ImageProcessor: Utility class for image processing operations.
- ColourTheme: Utility class for standardising colours
- Java Development Kit (JDK) installed
- OpenCV library files in
lib/directory - Windows environment (batch files provided)
- Ensure arcface.onnx is downloaded in data/resources (download link: https://huggingface.co/garavv/arcface-onnx)
-
Compile the Application:
- Run
Compile.bat(Windows) orCompile.sh(mac) to compile all Java source files. - This compiles the source from
src/directory tocompiled/directory.
- Run
-
Run the Application:
- Run
run.bat(Windows) orrun.sh(mac) to start the application. - This launches the login page interface. For Admin, username: 123, password: admin123 For TA, username: 456, password: TA123
- Run
- Ensure OpenCV DLL is loaded via
System.load(new File("lib/opencv_java480.dll").getAbsolutePath());in relevant classes. - VS Code settings should include referenced libraries in
.vscode/settings.json.
-
In .vscode/settings.json, in java.project.referencedLibraries, we call .jar no issue
-
In both all java files, we do:
System.load(new File("lib/opencv_java480.dll").getAbsolutePath());
Which is an indirect direct way to get the absolute path of the file.
Logs are generated in /logs Custom Configurations and further fine_tuning can be done by modifying app.properties file