工地扬尘检测数据集,3800张图片,支持yolo8+voc格式 智慧工地粉尘检测数据集

发布时间:2026/9/12 21:01:38

工地扬尘检测数据集,3800张图片,支持yolo8+voc格式 智慧工地粉尘检测数据集 工地扬尘检测数据集3800张图片支持yolo8voc格式图片都是工地现场拍摄标注了“dust”这个类别适合做扬尘检测模型训练用工地扬尘检测数据集 YOLOv8 训练全套方案一、数据集基础信息1. 数据集概况总数量3800 张工地现场实拍图像标注类别单类别dust扬尘标注格式YOLO VOC 双格式兼容适用场景工地扬尘识别、环境扬尘监测模型训练推荐划分比例训练集:验证集:测试集 7:2:12. 目录结构标准双格式construction_dust_dataset/ ├── JPEGImages/ # 原图VOC/YOLO共用图片 ├── Annotations/ # VOC格式 .xml 标注文件 ├── labels/ # YOLO格式 .txt 标注文件 ├── ImageSets/ │ └── Main/ │ ├── train.txt │ ├── val.txt │ └── test.txt └── dust_yolov8.yaml # YOLOv8 数据集配置文件3. 标注格式说明YOLO 格式labels/ 下 .txt格式类别id x y w h坐标归一化单类别固定0 0.421 0.356 0.512 0.4890dust扬尘VOC 格式Annotations/ 下 .xml核心节点示例objectnamedust/nameposeUnspecified/posetruncated0/truncateddifficult0/difficultbndboxxmin120/xminymin90/yminxmax450/xmaxymax320/ymax/bndbox/object二、数据集配置文件dust_yolov8.yaml放置在数据集根目录YOLOv8 训练入口配置# 数据集根路径path:./construction_dust_datasettrain:images/trainval:images/valtest:images/test# 类别数 类别名nc:1names:0:dust说明若已提前划分好images/train/images/val/labels/train/labels/val直接使用上述配置。三、环境依赖安装# 核心依赖pipinstallultralytics opencv-python numpy tqdm lxml四、数据集划分脚本3800张 7:2:1 自动划分功能自动拆分图片标签生成train/val/test文件夹适配 YOLO 标准目录。新建split_dataset.pyimportosimportrandomimportshutil# 配置参数img_dir./construction_dust_dataset/JPEGImageslabel_dir./construction_dust_dataset/labelssave_root./construction_dust_datasettrain_ratio0.7val_ratio0.2test_ratio0.1# 创建目录defmake_dir(path):ifnotos.path.exists(path):os.makedirs(path)img_trainos.path.join(save_root,images/train)img_valos.path.join(save_root,images/val)img_testos.path.join(save_root,images/test)label_trainos.path.join(save_root,labels/train)label_valos.path.join(save_root,labels/val)label_testos.path.join(save_root,labels/test)fordin[img_train,img_val,img_test,label_train,label_val,label_test]:make_dir(d)# 获取所有图片img_list[fforfinos.listdir(img_dir)iff.endswith((.jpg,.png,.jpeg))]random.shuffle(img_list)totallen(img_list)# 计算划分数量train_numint(total*train_ratio)val_numint(total*val_ratio)train_setimg_list[:train_num]val_setimg_list[train_num:train_numval_num]test_setimg_list[train_numval_num:]# 复制文件defcopy_file(file_list,dst_img,dst_label):forfileinfile_list:nameos.path.splitext(file)[0]# 复制图片shutil.copy(os.path.join(img_dir,file),os.path.join(dst_img,file))# 复制标签txt_filename.txtifos.path.exists(os.path.join(label_dir,txt_file)):shutil.copy(os.path.join(label_dir,txt_file),os.path.join(dst_label,txt_file))copy_file(train_set,img_train,label_train)copy_file(val_set,img_val,label_val)copy_file(test_set,img_test,label_test)print(f划分完成)print(f训练集{len(train_set)}张)print(f验证集{len(val_set)}张)print(f测试集{len(test_set)}张)运行后自动生成 YOLO 标准images/labels分级目录。五、VOC ↔ YOLO 格式互转脚本双格式兼容1. VOC XML 转 YOLO TXTvoc2yolo.pyimportosimportxml.etree.ElementTreeasET classes[dust]# 仅扬尘一类xml_path./construction_dust_dataset/Annotationssave_txt_path./construction_dust_dataset/labelsimg_w1920img_h1080ifnotos.path.exists(save_txt_path):os.makedirs(save_txt_path)defconvert_xml_to_yolo(xml_file):treeET.parse(xml_file)roottree.getroot()sizeroot.find(size)wint(size.find(width).text)hint(size.find(height).text)txt_nameos.path.basename(xml_file).replace(.xml,.txt)txt_pathos.path.join(save_txt_path,txt_name)withopen(txt_path,w,encodingutf-8)asf:forobjinroot.iter(object):cls_nameobj.find(name).textifcls_namenotinclasses:continuecls_idclasses.index(cls_name)bndobj.find(bndbox)x1float(bnd.find(xmin).text)y1float(bnd.find(ymin).text)x2float(bnd.find(xmax).text)y2float(bnd.find(ymax).text)# 归一化坐标x(x1x2)/2.0/w y(y1y2)/2.0/h bw(x2-x1)/w bh(y2-y1)/h f.write(f{cls_id}{x:.6f}{y:.6f}{bw:.6f}{bh:.6f}\n)forxmlinos.listdir(xml_path):ifxml.endswith(.xml):convert_xml_to_yolo(os.path.join(xml_path,xml))print(VOC转YOLO完成)2. YOLO TXT 转 VOC XML备用yolo2voc.pyimportosfromPILimportImage classes[dust]img_path./construction_dust_dataset/JPEGImagestxt_path./construction_dust_dataset/labelssave_xml_path./construction_dust_dataset/Annotationsifnotos.path.exists(save_xml_path):os.makedirs(save_xml_path)defconvert_yolo_to_xml(txt_file,img_file):imgImage.open(img_file)w,himg.size nameos.path.basename(txt_file).replace(.txt,)xml_contentfannotation folderJPEGImages/folder filename{os.path.basename(img_file)}/filename size width{w}/width height{h}/height depth3/depth /size withopen(txt_file,r)asf:linesf.readlines()forlineinlines:lineline.strip()ifnotline:continuecls_id,x,y,bw,bhmap(float,line.split())cls_nameclasses[int(cls_id)]# 反归一化x1int((x-bw/2)*w)y1int((y-bh/2)*h)x2int((xbw/2)*w)y2int((ybh/2)*h)xml_contentf object name{cls_name}/name poseUnspecified/pose truncated0/truncated difficult0/difficult bndbox xmin{x1}/xmin ymin{y1}/ymin xmax{x2}/xmax ymax{y2}/ymax /bndbox /object xml_content/annotationxml_pathos.path.join(save_xml_path,name.xml)withopen(xml_path,w,encodingutf-8)asf:f.write(xml_content)fortxtinos.listdir(txt_path):iftxt.endswith(.txt):nametxt.replace(.txt,)forsufin[.jpg,.png,.jpeg]:img_fullos.path.join(img_path,namesuf)ifos.path.exists(img_full):convert_yolo_to_xml(os.path.join(txt_path,txt),img_full)breakprint(YOLO转VOC完成)六、YOLOv8 训练代码train_dust.py适配工地扬尘单类别任务参数针对户外复杂场景、雾气/扬尘特征优化fromultralyticsimportYOLOdeftrain_construction_dust():# 加载预训练模型n轻量 / s均衡 / m高精度按需选择modelYOLO(yolov8s.pt)# 训练参数resultsmodel.train(data./construction_dust_dataset/dust_yolov8.yaml,epochs120,# 训练轮数imgsz640,# 输入尺寸batch16,# 显存不足改为 8/4device0,# CPU运行改为 devicecpuworkers4,patience20,# 早停pretrainedTrue,optimizerAdam,lr00.001,lrf0.01,warmup_epochs5,mosaic0.8,# 降低马赛克适配自然扬尘场景mixup0.1,copy_paste0.0,hsv_h0.015,hsv_s0.7,hsv_v0.4,projectruns/dust_train,nameyolov8_dust,exist_okTrue,# 扬尘为大面积模糊目标调低置信过滤conf0.25)print(训练结束最优模型路径,results.save_dir/weights/best.pt)if__name____main__:train_construction_dust()七、推理测试代码predict_dust.py图片/文件夹批量检测fromultralyticsimportYOLO# 加载训练好的模型modelYOLO(./runs/dust_train/yolov8_dust/weights/best.pt)# 1. 单张图片推理# res model(test.jpg, saveTrue)# 2. 文件夹批量推理resmodel(source./test_images,saveTrue,conf0.3)print(推理完成结果已保存)八、完整使用流程整理 3800 张图片放入JPEGImagesVOC 标注放入Annotations运行voc2yolo.py生成 YOLO 标签运行split_dataset.py按 7:2:1 划分数据集确认dust_yolov8.yaml路径无误执行train_dust.py开始训练训练完成后用predict_dust.py测试效果。九、调优建议工地扬尘场景专属漏检严重调高imgsz800降低推理/训练conf0.2~0.3误检多增大patience、适当减少数据增强mosaic0.5显存不足减小batch使用yolov8n.pt轻量模型光线复杂强光/阴天保留默认 HSV 色域增强提升泛化能力。
延伸阅读

更多相关文章

2026/9/11 20:30:29

AIGC检测用什么工具?2026年主流合规工具整理分享

2026年国内高校、期刊对学术内容的原创性审核不断升级,除了传统的论文重复率检测,AIGC生成内容检测已经成为必查项。本科毕业论文抽检、硕士学位论文答辩、职称评审论文送审、期刊投稿初审,一旦AI生成内容占比不符合官方要求,直接…

2026/9/12 4:30:58

降AIGC率哪家更可靠?5个判断标准帮你选对工具

2026年国内高校和学术期刊对AI生成内容的筛查全面升级,多数院校明确要求学位论文AIGC率必须控制在合格范围,一旦超标直接面临返修、延期答辩甚至退稿的后果。很多有AI写作辅助需求的同学和科研人员,都遇到过自主降AIGC率后语义崩坏、专业表达…

2026/9/10 4:14:55

多模数据库是什么?2026选型指南+KES融合架构实战

大家好,我是数据库小学妹 👋 前阵子一个做智慧物流的朋友找我诉苦。他们的业务系统背后挂了五套数据库:MySQL管订单,MongoDB存运单详情,Neo4j做司机关系图谱,Elasticsearch查物流地址,TDengine收…

2026/9/12 21:01:03

AI智能体如何10倍提升营销效率:架构与应用

1. 项目概述:AI如何重构营销生产力当我在2023年首次部署AI营销系统时,团队用3天完成了过去20人月的客户分析工作。这不是未来幻想,而是正在发生的营销革命——通过AI智能体(AI Agent)技术,单个AI员工可同时…

2026/9/12 21:01:03

神经网络与深度学习:从原理到实践

1. 引言 深度学习是机器学习的一个重要分支,其核心思想是通过构建多层神经网络,让计算机自动从数据中学习特征表示。近年来,随着计算能力的提升和大数据的积累,深度学习在图像识别、自然语言处理、语音识别等领域取得了突破性进展…

2026/9/12 20:56:03

关于无限循环

这个问题不断的出现,真的没有什么特别需要解释的:不等于1,就算是它意味着求极限也不等于1,除非极限的定义脱离求极限这个动作的实际含义,而实际上正是如此(极限的定义脱离求极限这个动作的实际含义&#xf…

2026/9/12 2:05:33

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/12 3:55:12

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/12 10:09:03

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/12 0:04:17

MATLAB仿生优化框架:长鼻浣熊算法多策略融合实现

简介:本资源是一份面向智能优化算法研究者与MATLAB初学者的仿生智能算法实践代码包,聚焦于长鼻浣熊优化算法(COA)的多策略改进与性能验证。针对传统COA易陷局部最优、收敛精度不足等问题,作者融合Circle映射初始化提升…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 JavaWeb 的校园一卡通管理系统的设计与实现 基于 JavaWeb 的校园卡业务管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 Java 的图书馆借阅管理平台的搭建与实现 基于 Java 的图书馆综合管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/12 6:29:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/12 14:32:17

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/12 6:37:43

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码