煤矿井下智能监控、打钻过程自动化监测、安全行为识别、灾害防治辅助系统 检测工人是否佩戴安全帽 推动煤矿智能化发展 智能矿山、工业AI、安全生产,煤矿井下钻场目标检测数据集
文章目录
- **煤矿井下钻场目标检测数据集信息表**
- 类别标签及标注数量统计表
- **类别标签及目标分布统计表**
- **数据集特点总结**
- **典型应用方向**
- ✅ 一、系统环境搭建(CUDA + Anaconda + Python)
- 1. 确认 CUDA 驱动(GPU 加速)
- 2. 安装 Anaconda(Python 包管理器)
- 3. 创建 Python 虚拟环境
- 4. 安装必要依赖
- ✅ 二、数据集结构与格式转换(VOC → YOLO)
- 目录结构建议
- VOC → YOLO 转换脚本
- ✅ 三、数据划分(train/val/test)
- ✅ 四、`data.yaml` 配置文件
- ✅ 五、调用 YOLOv8 官方预训练模型进行训练
- ✅ 六、推理代码(单图 / 批量 / 视频)
- 1. 单张图像推理
- 2. 批量图像推理
- 3. 视频检测(井下监控视频)
- ✅ 七、模型评估
- 1. 在验证集上评估
- 2. 在测试集上独立评估(最终性能)
- ✅ 八、模型导出(ONNX / TensorRT / TFLite)
- ✅ 九、工业场景优化建议
- ✅ 十、应用场景与拓展
- ✅ 应用场景:
- ✅ 可拓展方向:
- ✅ 十一、总结
煤矿井下钻场目标检测数据集信息表
| 项目 | 内容 |
|---|---|
| 数据集名称 | 煤矿井下钻场目标检测数据集 |
| 总图像数量 | 70,948 张 |
| 数据大小 | 8.8 GB |
| 标注格式 | PASCAL VOC(.xml)、YOLO(.txt)双格式提供 |
| 目标类别数 | 5 类 |
| 应用场景 | 煤矿井下智能监控、打钻过程自动化监测、安全行为识别、灾害防治辅助系统 |
| 数据来源 | 煤矿用本安型执法记录仪实地拍摄 |
| 构建流程 | 数据采集 → 数据清洗 → 人工标注 → 专家抽检核查 → 标准化发布 |
类别标签和标注数量信息整理的表格:
类别标签及标注数量统计表
| 类别编号 | 英文标签 | 中文名称 | 标注数量(实例数) |
|---|---|---|---|
| 0 | chuck | 夹持器 | 54,207 |
| 1 | coal_miner | 煤矿工人 | 39,482 |
| 2 | drill_pipe | 钻杆 | 67,284 |
| 3 | gripper | 卡盘 | 70,253 |
| 4 | mine_safety_helmet | 矿井安全帽 | 31,119 |
| 总计 | —— | —— | 262,345 |
类别标签及目标分布统计表
| 类别编号 | 英文标签 | 中文名称 | 描述 |
|---|---|---|---|
| 0 | clamp | 夹持器 | 钻机中用于固定钻杆的机械装置 |
| 1 | drill_chuck | 钻机卡盘 | 控制钻杆旋转的核心部件 |
| 2 | miner | 煤矿工人 | 井下作业人员 |
| 3 | safety_helmet | 矿井安全帽 | 工人佩戴的安全防护装备(常作为独立目标检测) |
| 4 | drill_rod | 钻杆 | 打钻过程中使用的长条形金属杆件 |
✅ 注:安全帽与工人可分别检测,支持个体防护装备(PPE)合规性分析。
数据集特点总结
| 特点 | 说明 |
|---|---|
| ✅超大规模数据集 | 包含70,948 张真实井下图像,是目前公开中规模领先的煤矿专用目标检测数据集。 |
| ✅多目标覆盖 | 涵盖打钻作业中的关键设备与人员,支持全流程智能监控。 |
| ✅双标注格式支持 | PASCAL VOC(XML)和YOLO(TXT)格式,兼容主流深度学习框架(如 YOLOv5/v8、Faster R-CNN、SSD 等)。 |
| ✅高质量标注 | 经过专业数据清洗与专家抽检核查,确保标注准确性与一致性。 |
| ✅多样化场景 | 来自多个不同钻场,涵盖不同光照、烟尘、遮挡、角度等复杂井下环境,提升模型鲁棒性。 |
| ✅高应用价值 | 支持打钻过程自动化监控、人员行为分析、设备状态识别、安全隐患预警等智能化应用。 |
典型应用方向
- ✅打钻过程实时监测:自动识别钻杆进给、卡盘动作等关键操作。
- ✅安全合规检测:检测工人是否佩戴安全帽,实现PPE自动检查。
- ✅设备状态分析:通过夹持器和卡盘位置判断设备运行状态。
- ✅智能巡检系统:集成至煤矿AI监控平台,提升井下作业安全性。
- ✅科研与算法训练:为深度学习模型提供高质量训练数据,推动煤矿智能化发展。
你提供的煤矿井下钻场目标检测数据集是一个极具工业价值和研究意义的高质量数据集,包含70,948 张图像、5 类关键目标(夹持器、钻机卡盘、煤矿工人、矿井安全帽、钻杆),支持 PASCAL VOC(XML)和 YOLO 格式,总大小 8.8GB。该数据集可用于构建智能打钻监控系统、人员行为识别、设备状态监测、安全预警等智能化煤矿应用。
以下是从环境搭建 → 数据预处理 → YOLOv8 模型训练 → 推理 → 评估 → 部署的完整全流程,确保你可以高效利用这个大规模工业数据集。
✅ 一、系统环境搭建(CUDA + Anaconda + Python)
1. 确认 CUDA 驱动(GPU 加速)
nvidia-smi- 要求:NVIDIA GPU(建议 ≥ RTX 3090 / A100)
- CUDA 版本 ≥ 11.8(推荐 12.1)
如未安装驱动,请前往 NVIDIA 官网 下载。
2. 安装 Anaconda(Python 包管理器)
前往 https://www.anaconda.com/products/distribution 下载并安装。
3. 创建 Python 虚拟环境
# 创建名为 coal_mine_detection 的环境conda create-ncoal_mine_detectionpython=3.9# 激活环境conda activate coal_mine_detection4. 安装必要依赖
# 安装 PyTorch(以 CUDA 11.8 为例)pipinstalltorch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118# 安装 YOLOv8 官方库pipinstallultralytics opencv-python numpy matplotlib tqdm scikit-learn pandas pillow lxml# 可选:TensorBoard 可视化pipinstalltensorboard# 验证 GPU 是否可用python-c"import torch; print(torch.cuda.is_available())"# 应输出 True✅
lxml用于解析 XML(VOC 格式)
✅ 二、数据集结构与格式转换(VOC → YOLO)
YOLOv8 默认使用 YOLO 格式,因此需要将 VOC XML 转换为.txt标注。
目录结构建议
coal_mine_dataset/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ ├── labels_voc/ # 原始 XML 文件 ├── labels/ # 转换后的 YOLO .txt 文件 └── data.yamlVOC → YOLO 转换脚本
# convert_voc_to_yolo.pyimportosimportxml.etree.ElementTreeasETfrompathlibimportPath# 类别映射(必须与训练一致)classes={'clamp':0,# 夹持器'drill_chuck':1,# 钻机卡盘'miner':2,# 煤矿工人'safety_helmet':3,# 矿井安全帽'drill_rod':4# 钻杆}defconvert(size,box):dw=1./size[0]dh=1./size[1]x=(box[0]+box[1])/2.0-1y=(box[2]+box[3])/2.0-1w=box[1]-box[0]h=box[3]-box[2]return(x*dw,y*dh,w*dw,h*dh)defconvert_annotation(xml_file,output_folder):tree=ET.parse(xml_file)root=tree.getroot()size=root.find('size')w=int(size.find('width').text)h=int(size.find('height').text)txt_file=os.path.join(output_folder,Path(xml_file).stem+'.txt')withopen(txt_file,'w')asf:forobjinroot.iter('object'):cls=obj.find('name').text.lower().strip()ifclsnotinclasses:continuecls_id=classes[cls]xmlbox=obj.find('bndbox')b=[float(xmlbox.find(x).text)forxin['xmin','xmax','ymin','ymax']]bb=convert((w,h),b)f.write(f"{cls_id}{' '.join(f'{x:.6f}'forxinbb)}\n")# 执行转换voc_labels='coal_mine_dataset/labels_voc'yolo_labels='coal_mine_dataset/labels'os.makedirs(yolo_labels,exist_ok=True)forxml_fileinPath(voc_labels).glob('*.xml'):convert_annotation(xml_file,yolo_labels)print("VOC to YOLO conversion completed.")✅ 运行后,所有
.xml将转为.txt存入labels/
✅ 三、数据划分(train/val/test)
# split_data.pyimportosimportrandomfrompathlibimportPath image_dir='coal_mine_dataset/images_raw'# 原始图像目录output_dir='coal_mine_dataset/images'label_dir='coal_mine_dataset/labels'# 创建子集目录forsubsetin['train','val','test']:os.makedirs(f'{output_dir}/{subset}',exist_ok=True)# 获取所有图像文件images=[fforfinos.listdir(image_dir)iff.endswith(('.jpg','.jpeg','.png'))]random.shuffle(images)# 划分比例:80% train, 10% val, 10% testn=len(images)train_files=images[:int(0.8*n)]val_files=images[int(0.8*n):int(0.9*n)]test_files=images[int(0.9*n):]defcopy_files(files,subset):forimginfiles:src_img=os.path.join(image_dir,img)dst_img=os.path.join(output_dir,subset,img)os.system(f'cp "{src_img}" "{dst_img}"')# 同步复制 labellabel=Path(img).stem+'.txt'src_lbl=os.path.join(label_dir,label)dst_lbl=os.path.join('coal_mine_dataset/labels',subset,label)ifos.path.exists(src_lbl):os.system(f'cp "{src_lbl}" "{dst_lbl}"')copy_files(train_files,'train')copy_files(val_files,'val')copy_files(test_files,'test')print("Data split completed: 8:1:1")✅ 四、data.yaml配置文件
# data.yamltrain:./coal_mine_dataset/images/trainval:./coal_mine_dataset/images/valtest:./coal_mine_dataset/images/test# 类别数量nc:5# 类别名称(英文)names:-clamp# 夹持器-drill_chuck# 钻机卡盘-miner# 煤矿工人-safety_helmet# 矿井安全帽-drill_rod# 钻杆# 中文名称(用于可视化)names_zh:-夹持器-钻机卡盘-煤矿工人-安全帽-钻杆✅ 五、调用 YOLOv8 官方预训练模型进行训练
由于是工业场景,光照差、遮挡多、目标小(如安全帽),建议使用YOLOv8m或YOLOv8l。
fromultralyticsimportYOLO# 加载官方预训练模型model=YOLO('yolov8m.pt')# 推荐使用中等模型# 开始训练(大规模数据,可训练更久)results=model.train(data='data.yaml',# 数据配置文件路径epochs=200,# 大数据集建议 150~300batch=32,# 根据显存调整(A100 可用 64)imgsz=640,# 图像尺寸(提升小目标检测)optimizer='AdamW',# 更稳定优化器lr0=0.001,weight_decay=0.0005,momentum=0.937,# 数据增强(关键!提升泛化)augment=True,hsv_h=0.015,hsv_s=0.7,hsv_v=0.4,degrees=10.0,translate=0.1,scale=0.5,shear=0.0,flipud=0.0,fliplr=0.5,mosaic=1.0,mixup=0.1,copy_paste=0.1,# 对小目标特别有效# 正则化dropout=0.2,label_smoothing=0.05,# 学习率调度cos_lr=True,# 余弦退火# 保存与日志project='runs/train',name='coal_mine_yolov8m',save=True,save_period=10,exist_ok=False,# 缓存(内存充足时开启)cache=True,# 分布式训练(多卡)# device=[0,1] # 多GPU)✅ 训练时长:约 12~24 小时(取决于 GPU 数量)
✅ 六、推理代码(单图 / 批量 / 视频)
1. 单张图像推理
fromultralyticsimportYOLOfromPILimportImage model=YOLO('runs/train/coal_mine_yolov8m/weights/best.pt')results=model('underground_scene.jpg',conf=0.3)forrinresults:im_array=r.plot()im=Image.fromarray(im_array[...,::-1])im.show()2. 批量图像推理
results=model.predict(source='coal_mine_dataset/images/test',save=True,project='runs/detect',name='coal_mine_test',conf=0.3,imgsz=640)3. 视频检测(井下监控视频)
results=model.predict(source='drilling_process.mp4',save=True,project='runs/detect/video',name='drilling_monitoring',conf=0.3,imgsz=640)✅ 七、模型评估
1. 在验证集上评估
metrics=model.val(data='data.yaml',split='val',batch=32,imgsz=640,save_json=True,project='runs/val',name='coal_mine_eval')print(f"mAP@0.5:{metrics.box.map50:.4f}")print(f"mAP@0.5:0.95:{metrics.box.map:.4f}")print(f"Precision:{metrics.box.p:.4f}")print(f"Recall:{metrics.box.r:.4f}")# 每类 APfori,nameinenumerate(model.names):print(f"{name}: AP@0.5 ={metrics.box.ap[i]:.4f}")2. 在测试集上独立评估(最终性能)
test_metrics=model.val(data='data.yaml',split='test',name='final_test')print(f"Final Test mAP@0.5:{test_metrics.box.map50:.4f}")✅ 八、模型导出(ONNX / TensorRT / TFLite)
# 导出为 ONNXmodel.export(format='onnx',dynamic=True,opset=13,imgsz=640)# 导出为 TensorRT(NVIDIA Jetson / 工控机)model.export(format='engine',half=True,dynamic=True)# 导出为 TFLite(边缘设备)model.export(format='tflite',int8=True)# 导出为 CoreML(iOS)model.export(format='coreml')✅ 九、工业场景优化建议
| 问题 | 建议 |
|---|---|
| 光照差、对比度低 | 使用hsv_v,CLAHE,Gamma Correction |
| 小目标(安全帽、钻杆) | 使用copy_paste,mosaic,imgsz=640 |
| 遮挡严重 | 使用copy_paste,mixup |
| 实时性要求高 | 使用yolov8s+ TensorRT + FP16 |
| 模型轻量化部署 | 使用prune剪枝或QAT量化 |
✅ 十、应用场景与拓展
✅ 应用场景:
- 智能打钻监控系统:实时检测设备与人员状态
- 安全行为识别:未戴安全帽报警
- 钻杆计数与长度估算:辅助打钻进度管理
- 设备故障预警:夹持器异常、卡盘松动识别
- 数字孪生系统:构建井下三维可视化场景
✅ 可拓展方向:
- 结合 DeepSORT 实现人员/设备跟踪
- 添加姿态估计(工人动作分析)
- 构建 Web 平台实现远程监控
- 部署到边缘计算盒子(Jetson Orin)
✅ 十一、总结
你已经掌握如何:
- ✅ 搭建大规模工业检测环境
- ✅ 将 VOC 数据转换为 YOLO 格式
- ✅ 划分 train/val/test 数据集
- ✅ 使用 YOLOv8 训练煤矿井下目标检测模型
- ✅ 完成推理、评估、模型导出全流程
🎯下一步建议:
- 构建 Flask API 提供 REST 接口
- 集成视频流实时分析(RTSP)
- 添加报警模块(未戴安全帽、设备异常)
- 部署到煤矿边缘服务器或工控机
如果你需要我提供:
- Flask API 接口代码
- 视频流实时检测脚本
- 安全帽佩戴检测报警系统
- 多摄像头融合监控方案
欢迎继续提问!祝你在智能矿山、工业AI、安全生产领域取得突破!⛏️🤖🛡️