This project was built as a final assignment for the AI & Deep Learning course. The work was split three ways along natural module boundaries — each contributor took ownership of one tier of the stack.
| Name | Role | Focus |
|---|---|---|
| Gaurav Singh Thakur | ML & Computer Vision lead | Training, OCR, evaluation |
| Navatej Reddy Muddam | Backend & Infra lead | FastAPI server, vehicle lookup |
| Sai Pranay Gundu | Frontend & Mobile lead | Web SPA, mobile app, shader |
The project tree below maps every file to its primary owner. When two people pair-coded on something, the primary owner is whoever drove the file the most; the other is listed as a contributor inside the file's header comment.
yolov12_ocr_dataset.ipynb Training notebook (Colab)
evaluate.py Detection + OCR evaluation harness
backend/providers/plate_ocr.py YOLO + EasyOCR + cloud OCR fallback chain
autolens/samples.py Sample plate generation (PIL) for the demo
test.py Earlier real-time tracker prototype
img.py Frame extractor for training-data prep
PROJECT_REPORT.md Academic writeup — pipeline, results,
failure modes
Responsibilities: dataset curation, training the YOLOv12 model on Roboflow data, exporting to ONNX, integrating EasyOCR for the read step, building the evaluation script that produces the metrics in the report, and writing up the methodology.
autolens/app.py FastAPI routes: /api/scan, /api/batch,
/api/video, /api/lookup-plate,
/api/scans, /api/analytics, /api/export
autolens/deps.py First-run pip bootstrapper
autolens/__init__.py
backend/main.py Standalone backend entry point used by
the mobile app's run.py launcher
backend/config.py Settings loaded from .env via
pydantic-settings
backend/models.py Pydantic schemas shared with the
mobile app
backend/storage.py JSON-backed scan history with safe
atomic writes
backend/providers/vehicle_info.py
CarsXE plate->VIN, NHTSA vPIC decode,
NHTSA recalls, mock fallback
backend/.env.example
backend/requirements.txt
demo.py Web-demo launcher
run.py / run.bat / run.sh Mobile-app launcher (backend + Metro
+ Android build)
Responsibilities: API design, integrating the OCR + vehicle-lookup
providers behind a single /api/scan endpoint, configuring the dev-
ops surface (run scripts, env vars, requirements, sample data), and
keeping the mobile app and the web demo speaking the same JSON.
webapp/index.html Single-page app structure
webapp/autolens.css Glass-morphism + plate badge + tabs
webapp/autolens.js Alpine.js state + fetch handlers for
every tab (Scan, Examples, Batch,
Video, Analytics, Settings, About)
webapp/background.js WebGL aurora shader (raw GLSL)
PlateScanApp/App.tsx React Native shell + tab nav
PlateScanApp/src/screens/ Scan / History / Settings screens
PlateScanApp/src/components/ Header, ImageCapture, PlateResult,
VehicleCard, StatePicker
PlateScanApp/src/services/ api.ts, storage.ts (AsyncStorage)
PlateScanApp/src/types/index.ts TypeScript schemas mirroring backend
PlateScanApp/android/ Native Android scaffolding
PlateScanApp/package.json,
PlateScanApp/tsconfig.json,
PlateScanApp/babel.config.js, Tooling configs
PlateScanApp/metro.config.js,
PlateScanApp/jest.config.js
Responsibilities: the SPA layout and styling, the inline-webcam integration, the manual plate-entry flow, the WebGL aurora background shader, and the entire React Native Android client.
These files were touched by all three contributors at various points (merging features, smoke tests, README edits). No single owner.
README.md This file's neighbour. Final edits
by all three on submission day.
LICENSE Reviewed and signed off by all three.
CONTRIBUTORS.md (you are here)
.gitignore
The split above isn't a strict wall. The owner of a file is the person you should ask first; everyone else on the team has read and reviewed every PR. Pair sessions:
- Gaurav + Navatej — wiring
backend/providers/plate_ocr.pyinto the FastAPI/api/scanendpoint with a clean error path. - Navatej + Sai Pranay — locking down the JSON shape so the SPA and the mobile app can render the same vehicle card.
- Gaurav + Sai Pranay — making the
Examplestab actually useful (Gaurav generated the sample plates in PIL, Sai Pranay built the gallery + result view).
Issues, questions, and bug reports go on the GitHub issue tracker. The owner of the affected area picks them up first.