yolo目标检测技术之yolov11项目实战(三)

文章目录

  • yolo目标检测技术之yolov11项目实战(三)
  • 一、 基于 YOLO11 的火焰与烟雾检测系统(实战+代码)
    • 项目目标
    • 环境搭建
      • 创建虚拟环境
      • 安装依赖
    • 1.1 数据集准备
      • 1. 下载地址
      • 2. 数据格式转换(XML → TXT)
    • 1.2 模型训练
      • 方法1:命令行训练
      • 方法2:Python 脚本训练(推荐)
    • 1.3 模型推理
      • 方法1:命令行推理
      • 方法2:Python 脚本推理(推荐)
    • 1.4 常用参数对照表
    • 1.5 性能验证
    • 1.6 模型优化建议
    • 1.7 项目结构建议
    • 结语


一、 基于 YOLO11 的火焰与烟雾检测系统(实战+代码)

使用 YOLO11 实现实时火焰与烟雾检测,支持图像/视频/摄像头/RTSP 流输入,适合部署与演示。


项目目标

功能支持内容
模型YOLO11(支持检测/分割)
输入图像、视频、摄像头、RTSP
输出火焰/烟雾检测框、置信度
部署方式Python + PyTorch + OpenCV
可视化界面可扩展(如 Streamlit/Gradio)

环境搭建

创建虚拟环境

conda create -n yolov11_env python=3.12
conda activate yolov11_env

安装依赖

# CUDA 12.1(根据你显卡驱动选择)
pip install torch==2.2.0 torchvision==0.17.0 torchaudio==2.2.0 --index-url https://download.pytorch.org/whl/cu121# 安装 ultralytics(YOLO11)
pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple

1.1 数据集准备

1. 下载地址

  • GitHub:DFS-FIRE-SMOKE-Dataset
  • 百度云:链接(提取码:pnxx

2. 数据格式转换(XML → TXT)

YOLO 格式要求:class_id x_center y_center width height(归一化)

import os
import xml.etree.ElementTree as ETclasses = ['_background_', 'fire', 'other', 'smoke']def parse_xml(xml_path, txt_path):for xml_file in os.listdir(xml_path):file_name = xml_file.split('.')[0]tree = ET.parse(os.path.join(xml_path, xml_file))root = tree.getroot()size = root.find('size')w = int(size.find('width').text)h = int(size.find('height').text)with open(os.path.join(txt_path, file_name + '.txt'), 'w') as f:for obj in root.findall('object'):cls = obj.find('name').textcls_id = classes.index(cls)bndbox = obj.find('bndbox')xmin = float(bndbox.find('xmin').text)ymin = float(bndbox.find('ymin').text)xmax = float(bndbox.find('xmax').text)ymax = float(bndbox.find('ymax').text)x_center = ((xmin + xmax) / 2) / wy_center = ((ymin + ymax) / 2) / hwidth = (xmax - xmin) / wheight = (ymax - ymin) / hf.write(f"{cls_id} {x_center:.6f} {y_center:.6f} {width:.6f} {height:.6f}\n")# 使用示例
if __name__ == '__main__':parse_xml('datasets/fire/Annotations', 'datasets/fire/labels')

1.2 模型训练

方法1:命令行训练

yolo detect train data=ultralytics/cfg/datasets/fire.yaml model=yolo11s.pt epochs=10 imgsz=640 batch=8 device=0 project=runs

方法2:Python 脚本训练(推荐)

from ultralytics import YOLOif __name__ == "__main__":model = YOLO("yolo11s.pt")  # 加载预训练模型model.train(data="ultralytics/cfg/datasets/fire.yaml",epochs=10,batch=8,imgsz=640,device='0',project='runs')

1.3 模型推理

方法1:命令行推理

yolo predict model=runs/train/weights/best.pt source=datasets/fire/test.jpg save=True

方法2:Python 脚本推理(推荐)

from ultralytics import YOLOmodel = YOLO("runs/train/weights/best.pt")
results = model.predict(source="datasets/fire/test.jpg",save=True,conf=0.5,iou=0.6
)

1.4 常用参数对照表

参数名含义说明示例值
data数据集配置文件路径fire.yaml
model模型权重路径或结构路径yolo11s.pt
epochs训练轮数10
batch每批次图像数量8
imgsz输入图像尺寸640 / 1280
conf置信度阈值(推理用)0.5
iouNMS 阈值(推理用)0.6
device训练/推理设备0 / cpu
save是否保存推理结果True

1.5 性能验证

yolo val model=runs/train/weights/best.pt data=ultralytics/cfg/datasets/fire.yaml conf=0.5 iou=0.6
类别mAP50mAP50-95
fire0.6170.408
smoke0.5340.337
other0.4020.257

1.6 模型优化建议

优化方式操作建议
提高输入分辨率imgsz=1280
数据增强mixup=0.36, copy_paste=0.33
使用更大模型yolo11m.pt / yolo11l.pt
调整阈值conf=0.3~0.6, iou=0.5~0.7
加入注意力机制可尝试 C2PSA 模块

1.7 项目结构建议

ultralytics/
├── datasets/
│   └── fire/
│       ├── images/train
│       ├── images/val
│       ├── labels/train
│       └── labels/val
├── runs/
│   └── train/
│       └── weights/
│           ├── best.pt
│           └── last.pt
└── my_train.py / my_detect.py

结语

本项目适合作为 YOLO11 入门实战项目,覆盖从数据准备、训练、推理到部署的完整流程。后续可扩展为:

  • Web 检测界面(Gradio/Streamlit)
  • RTSP 实时流检测
  • 边缘设备部署(Jetson Nano)

如需完整源码或部署脚本,欢迎留言或私信交流!


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/918851.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/918851.shtml
英文地址,请注明出处:http://en.pswp.cn/news/918851.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CF思维小训练(二)

清晰的缤纷的都可以 脏兮兮的甜的也都有转机 不想太小心 错过第一百零一场美丽 CF思维小训练(二) 书接上回CF思维小训练-CSDN博客 虽然代码很短,都是每一道题的背后都思维满满; 目录CF思维小训练(二)Arbo…

分布式锁:从理论到实战的深度指南

1. 分布式锁是啥?为什么它比单机锁更“硬核”?分布式锁,听起来高大上,其实核心问题很简单:在多个机器、进程或服务同时抢夺资源时,怎么保证不打架? 想象一下,你在双十一抢购限量款球…

基于UniApp的智能在线客服系统前端设计与实现

了解更多,搜索“程序员老狼”一、引言在当今数字化时代,客户服务已成为企业竞争力的重要组成部分。本文将详细介绍一款基于UniApp框架开发的跨平台智能客服系统前端实现方案,该系统不仅具备传统客服功能,还融入了现代即时通讯和人…

react与vue的对比,来实现标签内部类似v-for循环,v-if等功能

前言:在vue中我们提供了很多标签方法,比如用的比较多的v-for循环内容,v-if/v-show等判断,可以直接写在标签中,大大提高了我们的开发效率,那么在react中有没有类似的方法呢?我们这里来说一说。re…

PCB工艺-四层板制作流程(简单了解下)

一)流程:四层板的内层芯板,是由一张双面覆铜板PP*2铜箔*2覆铜板蚀刻好线路,就是我们的芯板了PP全名叫半固化片,主体是玻璃纤维布环氧树脂,是绝缘介质铜箔片,是单独一张铜箔,很薄&…

无人机三维路径规划

文章目录 1、引言 2、背景知识 3、核心算法 4、挑战与优化 5、初始效果 6、需要改进地方 7、水平方向优化路线 8、垂直方向优化路线 9、与经过路线相交的网格都绘制出来 1、引言 介绍三维路径规划的定义和重要性:在无人机、机器人导航、虚拟现实等领域的应用。 概述文章目标和…

Spring-解决项目依赖异常问题

一.检查项目的Maven路径是否正确在确保新项目中的依赖在自己的电脑中已经存在的情况下:可以检查项目的Maven路径是否正确在拿到一个新项目时,要检查这个项目的Maven路径是自己电脑上设置好的Maven路径吗?如果不是,项目依赖会出问题…

系统设计——DDD领域模型驱动实践

摘要本文主要介绍了DDD(领域驱动设计)在系统设计中的实践应用,包括其在编码规范、分层架构设计等方面的具体要求和建议。重点强调了应用层的命名规范,如避免使用模糊的Handler、Processor等命名,推荐使用动词加业务动作…

开源卫星软件平台LibreCube技术深度解析

LibreCube技术深度解析:开源卫星软件平台的完整指南 LibreCube是一个专为CubeSat设计的模块化开源卫星软件平台,它通过整合姿态控制、通信管理和任务调度等核心功能,为立方星开发者提供了完整的解决方案。本文将全面剖析LibreCube的技术架构…

React(四):事件总线、setState的细节、PureComponent、ref

React(四) 一、事件总线 二、关于setState的原理 1. setState的三种使用方式 (1)基本使用 (2)传入一个回调 (3)第一个参数是对象,第二个参数是回调 2. 为什么setState要设置成异步 (1)提升性能,减少render次数 (2)避免state和props数据不同步 3. 获取异步修改完数…

CPUcores-【硬核优化】CPU增强解锁全部内核!可优化游戏性能、提升帧数!启用CPU全内核+超线程,以更高优先级运行游戏!支持各种游戏和应用优化~

软件介绍(文末获取)CPUCores:游戏性能优化利器‌这款工具,专为优化提升中低配电脑的帧数而生。其独创的CPU资源调度技术,能让老旧硬件焕发新生核心技术原理‌采用「内核级隔离」方案,通过:系统进…

HQA-Attack: Toward High Quality Black-Box Hard-Label Adversarial Attack on Text

文本对抗性攻击分为白盒攻击和黑盒攻击,其中黑盒攻击更贴近现实,又可分为软标签和硬标签设置,。这些名词分别是什么意思 在文本对抗性攻击中,“白盒攻击”“黑盒攻击”以及黑盒攻击下的“软标签”“硬标签”设置,核心差…

PyCharm性能优化与大型项目管理指南

1. PyCharm性能深度调优 1.1 内存与JVM配置优化 PyCharm基于JVM运行,合理配置JVM参数可显著提升性能: # 自定义VM选项文件位置 # Windows: %USERPROFILE%\AppData\Roaming\JetBrains\<product><version>\pycharm64.exe.vmoptions # macOS: ~/Library/Applicat…

基于Java飞算AI的Spring Boot聊天室系统全流程实战

在当今数字化时代&#xff0c;实时通讯已成为现代应用不可或缺的核心功能。从社交平台到企业协作&#xff0c;从在线客服到游戏互动&#xff0c;实时聊天功能正以前所未有的速度渗透到各行各业。然而&#xff0c;开发一个功能完善的聊天室系统绝非易事——传统开发模式下&#…

在 Conda 环境下编译 C++ 程序时报错:version `GLIBCXX_3.4.30‘ not found

报错信息如下 ERROR:/root/SVF/llvm-16.0.4.obj/bin/clang: /opt/miniconda3/envs/py38/lib/libstdc.so.6: version GLIBCXX_3.4.30 not found (required by /root/SVF/llvm-16.0.4.obj/bin/clang)根据错误信息&#xff0c;问题是由于 Conda 环境中的libstdc.so.6缺少GLIBCXX_3…

vue+flask基于Apriori算法规则的求职推荐系统

文章结尾部分有CSDN官方提供的学长 联系方式名片 文章结尾部分有CSDN官方提供的学长 联系方式名片 关注B站&#xff0c;有好处&#xff01;编号&#xff1a;F069 基于Apriori关联规则职位相似度的推荐算法进行职位推荐 基于决策树、随机森林的预测薪资 vueflaskmysql爬虫 设计求…

机器学习第九课之DBSCAN算法

目录 简介 一、dbscan相关概念 二、dbscan的API 三、案例分析 1. 导入所需库 2. 数据读取与预处理 3. 数据准备 4. DBSCAN 参数调优 5. 确定最佳参数并应用 总结 简介 本次我们将聚焦于一款极具特色的聚类算法 ——DBSCAN。相较于 K-means 等需要预先指定簇数量的算法…

给AI开一副“健忘药”:Dropout如何治愈神经网络的死记硬背症

**——解读《Dropout: A Simple Way to Prevent Neural Networks from Overfitting》**想象一位学生备考时&#xff0c;只反复背诵三套模拟题答案&#xff0c;却在真正的考场上面对新题型束手无策——这种**死记硬背不会举一反三**的问题&#xff0c;正是神经网络中的“过拟合”…

【框架】跨平台开发框架自用整理

Tauri 2.0 | Tauri https://github.com/tauri-apps/tauri 创建小型、快速、安全、跨平台的应用程序 独立于前端 将你现有的网络技术栈带到 Tauri 或开始新的项目。 Tauri 支持任何前端框架&#xff0c;所以你不需要改变你的技术栈。 跨平台 使用单个代码库为 Linux、macOS、W…

web前端第三次作业

一、作业要求&#xff1a;使用js完成抽奖项目 效果和内容自定义&#xff0c;可以模仿游戏抽奖页面二、代码<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthde…