Vision-Guard

A realtime object detection system optimized for CCTV footage. Identify and track people, vehicles and other relavant objects.

Vision-Guard

Vision-Guard is a reusable object detection runner for CCTV footage analysis. It uses YOLOv8 to identify people, vehicles, and other relevant objects, then saves the annotated results for inspection or downstream security workflows.

Vision Guard Demo
Vision Guard Demo

The Goal

Security footage can come from many sources and formats. Vision-Guard provides one command-line entry point for running the same detection workflow over a sample image, a recorded video, or a live camera stream supported by the Ultralytics source interface.

Detection Pipeline

Image, Video, or CCTV Source
		↓
	YOLOv8 Model Loading
		↓
	 Frame-by-Frame Inference
		↓
     Bounding Boxes and Class Labels
		↓
	Annotated Detection Results
		↓
	Saved Results and Statistics

How It Works

The detector accepts a source path and a model checkpoint from the command line. Before inference, it creates the configured output directory and loads the requested YOLOv8 model, downloading the checkpoint automatically when it is not available locally.

Ultralytics handles the source decoding and inference loop for images and videos. Detection results are rendered into a named run directory, making outputs easy to compare across different model versions or input sources.

Output

Results are saved under results/detection_run.

Vision Guard Output
Vision Guard Output

Implementation Details

  • Model: YOLOv8 with selectable model sizes such as nano and small
  • Inference: Ultralytics prediction API with automatic result rendering
  • Input Sources: Static images, video files, and compatible live streams
  • Output Management: Reproducible named runs in a configurable results directory
  • Interface: Lightweight Python CLI built with argparse

Why This Structure

The inference function is separated from command-line argument parsing, so it can be imported into another Python workflow without depending on CLI state. The source and model are also configurable at runtime, allowing the same detector to move from quick experiments to larger CCTV batches without changing the implementation.