Fire and Smoke Tracking and Detection using YOLOv8
Introduction
This repository contains the code for tracking and detecting fires and smokes in real-time video using YOLOv8. The project uses a pre-trained YOLOv8 model to identify the presence of fire and smoke in a given video frame and track it through subsequent frames.
https://user-images.githubusercontent.com/22887323/216410880-297f4408-8d22-47a1-b894-6f3f3d8109fb.mp4
The following packages are required to run the code
ultralytics
roboflow
CUDA (if using GPU for acceleration)
Steps to train on custom dataset
- Install YOLOv8
- CLI Basics
- Inference with Pre-trained COCO Model
- Roboflow Universe
- Preparing a custom dataset
- Custom Training
- Validate Custom Model
- Inference with Custom Model
Custom data
Used roboflow to annotate fire and smoke images.
Sample notebook show how we can add the Roboflow workflow project using API to download the annotated dataset to train the model.
Use the below code to download the datset:
from roboflow import Roboflow
rf = Roboflow(api_key="xxxxxxxxxxxxxxxx")
project = rf.workspace("custom-thxhn").project("fire-wrpgm")
dataset = project.version(8).download("yolov8")
Evaluation
The below chart show the loss , mAP (mean Average Precision) score for the train, test,validation set.
confusion Matrix :
Inference
Run the model using below command:
!yolo task=detect mode=predict model=<path to weight file> conf=0.25 source=<path to source image or video> save=True
The --source argument is required to specify the path to the input video. the above command save your weight in run/predict, which will contain the annotated frames with fire and smoke detections.
Result
The project can detect fire and smoke in real-time video with high accuracy. The detection and tracking performance can be improved by fine-tuning the YOLOv8 model on a custom dataset.
It can be used as a starting point for more advanced projects and can be easily integrated into a larger system for fire and smoke monitoring.