⛏️ 智慧矿井视觉中枢:煤矿采掘与钻场全场景目标检测数据集及YOLO实战

矿井作业环境复杂、安全风险高,传统监控依赖人工盯防,效率低且易遗漏。本文公开两套针对煤矿采掘工作面和井下钻场的高质量目标检测数据集,总规模超20万张图像,覆盖安全帽、人员行为、设备状态等20+类关键目标,并附YOLO模型训练与评估全流程代码,为构建智慧矿井视觉AI系统提供数据基石与工程参考。

📦 数据集一:煤矿采掘工作面综合检测数据集

核心指标

维度 说明
名称 煤矿采掘工作面综合检测数据集
图像规模 13万张图像,数据量约22GB
分辨率 高分辨率,适用于精确目标检测
标注格式 YOLO (TXT) + COCO (JSON)
类别数量 15类 (涵盖人员、设备、安全装备、工况)

类别详情 (class_id: 名称)
0: 安全帽 | 1: 行走 | 2: 站立 | 3: | 4: 操作 | 5: 弯腰 | 6: | 7: | 8: | 9: 液压支撑 | 10: 支撑异常 | 11: 剪煤机 | 12: 采煤人 | 13: 运煤线 | 14: 煤块

数据集结构

MineExtractionDetectionDataset/
├── images/                     # 图像文件
│   ├── train/   (训练集)
│   ├── val/     (验证集)
│   └── test/    (测试集)
├── annotations/                # 标注文件 (YOLO .txt / COCO .json)
│   ├── train/
│   ├── val/
│   └── test/
└── data.yaml                   # 数据集配置文件

标注格式示例 (YOLO)
每行: class_id cx cy w h (归一化的中心点坐标和宽高)

0 0.453646 0.623148 0.234375 0.461111

在这里插入图片描述
在这里插入图片描述

📦 数据集二:煤矿井下钻场目标检测数据集

核心指标

维度 说明
名称 煤矿井下钻场目标检测数据集
图像规模 70,948张图像
场景复杂性 涵盖低/中/高亮度、正面/左侧/右侧视角、目标遮挡与模糊
标注格式 YOLO (TXT) + PASCAL VOC (XML)
类别数量 5类 (关键钻探设备与人员)

类别详情 (class_id: 名称)
0: 夹持器 | 1: 钻机卡盘 | 2: 煤矿工人 | 3: 矿井安全帽 | 4: 钻杆

数据集结构

MineDrillingSiteDetectionDataset/
├── images/
│   ├── train/
│   ├── val/
│   └── test/
├── annotations/                # 标注文件 (YOLO .txt / VOC .xml)
│   ├── train/
│   ├── val/
│   └── test/
└── data.yaml

标注格式示例 (PASCAL VOC XML)

<annotation>
  <filename>image_00001.jpg</filename>
  <size><width>640</width><height>480</height><depth>3</depth></size>
  <object>
    <name>煤矿工人</name>
    <bndbox><xmin>100</xmin><ymin>200</ymin><xmax>300</xmax><ymax>400</ymax></bndbox>
  </object>
</annotation>

在这里插入图片描述
在这里插入图片描述

💻 YOLOv5 模型训练与评估实战 (以采掘数据集为例)

以下代码演示从数据加载、模型训练到推理的完整流程。

1. 数据加载与预处理
# 对应主题场景:为YOLO模型准备煤矿井下多目标检测数据
import os
from PIL import Image
import torch
from torch.utils.data import Dataset, DataLoader
from torchvision import transforms

class MineDetectionDataset(Dataset):
    """自定义数据集类,适配YOLO格式标注"""
    def __init__(self, image_dir, label_dir, transform=None):
        self.image_dir = image_dir
        self.label_dir = label_dir
        self.transform = transform
        # 获取所有图像文件 (假设为.jpg格式)
        self.image_files = [f for f in os.listdir(image_dir) if f.endswith('.jpg')]

    def __len__(self):
        return len(self.image_files)

    def __getitem__(self, idx):
        img_name = self.image_files[idx]
        img_path = os.path.join(self.image_dir, img_name)
        # 加载对应YOLO格式标签文件 (.txt)
        label_path = os.path.join(self.label_dir, img_name.replace('.jpg', '.txt'))

        # 加载并转换图像
        image = Image.open(img_path).convert('RGB')
        if self.transform:
            image = self.transform(image)

        # 解析标签: 每行 class_id cx cy w h
        boxes, labels = [], []
        with open(label_path, 'r') as f:
            for line in f.readlines():
                class_id, cx, cy, w, h = map(float, line.strip().split())
                boxes.append([cx, cy, w, h])
                labels.append(int(class_id))
        
        # 转换为张量
        boxes = torch.tensor(boxes, dtype=torch.float32)
        labels = torch.tensor(labels, dtype=torch.int64)
        return image, boxes, labels

# 数据增强与归一化 (输入尺寸640x640)
transform = transforms.Compose([
    transforms.Resize((640, 640)),
    transforms.ToTensor(),  # 将图像转换为张量并归一化到[0,1]
])

# 创建数据集实例 (以训练集为例)
train_dataset = MineDetectionDataset(
    image_dir='MineExtractionDetectionDataset/images/train/',
    label_dir='MineExtractionDetectionDataset/annotations/train/',
    transform=transform
)
train_loader = DataLoader(train_dataset, batch_size=16, shuffle=True, num_workers=4)
2. 模型训练 (使用YOLOv5)

首先,克隆YOLOv5仓库并安装依赖:

git clone https://github.com/ultralytics/yolov5
cd yolov5
pip install -r requirements.txt

创建数据集配置文件 data/mine_extraction.yaml

train: ./MineExtractionDetectionDataset/images/train/
val: ./MineExtractionDetectionDataset/images/val/
test: ./MineExtractionDetectionDataset/images/test/
nc: 15  # 类别数
names: ['安全帽', '行走', '站立', '坐', '操作', '弯腰', '靠', '摔', '爬', '液压支撑', '支撑异常', '剪煤机', '采煤人', '运煤线', '煤块']

启动训练 (使用YOLOv5s轻量模型):

python train.py --img 640 --batch 16 --epochs 100 \
                --data data/mine_extraction.yaml \
                --weights yolov5s.pt \
                --cache  # 缓存图像加速训练
3. 模型评估

在验证集上计算mAP等指标:

python val.py --img 640 --batch 16 \
              --data data/mine_extraction.yaml \
              --weights runs/train/exp/weights/best.pt \
              --task test
4. 推理与可视化

使用训练好的模型对新图像进行检测:

python detect.py --source path/to/test_image.jpg \
                 --weights runs/train/exp/weights/best.pt \
                 --conf 0.5  # 置信度阈值

📊 数据集关键价值与创新点

维度 采掘工作面数据集 钻场数据集
规模 13万张 (22GB) 7.1万张
场景复杂性 涵盖多种工作面、设备状态 多亮度、多角度、遮挡与模糊
标注精细度 15类,区分8种人员行为 5类关键钻探目标
应用价值 人员违规行为监测、设备异常预警、产量统计 钻机作业规范性检测、钻杆计数与追踪
技术兼容性 支持YOLO/COCO系列模型 支持YOLO/VOC系列模型

适用场景

  • 安全监控:实时检测工人安全帽佩戴、危险区域闯入、违规操作行为。
  • 设备状态监测:识别液压支撑异常、钻机卡盘状态,预防设备故障。
  • 生产流程分析:追踪运煤线、统计煤块产量、分析钻杆使用效率。

🔮 扩展与优化方向

  1. 模型部署:将训练好的模型转换为TensorRT或ONNX格式,部署至边缘计算设备 (如NVIDIA Jetson),实现井下的实时低延迟推理。
  2. 多目标追踪:结合DeepSORT等算法,对特定工人或设备进行轨迹追踪,分析工作流。
  3. 异常预警系统:基于检测结果 (如“摔倒”、“支撑异常”),集成告警推送机制 (短信、声光报警)。
  4. 数据持续迭代:利用主动学习策略,筛选模型难以识别的样本进行人工复核,不断扩充数据集,提升模型泛化能力。

🏷️ 技术标签

#智慧矿井 #煤矿安全 #目标检测 #YOLOv5 #数据集 #人员行为识别 #设备监测 #深度学习 #计算机视觉 #工业AI

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐