Machine & Deep Learning
YOLO Object Detection & Tracking Web App
An end-to-end computer vision web app that detects, tracks and counts persons and vehicles in uploaded video using YOLOv8 with two parallel tracking pipelines, DeepSORT and ByteTrack.
- YOLOv8
- DeepSORT
- ByteTrack
- OpenCV
- PyTorch
- Flask
- Python
- Computer Vision
- Object Tracking

Case study
The build, in detail
Overview
An end-to-end computer vision web application that performs object detection, multi-object tracking and region-based counting on uploaded videos, wrapped in a Flask web interface for upload, playback and visualisation.
How it works
A user uploads a video through the browser and OpenCV reads it frame by frame. YOLOv8 detects persons, cars and motorcycles, returning a bounding box, class label and confidence score for each detection. DeepSORT and ByteTrack then track the detected objects independently, assigning consistent object IDs.
The frame is split vertically into two regions: persons are counted in the left region and vehicles in the right. Each unique track ID is counted only once, which avoids double counting as objects move. Every frame is annotated with bounding boxes, object IDs, class labels, the region divider and live counters, and the last fifteen seconds of output display a summary screen with the total counts.
Why two trackers
DeepSORT uses appearance and motion features, giving strong ID stability and conservative, accurate counting. ByteTrack also tracks low-confidence detections, giving higher recall in dense scenes at greater speed. Running both independently makes the trade-off visible: the system writes a separate output video for each tracker — deepsort_result.mp4 and bytetrack_result.mp4 — playable and downloadable in the browser alongside a JSON summary of the counts.
Inside the build
Screens from the system
YOLO Object Detection & Tracking Web App — system architecture