File size: 4,290 Bytes
1c0c94d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# Comparative Analysis: AVIS vs. RoadX

This document provides a comprehensive, feature-by-feature comparison between **AVIS** (our system) and **RoadX** (the competitor project), analyzing their architectural choices, strengths, weaknesses, and model implementations.

---

## 1. High-Level Architecture & Scalability

| Feature | AVIS (Gridlock) | RoadX | Winner & Why |
| :--- | :--- | :--- | :--- |
| **System Design** | Modular Monolith (FastAPI + React) | Single-App Monolith (Flask) | **AVIS**. A decoupled frontend and backend is modern and scalable. RoadX relies on Flask HTML templates, which limits UI reactivity. |
| **Asynchronous Processing** | Dedicated Redis Queue + Background Workers | Python Background Threads | **AVIS**. Using Redis ensures heavy CV tasks don't block the API. RoadX's threading on a single Flask app will bottleneck and drop frames under heavy load. |
| **Data & Storage** | PostgreSQL + MinIO (S3-compatible) | SQLite + Local File System | **AVIS**. AVIS is built for cloud/production scale. RoadX is limited to a single server's disk space. |

## 2. Core Machine Learning & Logic

| Feature | AVIS (Gridlock) | RoadX | Winner & Why |
| :--- | :--- | :--- | :--- |
| **Verification & Accuracy** | Hybrid: CV + VLM (Gemini Flash) | Pure CV (YOLOv8 + ByteTrack) | **AVIS (for accuracy)**. RoadX relies entirely on geometric CV, which has high false-positive rates for edge cases. AVIS uses Gemini as a final judge, ensuring court-ready evidence. |
| **Video & RTSP Support** | ❌ Single Image Only | ✅ RTSP Streams & Video | **RoadX**. By using ByteTrack (assigning IDs to vehicles across frames), RoadX can easily detect temporal violations (Wrong-Way, Speeding) without needing a VLM. |
| **ALPR (Number Plates)** | `fast-alpr` (Generic) | Custom `Plate.pt` + EasyOCR | **RoadX**. RoadX trained a custom YOLO model specifically to find *Indian* plates, then runs OCR on the crop. This is vastly superior to generic out-of-the-box ALPR tools. |
| **Decision Logic** | Deterministic Evidence Graph | Imperative Python logic | **AVIS**. Building a node-based "Evidence Graph" is much more explainable in a court of law than nested `if/else` Python statements. |

## 3. Features & End-User Experience

| Feature | AVIS (Gridlock) | RoadX | Winner & Why |
| :--- | :--- | :--- | :--- |
| **User Interface** | Hardware-accelerated, dynamic React UI | Basic HTML/Bootstrap Flask templates | **AVIS**. The observability trace logs, empty-state hero, and modern theming in AVIS provide a vastly superior enterprise feel. |
| **End-to-End Enforcement** | Generates database records | PDF Challans + Email/WhatsApp | **RoadX**. RoadX completes the enforcement loop by actually generating a legal PDF and notifying the citizen. |
| **Access Control** | Single unified dashboard | Admin vs. Citizen Portal | **RoadX**. Separating the dashboard into a secure Admin police view and a public citizen ticket-checking view is highly practical. |

---

## Summary of Pros & Cons

### AVIS (Our System)
- **Pros**: Exceptionally scalable architecture (Redis, MinIO, Postgres). Highly accurate due to VLM (Gemini) fallback logic preventing hallucinations. Beautiful, observable, enterprise-grade React frontend.
- **Cons**: Lacks temporal tracking (video processing). Relies on generic ALPR which struggles with dirty/angled Indian plates. Incomplete enforcement loop (no PDFs or emails).

### RoadX (Competitor)
- **Pros**: Handles live RTSP video natively using ByteTrack. Excellent Indian license plate detection via custom YOLO weights. Generates real-world PDF challans and emails.
- **Cons**: Monolithic Flask app will choke on high load. Relies entirely on CV rules, meaning it will likely generate false-positive challans that a human/VLM would easily reject.

---

## How RoadX Handled Video (The "Secret")
You asked how they handle video: They use an algorithm called **ByteTrack**. 
Instead of just finding a car, ByteTrack assigns an ID to a car in Frame 1 (e.g., `Car #45`). In Frame 2, it finds `Car #45` again and draws a line between its old and new position. By tracking this trajectory over 20-30 frames, they can easily calculate if the car is moving in the wrong direction (Wrong-Way) or how fast it is moving, without needing complex AI reasoning.