File size: 11,531 Bytes
4ed7d03 | 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 | # NETRA - System Architecture
## ποΈ Application Architecture
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β FRONTEND β
β βββββββββββββ ββββββββββββββββ ββββββββββββββββββββββ β
β β Login/ β β Dashboard β β Live Camera / β β
β β Register β β β β Video Analysis β β
β βββββββ¬ββββββ ββββββββ¬ββββββββ βββββββββββ¬βββββββββββ β
β β β β β
β βββββββββββββββββ΄ββββββββββββββββββββββ β
β β β
β [HTTP/AJAX] β
β β β
ββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββ
β FLASK BACKEND β
β β β
β βββββββββββββββββββββββ΄ββββββββββββββββββββββββββ β
β β Flask Application (app.py) β β
β β ββββββββββββββββββββββββββββββββββββββββββββ β β
β β β Route Handlers β β β
β β β β’ /register β’ /login β’ /dashboard β β β
β β β β’ /live-camera β’ /video-analysis β β β
β β β β’ /camera_feed β’ /upload_video β β β
β β ββββββββββββββββββββββββββββββββββββββββββββ β β
β βββββββββββββββββ¬βββββββββββββββββββ¬βββββββββββββ β
β β β β
β ββββββββββββββ΄βββββββββ βββββ΄βββββββββββββββ β
β β Authentication β β Video Processor β β
β β β’ User Login β β β’ Frame Process β β
β β β’ Session Mgmt β β β’ Model Apply β β
β β β’ Password Hash β β β’ Alert Gen β β
β βββββββββββββββββββββββ βββββββββββ¬βββββββββ β
β β β
β ββββββββββββββββββββββββββββββββββββββ΄βββββββββ β
β β Model Manager β β
β β ββββββββββββββββ βββββββββββββββββββββββ β β
β β β YOLO Object β β Violence Detection β β β
β β β Detection β β CNN Model β β β
β β ββββββββββββββββ βββββββββββββββββββββββ β β
β β β β
β β ββββββββββββββββββββββββββββββββββββββββ β β
β β β Extensible Model Interface β β β
β β β (Add More Models Here) β β β
β β ββββββββββββββββββββββββββββββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββ
β DATA LAYER β
β β β
β ββββββββββββββββββββββ΄βββββββββββββββββββββββ β
β β SQLite Database (netra.db) β β
β β ββββββββββββββββ βββββββββββββββββββββββ β
β β β Users β β Analysis History ββ β
β β β β’ id β β β’ id ββ β
β β β β’ username β β β’ user_id ββ β
β β β β’ email β β β’ type ββ β
β β β β’ password β β β’ detections ββ β
β β β β’ created β β β’ alert_count ββ β
β β ββββββββββββββββ βββββββββββββββββββββββ β
β βββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββββββββββββββββββββββββββββββββββββββββββ β
β β File Storage (uploads/) β β
β β β’ Uploaded video files β β
β β β’ Temporary processing files β β
β ββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
## π Data Flow
### User Registration/Login Flow
```
User Input β Flask Route β Validate Data β Hash Password
β Store in DB β Create Session β Redirect to Dashboard
```
### Live Camera Flow
```
Camera β OpenCV Capture β Frame Extract β Model Manager
β YOLO Detection β Violence Detection β Annotate Frame
β Generate Alerts β Stream to Frontend β Display Results
```
### Video Analysis Flow
```
Upload Video β Save to Uploads/ β Extract Frames
β Process Each Frame β Collect Detections β Generate Report
β Save to History β Return Results β Display to User
```
## π Component Interactions
### Frontend β Backend
- **Authentication**: POST JSON β Flask validates β Return success/error
- **Video Stream**: GET request β Flask streams MJPEG β Browser displays
- **File Upload**: FormData POST β Flask saves β Processes β Returns JSON
- **Model List**: GET request β Flask queries ModelManager β Returns JSON
### Backend β Models
- **Model Loading**: App start β ModelManager loads all models
- **Frame Processing**: Frame β YOLO.detect() β Violence.predict()
- **Result Aggregation**: Combine all model outputs β Format alerts
### Backend β Database
- **User Operations**: Create, Read, Authenticate
- **History Logging**: Store analysis results for each session
- **Session Management**: Track logged-in users
## π Technology Stack
```
βββββββββββββββββββββββββββββββββββββββββββ
β Presentation Layer β
β β’ HTML5 β’ CSS3 β’ JavaScript (Vanilla) β
ββββββββββββββββββββ¬βββββββββββββββββββββββ
β
ββββββββββββββββββββ΄βββββββββββββββββββββββ
β Application Layer β
β β’ Flask 3.0 β’ Python 3.8+ β
β β’ Flask-SQLAlchemy β’ Werkzeug β
ββββββββββββββββββββ¬βββββββββββββββββββββββ
β
ββββββββββββββββββββ΄βββββββββββββββββββββββ
β AI Layer β
β β’ YOLOv8 (Ultralytics) β
β β’ TensorFlow/Keras β
β β’ OpenCV β
ββββββββββββββββββββ¬βββββββββββββββββββββββ
β
ββββββββββββββββββββ΄βββββββββββββββββββββββ
β Data Layer β
β β’ SQLite β’ File System β
βββββββββββββββββββββββββββββββββββββββββββ
```
## π― Design Patterns Used
1. **MVC Pattern**: Models (DB), Views (Templates), Controllers (Routes)
2. **Manager Pattern**: ModelManager handles all AI models
3. **Singleton**: Database connection
4. **Factory**: Model creation and loading
5. **Strategy**: Different detection strategies per model
## π Security Architecture
```
Request β Session Check β Authentication β Authorization
β Input Validation β Process β Sanitize Output
```
- Password hashing (Werkzeug)
- Session management (Flask)
- File upload validation
- Path sanitization
## π Deployment Architecture
```
Development:
Flask Dev Server β SQLite β Local Files
Production (Future):
Nginx β Gunicorn β Flask App β PostgreSQL
β S3/Cloud Storage
β Redis (Caching)
```
## π Scalability Considerations
Current: Single-threaded with threading support
Future paths:
- Multi-process workers (Gunicorn)
- Background job queue (Celery)
- Message broker (RabbitMQ/Redis)
- Load balancer
- Microservices architecture
---
**This architecture supports:**
β
Easy model integration
β
Horizontal scaling potential
β
Maintainable code structure
β
Security best practices
β
Future enhancements
```
|