重型工程车辆数据集,内含Bull_dozer(推土机), Dumb_truck(卡车), Excavator(挖掘机), Grader(平地机), Loader(转载机), Mobile_crane(起重机), Roller(滚轮压路机)七种类别。整套数据集有6338张图片,训练集、验证集与测试集均已按比例划分完成,数据标记为txt格式,标签与图片一一对应,适用于YOLO系列模型训练,无需进行任何处理即可直接用于训练,数据集实测有效,精度相对较高。
该数据集是一个专门用于重型工程车辆检测的数据集,旨在帮助研究人员和开发者训练和评估基于深度学习的目标检测模型。数据集涵盖了七种常见的重型工程车辆类型,包括推土机、卡车、挖掘机、平地机、转载机、起重机和滚轮压路机。这些车辆在建筑工地、矿山和其他大型工程项目中扮演着重要角色。通过高质量的图像和详细的标注信息,该数据集为开发高效且准确的工程车辆检测系统提供了坚实的基础。
数据规模
- 总样本数量:6,338张图片
- 训练集 (train):已按比例划分
- 验证集 (valid):已按比例划分
- 测试集 (test):已按比例划分
- 数据量:具体大小未提供
- 标注格式:txt格式(适用于YOLO系列模型)
- 目标类别:
- 推土机 (Bull_dozer)
- 卡车 (Dumb_truck)
- 挖掘机 (Excavator)
- 平地机 (Grader)
- 转载机 (Loader)
- 起重机 (Mobile_crane)
- 滚轮压路机 (Roller)
图像特性
- 多样化场景:覆盖了不同类型的重型工程车辆,在各种环境和背景下的图像情况。
- 高质量手工标注:每张图像都有详细的边界框标注,支持直接用于训练目标检测模型。
- 真实拍摄:所有图像均为实际拍摄的真实场景,增强了模型在实际应用中的鲁棒性。
- 无需预处理:数据集已经过处理,可以直接用于训练,无需额外的数据预处理步骤。
- 高精度标注:数据集经过实测验证,具有较高的标注精度,适合训练高性能的检测模型。
应用场景
- 施工现场监控:自动检测施工现场的各种重型工程车辆,辅助项目管理和安全监督。
- 智能交通管理:在道路施工区域进行车辆识别,提高交通流量管理和安全性。
- 自动化设备管理:集成到设备管理系统中,实现对重型工程车辆的自动化追踪和管理。
- 科研分析:用于研究目标检测算法在特定工业应用场景中的表现,特别是在复杂背景和光照条件下的鲁棒性。
- 故障预警:通过持续监测车辆状态,提前发现潜在故障,减少停机时间。
数据集结构
典型的数据集目录结构如下:
1heavy_construction_vehicle_dataset/
2├── train/
3│ ├── images/
4│ │ ├── img_00001.jpg
5│ │ ├── img_00002.jpg
6│ │ └── ...
7│ ├── labels/
8│ │ ├── img_00001.txt
9│ │ ├── img_00002.txt
10│ │ └── ...
11├── valid/
12│ ├── images/
13│ │ ├── img_00001.jpg
14│ │ ├── img_00002.jpg
15│ │ └── ...
16│ ├── labels/
17│ │ ├── img_00001.txt
18│ │ ├── img_00002.txt
19│ │ └── ...
20├── test/
21│ ├── images/
22│ │ ├── img_00001.jpg
23│ │ ├── img_00002.jpg
24│ │ └── ...
25│ ├── labels/
26│ │ ├── img_00001.txt
27│ │ ├── img_00002.txt
28│ │ └── ...
29├── README.txt # 数据说明文件
数据说明
- 检测目标:以txt格式进行标注,适用于YOLO系列模型。
- 数据集内容:
- 训练集 (train):包含一定比例的图像样张(带txt标注)。
- 验证集 (valid):包含一定比例的图像样张(带txt标注)。
- 测试集 (test):包含一定比例的图像样张(带txt标注)。
- 目标标签:共包含7大类重型工程车辆。
- 数据增广:数据集未做数据增广,用户可以根据需要自行进行数据增广。
- 无需预处理:数据集已经过处理,可以直接用于训练,无需额外的数据预处理步骤。
示例代码
以下是一个使用Python和相关库(如OpenCV、PIL等)来加载和展示数据集的简单示例代码:
1import os
2import cv2
3import numpy as np
4from PIL import Image
5
6# 数据集路径
7dataset_path = 'path/to/heavy_construction_vehicle_dataset/'
8
9# 加载图像和边界框标注
10def load_image_and_boxes(image_path, label_path):
11 # 读取图像
12 image = Image.open(image_path).convert('RGB')
13 width, height = image.size
14
15 # 读取并解析txt标注文件
16 with open(label_path, 'r') as f:
17 lines = f.readlines()
18
19 boxes = []
20 for line in lines:
21 class_id, x_center, y_center, w, h = map(float, line.strip().split())
22 xmin = int((x_center - w / 2) * width)
23 ymin = int((y_center - h / 2) * height)
24 xmax = int((x_center + w / 2) * width)
25 ymax = int((y_center + h / 2) * height)
26 boxes.append([class_id, xmin, ymin, xmax, ymax])
27
28 return image, boxes
29
30# 展示图像和边界框
31def show_image_with_boxes(image, boxes):
32 img = np.array(image)
33 class_names = ['Bull_dozer', 'Dumb_truck', 'Excavator', 'Grader', 'Loader', 'Mobile_crane', 'Roller']
34 for box in boxes:
35 class_id, xmin, ymin, xmax, ymax = box
36 class_name = class_names[int(class_id)]
37 cv2.rectangle(img, (xmin, ymin), (xmax, ymax), (0, 255, 0), 2)
38 label = f'{class_name}'
39 cv2.putText(img, label, (xmin, ymin - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
40
41 cv2.imshow('Image with Boxes', img)
42 cv2.waitKey(0)
43 cv2.destroyAllWindows()
44
45# 主函数
46if __name__ == "__main__":
47 subset = 'train' # 可以选择 'train', 'valid', 或 'test'
48 images_dir = os.path.join(dataset_path, subset, 'images')
49 labels_dir = os.path.join(dataset_path, subset, 'labels')
50
51 # 获取图像列表
52 image_files = [f for f in os.listdir(images_dir) if f.endswith('.jpg')]
53
54 # 随机选择一张图像
55 selected_image = np.random.choice(image_files)
56 image_path = os.path.join(images_dir, selected_image)
57 label_path = os.path.join(labels_dir, selected_image.replace('.jpg', '.txt'))
58
59 # 加载图像和边界框
60 image, boxes = load_image_and_boxes(image_path, label_path)
61
62 # 展示带有边界框的图像
63 show_image_with_boxes(image, boxes)
这段代码展示了如何加载图像和其对应的边界框标注文件,并在图像上绘制边界框。您可以根据实际需求进一步扩展和修改这段代码,以适应您的具体应用场景。
示例代码:使用预训练模型进行推理
以下是使用预训练模型进行推理的示例代码。这里我们假设您使用的是基于YOLOv5的模型,但您可以根据需要选择其他支持目标检测的模型。
1import torch
2import cv2
3import numpy as np
4from PIL import Image
5import yolov5 # 请确保已安装yolov5库
6
7# 数据集路径
8dataset_path = 'path/to/heavy_construction_vehicle_dataset/'
9
10# 加载预训练模型
11model = yolov5.load('path/to/pretrained/yolov5_weights.pt') # 替换成实际的预训练模型路径
12model.eval()
13
14# 主函数
15if __name__ == "__main__":
16 subset = 'train' # 可以选择 'train', 'valid', 或 'test'
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 class_names = ['Bull_dozer', 'Dumb_truck', 'Excavator', 'Grader', 'Loader', 'Mobile_crane', 'Roller']
38 for box in boxes:
39 xmin, ymin, xmax, ymax, conf, class_id = box
40 class_name = class_names[int(class_id)]
41 label = f'{class_name} {conf:.2f}'
42 cv2.rectangle(img, (int(xmin), int(ymin)), (int(xmax), int(ymax)), (0, 255, 0), 2)
43 cv2.putText(img, label, (int(xmin), int(ymin) - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
44
45 # 显示结果
46 cv2.imshow('Image with Boxes', img)
47 cv2.waitKey(0)
48 cv2.destroyAllWindows()
这段代码展示了如何使用预训练的YOLOv5模型进行推理,并显示和保存推理结果。您可以根据实际需求进一步扩展和修改这段代码,以适应您的具体应用场景。如果您需要使用其他模型进行更高级的功能,如模型微调或增量训练,可以参考相应模型的官方文档来进行相应的配置和操作。