发布时间:2026/7/15 19:23:10
工地扬尘检测数据集,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/7/14 0:49:51

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

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

2026/7/14 0:49:51

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

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

2026/7/15 5:37:20

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

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

2026/7/16 5:45:26

C++实现HDLC协议栈:从原理到嵌入式工业通信实战

1. 项目概述:为什么要在C里折腾HDLC?如果你在嵌入式、工业通信或者一些老牌通信设备公司的代码里翻过,大概率会碰到HDLC(高级数据链路控制)协议。乍一看,这协议名字里带个“高级”,但其实是上个…

2026/7/16 5:45:26

PCB设计工程师核心技能与学习路径:从入门到进阶

这次我们来聊聊PCB设计工程师这个岗位到底需要掌握哪些技能,哪些内容可以暂时放一放。对于刚入行的工程师来说,最头疼的就是不知道学习重点在哪里,担心学了一堆用不上的东西,反而错过了核心技能。PCB设计工程师主要负责电路板的设…

2026/7/16 5:45:26

【AI总结】2026年6月 主流国内外大模型总结

目录 引言一、 国际主流模型 1. OpenAI GPT 系列2. Anthropic Claude 系列3. Google Gemini 系列4. Meta Llama 系列5. xAI Grok 系列6. 其他值得关注的国际模型 二、 国内主流模型 1. 百度 文心大模型2. 阿里 通义千问3. 腾讯 混元大模型4. 字节跳动 豆包大模型 / 扣子5. 智谱…

2026/7/16 5:45:26

Java循环控制进阶:while与do..while的实战抉择与break/continue的精准调控

1. 为什么需要while和do..while循环?在日常编程中,我们经常遇到需要重复执行某段代码的场景。比如读取用户输入直到输入合法、处理文件中的每一行数据、或者游戏中的主循环。这时候,循环结构就派上用场了。Java提供了三种主要的循环结构&…

2026/7/16 5:45:26

【2014-01-27】cocos2dx学习笔记:CCNode回调流程

[历史归档] 本文原发布于 cstriker1407.info 个人博客,内容为历史存档,仅供参考。 发布时间: 2014-01-27 | 标题:cocos2dx学习笔记:CCNode回调流程 | 分类: 编程 / C &&…

2026/7/16 5:40:25

Unity 2023安装本质:Hub调度、模块化构建与URP默认管线解析

1. 项目概述:这不是“又一个安装教程”,而是Unity开发者绕不开的首道关卡Unity 2023不是某个孤立版本,它是Unity引擎演进路线中承上启下的关键节点——它首次将Universal Render Pipeline(URP)正式设为新建2D/3D项目的…

2026/7/15 17:04:06

3步解锁音乐自由:ncmdumpGUI终极NCM文件解密转换指南

3步解锁音乐自由:ncmdumpGUI终极NCM文件解密转换指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾在网易云音乐下载了心爱的歌曲&#…

2026/7/15 22:21:34

CANoe 19 SP3 配置 GB/T 27930-2023 A类系统:3步搭建BMS仿真测试环境

CANoe 19 SP3 配置 GB/T 27930-2023 A类系统:3步搭建BMS仿真测试环境随着新能源汽车行业的快速发展,充电通信协议的标准化和测试验证变得尤为重要。GB/T 27930-2023作为中国智能充电协议的最新版本,对充电机与电动汽车之间的通信提出了更严格…

2026/7/15 23:18:22

3步搞定RTL8852BE驱动:从零开始配置Wi-Fi 6网卡

3步搞定RTL8852BE驱动:从零开始配置Wi-Fi 6网卡 【免费下载链接】rtl8852be Realtek Linux WLAN Driver for RTL8852BE 项目地址: https://gitcode.com/gh_mirrors/rt/rtl8852be 还在为Linux系统无法识别RTL8852BE Wi-Fi 6网卡而烦恼吗?&#x1f…

2026/7/16 0:04:06

AD9215BRUZRL7-105是一款工业 10bit 流水线模数转换器

型号介绍AD9215BRUZRL7-105 是一款10 位单通道高速流水线模数转换器,它采用模拟单电源独立供电 数字驱动分离供电双电源架构,模拟电源 AVDD 额定 3V,允许工作区间 2.7V~3.3V;数字驱动电源 DRV 独立设计,支持 2.25V~3.…

2026/7/16 0:04:06

LTC4418IUF#TRPBF是一款工业级双通道控制器

型号介绍LTC4418IUF#TRPBF 是一款工业级双通道电源路径控制器,它芯片采用 20 引脚 4mm4mm QFN 封装,底部附带外露散热焊盘作为 21 号 GND 引脚,热阻 θJA 为 47℃/W、θJC 仅 4.5℃/W,散热性能适配大功率切换场景;温区…

2026/7/16 0:04:06

uos-exporter核心组件解析:10个关键监控导出器功能详解

uos-exporter核心组件解析:10个关键监控导出器功能详解 【免费下载链接】uos-exporter uos-exporter collects metrics from os 项目地址: https://gitcode.com/openeuler/uos-exporter 前往项目官网免费下载:https://ar.openeuler.org/ar/ uos-…

2026/7/15 13:36:32

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…