3.2 KiB
3.2 KiB
World-Class UI & Alert Management Improvements
Problems Fixed
1. Alert State Management ✅
Problem: Alerts stayed ACTIVE forever once triggered, even when conditions cleared.
Solution: Implemented temporal smoothing with alert persistence tracking:
- Alerts clear automatically when conditions stop
- Configurable persistence frames for each alert type
- Smooth transitions between states
2. UI Improvements for Chromium/Raspberry Pi ✅
Problem:
- Emojis not visible in Chromium
- Poor visual feedback
- Unprofessional appearance
Solution:
- Removed emojis, replaced with CSS-based indicators
- Professional color-coded alert system
- Modern card-based layout
- Better visual hierarchy
Technical Implementation
Alert Persistence System
# Track how long alerts have been inactive
self.alert_persistence = {
'Drowsiness': 0,
'Distraction': 0,
'Driver Absent': 0,
'Phone Detected': 0,
'No Seatbelt': 0,
}
# Frames to wait before clearing (temporal smoothing)
self.alert_clear_frames = {
'Drowsiness': 10, # ~0.3s at 30fps
'Distraction': 8,
'Driver Absent': 5, # Immediate
'Phone Detected': 5,
'No Seatbelt': 8,
}
Alert Clearing Logic
if triggered:
# Set alert active, reset counter
self.alert_states[alert] = True
self.alert_persistence[alert] = 0
else:
# Increment counter, clear if threshold reached
self.alert_persistence[alert] += 1
if self.alert_persistence[alert] >= threshold:
self.alert_states[alert] = False
UI Enhancements
CSS Styling
- Alert Active: Red border, light red background
- Alert Normal: Green border, light green background
- Status Badges: Color-coded pills (ACTIVE/Normal)
- Modern Cards: Clean, professional appearance
- Better Typography: Improved readability
Visual Indicators
- ACTIVE: Red badge with white text
- Normal: Green badge with white text
- No Emojis: Pure CSS/HTML for Chromium compatibility
Performance Optimizations
- Optimized YOLO inference (contiguous arrays)
- Faster image resizing (INTER_LINEAR)
- Log management (limit to 10 entries)
- Efficient frame processing
Benefits
User Experience
✅ Real-time feedback - Alerts clear when conditions stop ✅ Professional appearance - Modern, clean UI ✅ Better visibility - Color-coded status indicators ✅ Smooth transitions - No jarring state changes
Performance
✅ Faster inference - Optimized YOLO processing ✅ Lower memory - Limited log entries ✅ Better FPS - Improved frame processing
Reliability
✅ Accurate alerts - Temporal smoothing prevents false positives ✅ Consistent behavior - Alerts clear predictably ✅ Cross-platform - Works on Chromium/Raspberry Pi
Example Behavior
Phone Detection
- Phone appears → Alert becomes ACTIVE (red)
- Phone removed → Counter starts
- After 5 frames (~0.17s) → Alert clears to Normal (green)
Drowsiness Detection
- Eyes close → Alert becomes ACTIVE
- Eyes open → Counter starts
- After 10 frames (~0.3s) → Alert clears to Normal
This prevents flickering while ensuring alerts clear when conditions stop!