Bootstrap

煤矿采掘工作面智能分析数据集 煤矿井下钻场智能分析数据集

智慧矿井智能分析数据集



数据1:数据1包含煤矿采掘工作面工人安全帽检测,工人行为检测(行走,站立,坐,操作,弯腰,靠,摔,爬),液压支撑防护(液压支撑防护板所有角度如防护板0到30度,30度到60.....等多角度检测,支撑异常,剪煤机等)检测,采煤人检测,运煤线检测,煤块检测,数据集共22GB,13万张真实拍摄影像,yolo和coco两种标注格式。



数据2:数据2数据集总共包含70948张图片,囊括了三类不同亮度水平(包括低亮度、中亮度和高亮度)以及正面、左侧和右侧三类拍摄角度,并覆盖了目标遮挡、目标模糊等多种复杂场景,收录了煤矿井下钻场出现频率较高的5类重要目标,分别是夹持器、钻机卡盘、煤矿工人、矿井安全帽和钻杆,并提供了PASCAL VOC,yolo格式的标注文件。

智慧矿井智能分析数据集

数据集描述

该数据集是一个专门用于煤矿井下智能监控和安全分析的数据集,旨在帮助研究人员和开发者训练和评估基于深度学习的目标检测、行为识别和异常检测模型。数据集分为两个部分,涵盖了煤矿采掘工作面的多种场景和目标,包括工人安全帽检测、工人行为检测、液压支撑防护检测等。数据集提供了高分辨率的真实拍摄图像,并且标注质量很高,支持多种标注格式。

数据1:煤矿采掘工作面智能分析数据集

数据规模
  • 总样本数量:130,000张真实拍摄影像
  • 数据量:约22GB
  • 标注格式:Yolo和COCO两种标注格式
  • 目标类别
    • 工人安全帽检测
    • 工人行为检测(行走、站立、坐、操作、弯腰、靠、摔、爬)
    • 液压支撑防护检测(不同角度如0到30度、30度到60度等)
    • 支撑异常检测
    • 剪煤机检测
    • 采煤人检测
    • 运煤线检测
    • 煤块检测
图像特性
  • 高分辨率影像:图像为高分辨率,确保细节清晰。
  • 多目标检测:涵盖多种目标和复杂的行为模式。
  • 多样化场景:覆盖了煤矿采掘工作面的各种实际场景。
  • 高质量标注:提供详细的边界框和类别标签,支持Yolo和COCO格式。
应用场景
  • 工人安全监测:通过实时监控工人的安全帽佩戴情况和行为,提高作业安全性。
  • 设备状态监控:检测液压支撑和其他机械设备的状态,预防潜在故障。
  • 生产效率优化:通过对采煤人和运煤线的检测,优化生产流程和资源配置。
  • 科研分析:用于研究目标检测和行为识别算法在煤矿环境中的应用。

数据2:煤矿井下钻场智能分析数据集

数据规模
  • 总样本数量:70,948张图片
  • 数据量:具体大小未提供
  • 标注格式:PASCAL VOC和Yolo格式
  • 目标类别
    • 夹持器
    • 钻机卡盘
    • 煤矿工人
    • 矿井安全帽
    • 钻杆
图像特性
  • 多亮度水平:包括低亮度、中亮度和高亮度三种不同的光照条件。
  • 多拍摄角度:正面、左侧和右侧三种不同的拍摄角度。
  • 复杂场景:包含目标遮挡、目标模糊等多种复杂场景。
  • 高质量标注:提供详细的边界框和类别标签,支持PASCAL VOC和Yolo格式。
应用场景
  • 工人安全监测:通过实时监控矿井工人的安全帽佩戴情况,提高作业安全性。
  • 设备状态监控:检测夹持器、钻机卡盘和钻杆的状态,预防潜在故障。
  • 生产效率优化:通过对钻场内各种设备和工人的检测,优化钻探作业流程。
  • 科研分析:用于研究目标检测算法在不同光照条件和复杂场景下的鲁棒性。

数据集结构

典型的数据集目录结构如下:

1smart_mine_analysis_dataset/
2├── data1/
3│   ├── images/
4│   │   ├── img_00001.jpg
5│   │   ├── img_00002.jpg
6│   │   └── ...
7│   ├── annotations_yolo/
8│   │   ├── img_00001.txt
9│   │   ├── img_00002.txt
10│   │   └── ...
11│   ├── annotations_coco/
12│   │   ├── coco_annotations.json
13│   └── README.md  # 数据集说明文件
14└── data2/
15    ├── images/
16    │   ├── img_00001.jpg
17    │   ├── img_00002.jpg
18    │   └── ...
19    ├── annotations_voc/
20    │   ├── img_00001.xml
21    │   ├── img_00002.xml
22    │   └── ...
23    ├── annotations_yolo/
24    │   ├── img_00001.txt
25    │   ├── img_00002.txt
26    │   └── ...
27    └── README.md  # 数据集说明文件

示例代码

以下是一个使用Python和相关库(如OpenCV、PIL等)来加载和展示数据集的简单示例代码:

1import os
2import cv2
3import numpy as np
4from PIL import Image
5import json
6import xml.etree.ElementTree as ET
7
8# 数据集路径
9dataset_path = 'path/to/smart_mine_analysis_dataset/'
10
11# 加载图像和标注 (YOLO格式)
12def load_image_and_labels_yolo(image_path, annotation_path):
13    # 读取图像
14    image = Image.open(image_path).convert('RGB')
15    
16    # 解析YOLO标注文件
17    with open(annotation_path, 'r') as infile:
18        lines = infile.readlines()
19        objects = []
20        for line in lines:
21            class_id, x_center, y_center, width, height = map(float, line.strip().split())
22            objects.append([class_id, x_center, y_center, width, height])
23    return image, objects
24
25# 加载图像和标注 (VOC格式)
26def load_image_and_labels_voc(image_path, annotation_path):
27    # 读取图像
28    image = Image.open(image_path).convert('RGB')
29    
30    # 解析VOC标注文件
31    tree = ET.parse(annotation_path)
32    root = tree.getroot()
33    objects = []
34    for obj in root.findall('object'):
35        class_name = obj.find('name').text
36        bbox = obj.find('bndbox')
37        xmin = int(bbox.find('xmin').text)
38        ymin = int(bbox.find('ymin').text)
39        xmax = int(bbox.find('xmax').text)
40        ymax = int(bbox.find('ymax').text)
41        objects.append([class_name, xmin, ymin, xmax, ymax])
42    return image, objects
43
44# 展示图像和标注
45def show_image_with_boxes(image, boxes, is_yolo=False, image_size=(512, 512)):
46    img = np.array(image)
47    h, w, _ = img.shape
48    
49    for box in boxes:
50        if is_yolo:
51            class_id, x_center, y_center, width, height = box
52            xmin = int((x_center - width / 2) * w)
53            ymin = int((y_center - height / 2) * h)
54            xmax = int((x_center + width / 2) * w)
55            ymax = int((y_center + height / 2) * h)
56        else:
57            _, xmin, ymin, xmax, ymax = box
58        
59        cv2.rectangle(img, (xmin, ymin), (xmax, ymax), (0, 255, 0), 2)
60    
61    cv2.imshow('Image with Boxes', img)
62    cv2.waitKey(0)
63    cv2.destroyAllWindows()
64
65# 主函数
66if __name__ == "__main__":
67    subset = 'data1'  # 可以选择 'data2'
68    images_dir = os.path.join(dataset_path, subset, 'images')
69    annotations_dir = os.path.join(dataset_path, subset, 'annotations_yolo')
70    
71    # 获取图像列表
72    image_files = [f for f in os.listdir(images_dir) if f.endswith('.jpg')]
73    
74    # 随机选择一张图像
75    selected_image = np.random.choice(image_files)
76    image_path = os.path.join(images_dir, selected_image)
77    annotation_path = os.path.join(annotations_dir, selected_image.replace('.jpg', '.txt'))
78    
79    # 加载图像和标注
80    if subset == 'data1':
81        image, boxes = load_image_and_labels_yolo(image_path, annotation_path)
82        is_yolo = True
83    elif subset == 'data2':
84        annotations_dir = os.path.join(dataset_path, subset, 'annotations_voc')
85        annotation_path = os.path.join(annotations_dir, selected_image.replace('.jpg', '.xml'))
86        image, boxes = load_image_and_labels_voc(image_path, annotation_path)
87        is_yolo = False
88    else:
89        raise ValueError("Invalid subset. Choose 'data1' or 'data2'.")
90    
91    # 展示带有标注框的图像
92    show_image_with_boxes(image, boxes, is_yolo=is_yolo)

这段代码展示了如何加载图像和其对应的YOLO或VOC格式的标注文件,并在图像上绘制边界框。您可以根据实际需求进一步扩展和修改这段代码,以适应您的具体应用场景。

示例代码:使用预训练模型进行推理

以下是使用预训练模型进行推理的示例代码。这里我们假设您使用的是基于YOLOv5的模型,但您可以根据需要选择其他支持目标检测的模型。

1import torch
2import cv2
3import numpy as np
4from PIL import Image
5import yolov5  # 请确保已安装yolov5库
6
7# 数据集路径
8dataset_path = 'path/to/smart_mine_analysis_dataset/'
9
10# 加载预训练模型
11model = yolov5.load('path/to/pretrained/yolov5_weights.pt')  # 替换成实际的预训练模型路径
12model.eval()
13
14# 主函数
15if __name__ == "__main__":
16    subset = 'data1'  # 可以选择 'data2'
17    images_dir = os.path.join(dataset_path, subset, 'images')
18    
19    # 获取图像列表
20    image_files = [f for f in os.listdir(images_dir) if f.endswith('.jpg')]
21    
22    # 随机选择一张图像
23    selected_image = np.random.choice(image_files)
24    image_path = os.path.join(images_dir, selected_image)
25    
26    # 读取并预处理图像
27    image = Image.open(image_path).convert('RGB')
28    
29    # 使用预训练模型进行推理
30    results = model(image)
31    
32    # 处理预测结果
33    boxes = results.xyxy[0].cpu().numpy()
34    
35    # 在图像上绘制边界框
36    img = np.array(image)
37    for box in boxes:
38        xmin, ymin, xmax, ymax, conf, class_id = box
39        class_name = results.names[int(class_id)]
40        label = f'{class_name} {conf:.2f}'
41        cv2.rectangle(img, (int(xmin), int(ymin)), (int(xmax), int(ymax)), (0, 255, 0), 2)
42        cv2.putText(img, label, (int(xmin), int(ymin) - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
43    
44    # 显示结果
45    cv2.imshow('Image with Boxes', img)
46    cv2.waitKey(0)
47    cv2.destroyAllWindows()

这段代码展示了如何使用预训练的YOLOv5模型进行推理,并显示和保存推理结果。您可以根据实际需求进一步扩展和修改这段代码,以适应您的具体应用场景。如果您需要使用其他模型进行更高级的功能,如模型微调或增量训练,可以参考相应模型的官方文档来进行相应的配置和操作。

;