Spaces:
Runtime error
Runtime error
File size: 6,326 Bytes
e65b3b4 f7db860 e65b3b4 e8a0692 e65b3b4 f7db860 e65b3b4 f7db860 e65b3b4 f7db860 e65b3b4 f7db860 e65b3b4 f7db860 e65b3b4 deefd7f e65b3b4 f7db860 e65b3b4 f7db860 e65b3b4 f7db860 e65b3b4 f7db860 e65b3b4 f7db860 e65b3b4 f7db860 e65b3b4 72cf232 f7db860 e65b3b4 deefd7f e65b3b4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 |
# main.py
import os
import sys
from gradio_interface import GradioWebRTCInterface
from dotenv import load_dotenv
load_dotenv()
def check_opencv_installation():
"""Check if OpenCV is properly installed with required cascades"""
try:
import cv2
# Check for required cascade files
cascade_files = [
'haarcascade_frontalface_default.xml',
'haarcascade_eye.xml',
'haarcascade_smile.xml'
]
missing_cascades = []
for cascade in cascade_files:
cascade_path = cv2.data.haarcascades + cascade
if not os.path.exists(cascade_path):
missing_cascades.append(cascade)
if missing_cascades:
print(f"β Missing OpenCV cascade files: {missing_cascades}")
print("π‘ Please reinstall OpenCV: pip install opencv-python")
return False
print("β
OpenCV and required cascade files found!")
return True
except ImportError:
print("β OpenCV not found. Please install: pip install opencv-python")
return False
def check_optional_dependencies():
"""Check for optional dependencies and provide info"""
optional_deps = {
'mediapipe': 'Enhanced facial landmark detection',
'google.generativeai': 'AI-powered voice alerts',
'scipy': 'Advanced mathematical computations'
}
available = []
missing = []
for dep, description in optional_deps.items():
try:
__import__(dep)
available.append(f"β
{dep} - {description}")
except ImportError:
missing.append(f"βͺ {dep} - {description}")
if available:
print("π¦ Available optional features:")
for item in available:
print(f" {item}")
if missing:
print("π¦ Optional features (install for enhanced functionality):")
for item in missing:
print(f" {item}")
def main():
"""Main entry point"""
print("π Starting AI Driver Drowsiness Detection System...")
print("π§ Using OpenCV-based detection (no external model downloads required)")
if not check_opencv_installation():
sys.exit(1)
check_optional_dependencies()
print("\nπ All core requirements satisfied!")
# Create and launch interface
try:
interface_manager = GradioWebRTCInterface()
demo = interface_manager.create_interface()
print("π Launching Gradio interface...")
print("π± The interface will be available in your browser")
print("π A public link will be generated for sharing")
demo.launch(
server_name="0.0.0.0",
server_port=7860,
share=True,
show_error=True,
enable_queue=True,
max_threads=10,
favicon_path=None
)
except Exception as e:
print(f"β Error launching interface: {e}")
print("π‘ Try running: pip install --upgrade gradio")
sys.exit(1)
if __name__ == "__main__":
main()
# requirements.txt
"""
opencv-python>=4.5.0
gradio>=4.0.0
numpy>=1.21.0
scipy>=1.7.0
google-generativeai>=0.3.0
mediapipe>=0.10.0 # Optional for enhanced detection
"""
# README.md
"""
# π AI Driver Drowsiness Detection System
A real-time drowsiness detection system using computer vision and AI-powered alerts.
## β¨ Features
- **No External Downloads**: Uses OpenCV's built-in face detection models
- **Real-time Processing**: WebRTC streaming for low latency
- **Multi-modal Detection**: Eyes, mouth, and head pose analysis
- **AI Voice Alerts**: Contextual messages powered by Gemini AI
- **Adaptive System**: Graceful fallback without external dependencies
- **Easy Setup**: Simple pip install, no model downloads required
## π Quick Start
1. **Install dependencies:**
```bash
pip install opencv-python gradio numpy scipy google-generativeai
# Optional for enhanced detection:
pip install mediapipe
```
2. **Run the system:**
```bash
python main.py
```
3. **Open browser** and navigate to the provided URL
4. **Optional**: Enter Gemini API key for AI-powered voice alerts
## π§ How It Works
### Detection Methods
- **Primary**: MediaPipe Face Mesh (if available) for precise landmarks
- **Fallback**: OpenCV Haar Cascades for basic face/eye/mouth detection
- **Hybrid Approach**: Automatically selects best available method
### Drowsiness Indicators
- **Eye Aspect Ratio (EAR)**: Detects eye closure patterns
- **Mouth Aspect Ratio (MAR)**: Identifies yawning behavior
- **Head Pose**: Tracks head nodding and position
### Alert System
- **AI-Generated**: Contextual messages via Gemini
- **Audio Alerts**: Attention-grabbing beep patterns
- **Visual Feedback**: Real-time overlay on video stream
- **Smart Cooldown**: Prevents alert spam
## βοΈ Configuration
### Detection Thresholds
- **EAR Threshold**: 0.20 (adjustable for sensitivity)
- **MAR Threshold**: 0.8 (calibrated for yawn detection)
- **Head Nod**: 20Β° deviation threshold
- **Alert Cooldown**: 8 seconds between alerts
### Performance Optimization
- **Stream Rate**: 10 FPS processing (configurable)
- **Queue Management**: Prevents frame backlog
- **Multi-threading**: Separate processing pipeline
- **Graceful Degradation**: Maintains functionality with limited resources
## π‘οΈ Safety Notice
**This system is for demonstration and research purposes only.**
- Not a substitute for responsible driving practices
- Always pull over safely if feeling drowsy
- Use as supplementary tool alongside other safety measures
- Ensure proper camera setup and lighting
## π System Requirements
- **Python**: 3.7+
- **Camera**: Webcam or built-in camera
- **OS**: Windows, macOS, Linux
- **RAM**: 4GB+ recommended
- **CPU**: Multi-core recommended for real-time processing
## π Troubleshooting
- **No face detected**: Check lighting and camera position
- **Poor detection**: Ensure face is clearly visible and well-lit
- **High CPU usage**: Reduce stream rate or video resolution
- **Audio issues**: Check browser permissions and audio settings
## π License
MIT License - See LICENSE file for details
""" |