基于yolov10的火焰、火灾检测系统,支持图像、视频和摄像实时检测【pytorch框架、python源码】

更多目标检测、图像分类识别、目标追踪、图像分割、图像检索等项目可看我主页其他文章

功能演示(看shi pin 下面的简介)

https://www.bilibili.com/video/BV1uSijBDEVe/?vd_source=23ce57e8cf06ed0fb5cf39f62df5d51b

(一)简介

基于yolov10的火焰、火灾检测系统在pytorch框架下实现的,这是一个完整的项目,包括代码,数据集,训练好的模型权重,模型训练记录,GUI界面和各种模型指标(精确率、召回率等)等。

GUI界面由pyside6设计实现,界面简洁、突出功能,不是那些花里胡哨烂大街的界面,当检测到有火灾发生时,系统会发出语音警报!

可用笔记本摄像头或者外接USB摄像头

该项目可在pycharm和anaconda搭建的虚拟环境 或者 vscode和anaconda搭建的虚拟环境 执行的

pycharm和anaconda安装和配置可观看教程:

超详细的pycharm+anaconda搭建python虚拟环境_pycharm anaconda环境搭建-CSDN博客

vscode和anaconda安装和配置可观看教程:

保姆级的vscode+anaconda搭建python虚拟环境-CSDN博客

(二)项目介绍

1. 模型训练、验证

​该项目可以使用已经训练好的模型权重,也可以自己重新训练,自己训练也比较简单:

第一步:修改data/data.yaml中的数据集路径

​​

第二步:模型训练,即运行train.py文件 ,结果保存在runs文件夹

第三步:模型验证,修改val.py中训练好的模型权重路径,运行val.py文件,结果保存在runs文件夹

第四步:使用模型,修改gui.py最下面的训练好的模型权重路径,然后运行gui.py文件即可通过GUI界面来展示模型效果

2. 数据集

​​​​​

部分数据展示:

​​​​

3.GUI界面(技术栈:pyside6+python+opencv)
a.GUI初始界面

b.图像检测界面

​​

c.视频或摄像实时检测界面

​​

4.模型训练和验证的一些指标及效果

​​​

​​​ ​​

(三)项目结构

(四)代码

由于篇幅有限,只展示核心代码

python 复制代码
    def upload_img(self):
        """上传图片"""
        # 选择录像文件进行读取
        self.comboBox.setDisabled(False)
        self.pushButton_4.setEnabled(False)
        # 上传图像
        fileName, fileType = QFileDialog.getOpenFileName(self, 'Choose file', '', '*.jpg *.png *.tif *.jpeg')
        if fileName:
            self.file_path = fileName
            """检测图片"""
            org_path = self.file_path
            # 目标检测
            t1 = time.time()
            # 图像检测
            results = self.model.predict(source=org_path, imgsz=self.output_size, conf=self.conf_threshold)[0]
            names = results.names
            t2 = time.time()
            self.label_6.setText('{:.3f} s'.format(t2 - t1))
            now_img = results.plot()
            # 调整图像大小
            self.resize_scale = self.output_size / now_img.shape[0]
            im0 = cv2.resize(now_img, (0, 0), fx=self.resize_scale, fy=self.resize_scale)
            cv2.imwrite("images/tmp/single_result.jpg", im0)
            # 自适应图像大小
            self.label_3.setScaledContents(True)
            # 显示图像
            self.label_3.setPixmap(QPixmap("images/tmp/single_result.jpg"))
            # 获取位置信息
            location_list = results.boxes.xyxy.tolist()
            location_list = [list(map(int, e)) for e in location_list]
            # 获取类别信息
            cls_list = results.boxes.cls.tolist()
            cls_list = [int(i) for i in cls_list]
            # 获取置信度信息
            conf_list = results.boxes.conf.tolist()
            conf_list = ['%.2f %%' % (each * 100) for each in conf_list]
            # 目标总数
            total_nums = len(location_list)
            self.label_11.setText(str(total_nums))
            choose_list = ['全部']
            target_names = [names[id] + '_' + str(index) for index, id in enumerate(cls_list)]
            choose_list = choose_list + target_names
            # 复合框信息
            self.comboBox.clear()
            self.comboBox.addItems(choose_list)

            self.results = results
            self.names = names
            self.cls_list = cls_list
            self.conf_list = conf_list
            self.location_list = location_list
            
            # 显示目标框
            if total_nums >= 1:
                # 渲染类别和置信度信息
                self.label_16.setText(names[cls_list[0]])
                self.label_15.setText(str(conf_list[0]))
                #   默认显示第一个目标框坐标
                #   设置坐标位置值
                self.label_13.setText(str(location_list[0][0]))
                self.label_19.setText(str(location_list[0][1]))
                self.label_21.setText(str(location_list[0][2]))
                self.label_23.setText(str(location_list[0][3]))
            else:
                # 清空显示框
                self.label_16.setText(' ')
                self.label_15.setText(' ')
                self.label_13.setText(' ')
                self.label_19.setText(' ')
                self.label_21.setText(' ')
                self.label_23.setText(' ')

(五)总结

以上即为整个项目的介绍,完整的项目包括代码,数据集,训练好的模型权重,模型训练记录,GUI界面和各种模型指标等

整个项目包含全部资料,一步到位,拿来就用,省心省力!

若项目使用过程中出现问题,请及时沟通!

相关推荐
tang77789几秒前
哪些行业用动态代理ip?哪些行业用静态代理IP?怎样区分动态ip和静态ip?(互联网人必码·实用长文)
大数据·网络·爬虫·python·网络协议·tcp/ip·智能路由器
龙泉寺天下行走11 分钟前
LangChain Skills框架核心解析
python·langchain·aigc
echome88812 分钟前
Python 装饰器详解:从入门到精通的实用指南
开发语言·python
tang7778918 分钟前
爬虫代理IP池到底有啥用?
网络·爬虫·python·网络协议·tcp/ip·ip
sg_knight21 分钟前
设计模式实战:享元模式(Flyweight)
python·设计模式·享元模式·flyweight
墨有66622 分钟前
基于弦论流体对偶与环空间约化的湍流精确数值模型
python·流体力学·弦理论
兰文彬39 分钟前
n8n 2.x版本没有内嵌Python环境
开发语言·python
闻道且行之1 小时前
PyTorch 深度学习开发 常见疑难报错与解决方案汇总
人工智能·pytorch·深度学习
smileNicky1 小时前
Spring AI系列之对话记忆与工具调用指南
人工智能·python·spring
飞Link1 小时前
深度解析 TS2Vec:时序表示学习中的层次化建模(Hierarchical Contrastive Learning)
开发语言·python·学习·数据挖掘