干货-YOLOv5检测烟火

火灾是一种常见的自然灾害和事故,经常给人们的生命财产安全带来威胁。在人力无法及时发现火灾的情况下,火势可能迅速扩散,造成不可挽回的损失。因此,及时发现火灾并采取有效的救援措施至关重要。

利用计算机视觉技术检测火灾具有以下意义:

  1. 提高火灾检测效率:利用计算机视觉技术可以实现自动化火灾检测,极大地提高火灾检测的效率。

  1. 缩短火灾发现时间:利用计算机视觉技术可以及时发现火灾,缩短火灾发现时间,为消防救援部门提供更多的救援时间。

  1. 减少人员伤亡和财产损失:利用计算机视觉技术可以及时发现火灾,采取相应的救援措施,减少人员伤亡和财产损失。

  1. 降低人力成本:利用计算机视觉技术可以实现火灾自动检测,减少人工巡检成本,提高检测效率。

  1. 为火灾防控提供技术支持:利用计算机视觉技术可以对火灾数据进行分析,提供火灾防控的技术支持。

综上所述,利用计算机视觉技术检测火灾具有重要的现实意义和社会价值。

import torch
import cv2
import numpy as np
from pathlib import Path

# 导入YOLOv5模型
model_path = Path('path/to/yolov5')
model = torch.hub.load(model_path, 'custom', path='yolov5s.pt')

# 加载烟火检测图像
img_path = Path('path/to/image')
img = cv2.imread(str(img_path))

# 缩放图像,使其符合模型输入要求
img = cv2.resize(img, (640, 640))

# 图像预处理
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img = img.transpose(2, 0, 1)
img = img[np.newaxis, ...] / 255.0

# 将图像输入模型进行检测
result = model(torch.tensor(img).float())

# 处理检测结果
boxes = result.xyxy[0].cpu().numpy()
scores = result.conf[0].cpu().numpy()
labels = result.names

# 在图像中绘制检测结果
for box, score, label in zip(boxes, scores, labels):
    if label == 'firework':
        x1, y1, x2, y2 = box.astype(np.int)
        cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)
        cv2.putText(img, f'{label}: {score:.2f}', (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)

# 显示检测结果
cv2.imshow('image', img[0].transpose(1, 2, 0))
cv2.waitKey(0)
cv2.destroyAllWindows()

上述代码中,首先使用torch.hub.load()函数从本地加载YOLOv5模型,然后使用cv2.imread()函数加载待检测的烟火图像。接着,将图像缩放到640×640大小,并进行预处理。将预处理后的图像输入模型进行检测,得到每个检测框的坐标、置信度和类别。最后,在原图像上绘制检测结果并显示出来。其中,检测到的烟火类别为'firework'。

猜你喜欢

转载自blog.csdn.net/m0_58508552/article/details/129790095