Skip to content

About

Real-time mobile Edge AI for vehicle, person and license plate recognition using Flutter, OCR and on-device object detection.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RoadVision AI

RoadVision AI

Real-time Edge Computer Vision for Roads

On-device platform that turns an ordinary Android phone into a roadside perception unit — detecting and tracking vehicles and people, and reading license plates, in real time. The entire vision pipeline runs on the device, with no cloud in the loop and no connectivity required for perception.

Built to bring situational awareness to patrol vehicles and checkpoints — on the edge, live.

Project Status

A working Android application that detects, tracks and reads license plates in real time — fully on-device. Actively developed as a professional engineering showcase.


Flutter Dart Edge AI

Architecture Edge AI CI


Why RoadVision AI?

Bringing computer vision to the roadside is hard. A patrol vehicle or checkpoint needs to answer three questions continuously — what is around me, what is it, and have I seen it before? — often with no reliable connectivity and on affordable hardware. Cloud-based vision adds latency, cost, privacy exposure, and a hard dependency on the network exactly where it is weakest.

RoadVision AI runs the entire perception pipeline on the device: object detection, multi-object tracking with persistent IDs, and license-plate OCR — in real time, offline. It reads the scene like a human operator would, keeps a geolocated log of what it saw, and never sends the live video anywhere. The result is situational awareness with privacy by design.


Main Features

Feature What it delivers
On-device Object Detection Recognizes people, cars, motorcycles, trucks, buses and bicycles with a neural network running entirely on the phone.
Persistent Multi-object Tracking Assigns a stable id to each object across frames so the same vehicle is never counted twice — IoU association with a motion-aware fallback.
License-plate OCR Reads Brazilian Mercosul and legacy plates in real time, with character-level correction and fuzzy de-duplication.
Smooth, Real-time Pipeline Detection inference runs in a background isolate, keeping the UI fluid even on mid-range hardware.
Adjustable Overlay Toggle which categories are drawn on the camera to cut visual clutter — without stopping detection underneath.
Geolocated Capture & History Every plate is stamped with GPS coordinates and persisted locally, browsable and openable in Maps.
Vehicle Data Lookup Optional enrichment — make, model, color, year and theft alerts — via an external API.
Privacy by Design The live video never leaves the device; the only optional network call is the vehicle-data lookup.

Architecture

A clean, layered design where dependencies always point inward — the domain knows nothing about Flutter, the camera, or any external service. New detectors, trackers and data sources plug in by implementing a domain interface, without touching the core (Open/Closed).

   ┌─────────────────────────────────────────────────────┐
   │                 Presentation · MVVM                 │
   │       Camera View → ViewModel → Overlay painter      │
   └─────────────────────────────────────────────────────┘
                          │  depends on
                          ▼
   ┌─────────────────────────────────────────────────────┐
   │                    Domain · core                    │
   │   Entities · Use cases · Repository interfaces ·     │
   │     Pure tracking service  (no framework imports)    │
   └─────────────────────────────────────────────────────┘
                          ▲  implemented by
                          │
   ┌─────────────────────────────────────────────────────┐
   │                        Data                         │
   │   On-device OCR · Edge AI detector (isolate)        │
   │   local database · vehicle lookup · GPS · alerts    │
   └─────────────────────────────────────────────────────┘

        wired once at a single composition root (core/di)
        dependencies point inward — Clean Architecture + MVVM

Technology Stack

Area Technology
Framework & Language Flutter · Dart 3 (strict, null-safe)
Edge AI Runtime On-device deep-learning inference (background isolate)
Object Detection On-device neural object detection
OCR On-device text recognition
Tracking Real-time multi-object tracking with persistent IDs
Local Storage Embedded on-device database
Geolocation Device GPS
Architecture & Principles Clean Architecture · MVVM · SOLID
Testing & Quality flutter test · flutter analyze · GitHub Actions CI

How it Works

The camera feed is turned into actionable, geolocated evidence through a real-time pipeline:

   Camera frame ─►  Detect & Track  ─►  Read Plate  ─►  De-dup  ─►  Persist + Geotag  ─►  Alert
                   (background isolate    (on-device OCR)
                    · neural detector
                    · persistent IDs)
  • Detect & Track — preprocessing and inference run off the platform thread in a background isolate; detections feed a tracker that assigns each object a persistent id.
  • Read Plate — a parallel OCR pass recognizes text, normalizes it, and matches Mercosul / legacy plate patterns.
  • De-dup — exact and near-match de-duplication avoids re-logging the same plate.
  • Persist + Geotag — new plates are stored locally with GPS coordinates and capture history.
  • Alert — a local notification fires the moment a new plate is captured.

Screenshots

Live detection and tracking
Live detection & tracking
persistent IDs · plate read · session counts
Dense multi-vehicle scene
Dense multi-object scene
many vehicles tracked at once
Adjustable overlay
Adjustable overlay
toggle categories to cut visual clutter
Offline capture history with geolocation
Offline capture history
geolocation + vehicle enrichment

Roadmap

  • ByteTrack-style tracking (Kalman + two-stage association) for tougher scenes
  • License-free detector upgrade (EfficientDet-Lite / YOLOX) for higher accuracy
  • Associate each read plate with its tracked vehicle (track_id ↔ plate)
  • Traffic-light and stop-sign detection
  • Session report screen with GPS track export
  • Landscape / dash-mount orientation support
  • iOS support

Repository Philosophy

This repository presents the product, its architecture, and the engineering decisions behind it — clearly and professionally.

It is a portfolio-grade engineering showcase built to demonstrate real-time, privacy-preserving, on-device computer vision and a disciplined Clean Architecture + MVVM codebase, without exposing any proprietary business logic or confidential data.

Built to read the road in real time — on the device.

About

Real-time mobile Edge AI for vehicle, person and license plate recognition using Flutter, OCR and on-device object detection.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors