Neopark Smart Parking System
AI-powered smart parking system using computer vision to detect vehicle presence in real-time, with edge computing and a live monitoring dashboard.
- Role
- AI & IoT Developer
- Timeline
- Jan 2025 – May 2025
- Team
- 3 people
- Status
- Completed

The problem
Parking facilities waste drivers' time and fuel because slot occupancy is tracked by hand — or not at all. Neopark needed real-time, per-slot availability without the cost of installing a hardware sensor in every bay.
Constraints
- No per-slot sensors: availability had to come from cameras watching many bays at once
- Low-cost ESP32-CAM edge devices with very little on-board compute
- Parking scenes under varied lighting, seen from many different camera angles
- Occupancy had to update in real time on a live dashboard
Architecture
Step 1, Device
ESP32-CAM cameras
Low-cost edge devices stream frames
Step 2, Compute
Inference service
Custom YOLOv11, batched on a GPU node
Step 3, Compute
Occupancy engine
Per-slot state with temporal smoothing
Step 4, Interface
Live dashboard
Next.js, real-time availability
Step 5, Data
AWS S3 archive
Images and event logs
Engineering decisions
Temporal smoothing over a bigger model
- Context
- Detections flickered between occupied and free across adjacent frames, which made the dashboard hard to trust.
- Decision
- Added a temporal smoothing layer on top of the detector instead of chasing extra mAP with a heavier model.
- Trade-off
- A slot changes state slightly after the raw detection does — in exchange for a stable, believable display.
Calibrate per camera, not globally
- Context
- Lighting and viewing angles differed from camera to camera, so one global threshold misjudged some bays.
- Decision
- Trained on a curated dataset spanning varied lighting and tuned confidence thresholds per camera angle.
- Trade-off
- Every new camera needs a calibration pass before it goes live.
Keep the edge thin, batch on a GPU
- Context
- ESP32-CAM boards are far too constrained to run a modern detector on-device.
- Decision
- Used the edge devices purely as frame sources and batched frames on a GPU-backed inference node.
- Trade-off
- The system depends on the camera-to-server link; batching kept inference latency around 150 ms.
Outcomes
Detection Accuracy
Inference Latency
System Uptime
- Real-time, per-slot availability from low-cost cameras — no sensor in any bay
- Accuracy, latency, and uptime above were measured across the pilot deployment
- Best Project Award and the most-visited booth at the FILKOM UB Technology Exhibition 2025
Reflections
Lessons learned
The biggest lesson was that edge-to-cloud reliability matters more than raw model accuracy. Investing early in temporal smoothing and per-camera calibration paid off far more than chasing the last percentage point of mAP — the difference between an impressive demo and a system people could actually trust came down to engineering, not the model alone.
Proof — verify it yourself
- Source codegithub.com/mogataufiq/neopark — Public source repository (opens in a new tab)
- Best Project Award — FILKOM UB Technology Exhibition 2025
- Most Visited Booth
Tech stack
- Python
- YOLOv11
- ESP32-CAM
- Next.js
- Node.js
- AWS S3
- Docker
Related writing
- War Story
Production computer vision is mostly plumbing
Two deployments — PPE compliance on an industrial CCTV network and camera-based parking occupancy — and why the detector was the easy part.
4 min read
- #computer-vision
- #edge-ai
- #yolo
- #reliability
Work with me
Facing a similar challenge?
I build systems like this end to end — from the first architecture sketch to production. Tell me about yours.