AI-Powered Exam Proctoring System — Real-time cheating detection using computer vision and pose estimation for university examination halls.
- 🎯 Real-Time Pose Analysis — YOLOv8-Pose based behavioral detection
- 👁️ Multi-Cue Detection — Head gaze, body lean, hand signals, shoulder asymmetry
- 📊 Adaptive Row Thresholds — Front/Middle/Back row detection with per-student calibration
- 🔒 Locked Detection Thresholds — All 30+ thresholds frozen via immutable dataclass
- 🎥 CCTV & Webcam Support — Works with IP cameras (RTSP) and video files
- 📋 Evidence Management — Auto-captures violation clips and screenshots
- 🪑 Seating Plan Integration — CSV-based seat-to-student mapping with attendance
- 📈 Detailed Reports — Per-student violation reports with confidence scores
- 🤝 Interaction Detection — Detects coordinated cheating between neighbors
ProctorVision/
├── main.py # Entry point
├── run.bat # Windows launcher (uses bundled Python)
├── ProctorVision.vbs # Silent launcher (no console window)
├── src/
│ ├── config.py # LOCKED system configuration
│ ├── core/
│ │ ├── pose_analysis.py # 🔒 LOCKED detection engine (frozen thresholds)
│ │ ├── tracker.py # CentroidTracker for person persistence
│ │ ├── evidence_manager.py# Violation clip & screenshot capture
│ │ ├── gaze_tracker.py # MediaPipe gaze estimation (disabled)
│ │ ├── face_recognition_manager.py # Face recognition (optional)
│ │ └── confusion_matrix.py# Accuracy evaluation tools
│ ├── gui/
│ │ ├── app.py # Main ProctorDashboard window
│ │ ├── theme.py # UI theme constants
│ │ ├── video_processor.py # Core video processing loop
│ │ └── screens/ # Dashboard, Process, Reports, Settings
│ ├── utils/
│ │ └── seating.py # Seating plan utilities
│ └── tools/
│ └── video_roi_selector.py # ROI selection tool
├── assets/
│ └── logo.png # Application logo
├── data/
│ ├── seating_map.json # Seat coordinate definitions
│ ├── seating_plan.csv # Seat-to-student mapping
│ └── student_database.csv # Student database
└── models/ # YOLOv8 models (download separately)
- Python 3.11+
- Windows 10/11
- Clone the repository:
git clone https://github.com/Manjoooooo/ProctorVision.git
cd ProctorVision- Install dependencies:
pip install -r requirements.txt-
Download YOLOv8 Pose models (place in
models/folder):yolov8n-pose.pt(Fast — low-end hardware)yolov8s-pose.pt(Balanced — recommended)yolov8x-pose.pt(Accurate — powerful GPU)
-
Run:
python main.pyOr use the Windows launcher: run.bat
All detection thresholds are consolidated in a frozen dataclass in src/core/pose_analysis.py. They cannot be modified at runtime — any attempt raises FrozenInstanceError.
| Category | Key Thresholds |
|---|---|
| Classification | Suspicious: 0.38, Cheating: 0.60 |
| Head Turn | Moderate: 1.35, Extreme: 1.55 |
| Body Lean | Front: 0.42, Middle: 0.50, Back: 0.58 |
| Hand Signal | Front: 0.35, Middle: 0.42, Back: 0.50 |
| Temporal | 3-frame gate, 0.5s violation duration |
- Ahmed Muarij Siddiqui (22FA-062-SE)
- Fatima Amin Siddiqui (22FA-046-SE)
- Nabiha Fatima (22FA-008-SE)
- Abdul Raahim Sheikh (22FA-039-SE)
- Dr. Muhammad Wasim
- Department of Software Engineering, UIT University
This project is developed as a Final Year Project (FYP) for academic purposes.