// case study

Video Detection

A full-stack video object detection app that uses YOLOv8 to detect objects in uploaded videos and infer the activity taking place.

LiveReact · Material-UIFastAPIYOLOv8
Video Detection screenshot

The project, quickly

// role

Solo full-stack developer - frontend, backend, and model integration.

// frontend

React with Material-UI for the upload and results interface.

// backend

FastAPI serving a YOLOv8 model via Ultralytics, OpenCV, and NumPy.

// status

Live and deployed, accepting MP4, AVI, MOV, MKV, and WMV uploads.

The problem

Manually reviewing footage to identify what objects appear and what's happening in a video doesn't scale - it's slow, subjective, and gets worse the more footage there is to review.

Video Detection takes an uploaded video, runs it through YOLOv8 to detect objects frame by frame, and infers an activity description from what it finds - turning a manual review task into an upload-and-wait one.

How it works

// upload

Video upload

A React + Material-UI frontend accepts common video formats and sends them to a single /predict FastAPI endpoint.

// sampling

Frame sampling

Rather than processing every frame, it samples from the beginning, middle, and end, and filters out frames that are too dark or too bright to detect reliably.

// detection

YOLOv8 detection

A lowered confidence threshold (0.3) catches more detections, with confidence calculation and averaging tuned to reduce noise from single-frame false positives.

// inference

Activity inference

Detected objects are mapped to an inferred activity description, alongside processing statistics like frames processed and total objects found.

Tech stack

React
Material-UI
Axios
FastAPI
YOLOv8
OpenCV
NumPy

What I'd improve next

Detection accuracy came from real iteration, not a first pass - the confidence threshold, frame sampling strategy, and frame-quality filtering were all tuned after the initial version under- and over-detected in different ways. That tuning loop is the part of computer-vision work that doesn't show up in a demo but is most of the actual effort.

Next, I'd like to move from sampled frames to a lightweight tracking approach across the full video, so the activity inference reflects the whole clip rather than three snapshots of it.

© 2026 Shreesh Dwivedidesigned & built with curiosity.

Contact

My local time: loading…

Email

Always happy to help.

Compose

Stay in touch

I'm most responsive on LinkedIn.