YOLOv8 CCTV Tracking and Intelligent Security Models

This repository contains the fine-tuned YOLOv8 vision models developed for the research project: "AI-Powered Intelligent Security Ecosystem for Experience Centers".

Repository Link

The complete codebase, configurations, and scripts for this project are available at:

Included Models

1. Person Detector (person_detector_best.pt)

  • Base Architecture: YOLOv8n (nano)
  • Task: General person detection and tracking.
  • Purpose: Served as the lightweight baseline detector to manage entry, exit, occupancy analysis, and identify regions of interest.
  • mAP50: 0.3733 on the validation set.

2. Tuned Fire Detector (fire_detector_best.pt)

  • Base Architecture: YOLOv8n (nano)
  • Task: Specialist fire and smoke detection.
  • Purpose: Fine-tuned with domain-adapted learning rates and augmentation to conditionally trigger warnings upon detecting active combustion in critical zones.
  • mAP50: 0.6383 | mAP50-95: 0.4611.

3. Specialist Fire Detector (fire_specialist_best.pt)

  • Base Architecture: YOLOv8s (small)
  • Task: Deep specialist fire detection.
  • Purpose: A larger model used to validate detection consistency when active triggers are identified, balancing high recall requirements.
  • mAP50: 0.6950 | mAP50-95: 0.3953.

Dataset Curation & Citing Sources

The models were trained, validated, and compared on standard datasets:

  1. COCO128-Person Sub-dataset: For person detection training.
  2. Home-fire-dataset: For fine-tuning fire and smoke detectors.
  3. Oxford TownCentre Dataset: For benchmarking multiple-object tracking (MOT) performance using ByteTrack and BoT-SORT algorithms.

How to Load and Use

You can load these models directly using the official ultralytics library in Python:

from ultralytics import YOLO

# Load the person detector
person_model = YOLO("person_detector_best.pt")

# Perform inference on an image or video stream
results = person_model("path/to/cctv_frame.jpg")

# Show or save the results
results[0].show()
results[0].save(filename="prediction.jpg")

To run inference on a live RTSP stream or local video file:

results = person_model("rtsp://your_camera_ip/stream", stream=True)
for r in results:
    boxes = r.boxes  # Bounding boxes
    # Process detections...

Licensing

These models and their weights are licensed under the GNU Affero General Public License v3.0 (AGPL-3.0) in accordance with the underlying Ultralytics YOLOv8 library guidelines.

Downloads last month
80
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support