如何训练自己的数据集之—电力设备红外数据集
发布时间
阅读量:
阅读量

电力设备红外图像目标检测数据集
基于红外图像的目标检测电力设备数据集合中包含了21个类别、共计1万张图片,并涵盖了包括绝缘子主体、断路器、外壳连接器、电流互感器刀闸刀片等在内的多个关键部件的数据样本。这些高质量标注样本可被用于Yolo等目标识别与定位任务训练模型

一千张

电力设备红外图像目标检测数据集介绍
数据集概述

此数据集主要专注于电力设备红外图像的目标识别任务,并涵盖多种不同类型的物体或目标共21个类别。其中包含1万张图像样本,并遵循YOLO的标注规范。这些数据可以直接应用于YOLO系列目标检测算法的模型训练过程。
数据集特点
- 高分辨率图像:所有图片均为高分辨率红外成像数据,在精准目标辨识方面具有显著优势。
- 精细标注:每张图片均进行了详细的设备部件标注,在构建模型识别系统方面提供可靠基础。
- 丰富性:该数据集涵盖了多种类型的电力设备组件以及多样化的环境条件下的红外图像,在多环境条件下均能良好运行。
- 通用性:该系统支持主流目标检测框架如YOLO系列,并可实现电力设备部件的智能识别与定位功能。
数据集统计

| 目标类型 | 类别ID | 图像数量 |
|---|---|---|
| Arrester body - 绝缘子主体 | 1 | |
| Arrester voltage equalizing ring - 绝缘子电压均衡环 | 2 | |
| Breaker - 断路器 | 3 | |
| Breaker connector - 断路器连接器 | 4 | |
| Breaker support insulator - 断路器支撑绝缘子 | 5 | |
| Casing connector - 外壳连接器 | 6 | |
| Casing general hat - 外壳通用帽 | 7 | |
| Casing porcelain sleeve - 外壳瓷套 | 8 | |
| Casing pressure equalizing ring - 外壳压力均衡环 | 9 | |
| Current transformer connector - 电流互感器连接器 | 10 | |
| Current transformer general cap - 电流互感器通用盖 | 11 | |
| Current transformer head - 电流互感器头部 | 12 | |
| Current transformer porcelain sleeve - 电流互感器瓷套 | 13 | |
| Current transformer secondary tank - 电流互感器二次罐 | 14 | |
| Current transformer voltage equalizing ring - 电流互感器电压均衡环 | 15 | |
| Knife blade - 刀片 | 16 | |
| Knife gate connector - 刀闸连接器 | 17 | |
| Knife gate fixing pin - 刀闸固定销 | 18 | |
| Knife gate support insulator - 刀闸支撑绝缘子 | 19 | |
| Voltage transformer body - 电压互感器主体 | 20 | |
| Voltage transformer secondary tank - 电压互感器二次罐 | 21 | |
| 总计 | 10000 |
数据集结构

PowerEquipmentInfraredDetectionDataset/
├── images/ # 图像文件
│ ├── train/ # 训练集图像
│ │ ├── image_00001.jpg
│ │ ├── image_00002.jpg
│ │ └── ...
│ ├── val/ # 验证集图像
│ │ ├── image_00001.jpg
│ │ ├── image_00002.jpg
│ │ └── ...
│ └── test/ # 测试集图像
│ ├── image_00001.jpg
│ ├── image_00002.jpg
│ └── ...
├── labels/ # YOLO目标检测标注
│ ├── train/ # 训练集标签
│ │ ├── image_00001.txt
│ │ ├── image_00002.txt
│ │ └── ...
│ ├── val/ # 验证集标签
│ │ ├── image_00001.txt
│ │ ├── image_00002.txt
│ │ └── ...
│ └── test/ # 测试集标签
│ ├── image_00001.txt
│ ├── image_00002.txt
│ └── ...
└── dataset_info.txt # 数据集描述文件

标注格式示例
YOLO目标检测格式
每行表示一个物体的边界框和类别:
class_id cx cy w h
class_id代表类别标识符(从1开始连续编号)- 1:
Arrester body为绝缘子主体结构 - 2:
Arrester voltage equalizing ring是绝缘子电压均衡装置 - 3:
Breaker设备通常指断路器 - 4:
Breaker connector - 断路器连接器 - 5:
Breaker support insulator - 断路器支撑绝缘体 - 6:
Casing connector - 外壳连接点 - 7:
Casing general hat - 外壳通用顶盖 - 8:
Casing porcelain sleeve - 外壳瓷套管 - 9:
Casing pressure equalizing ring - 外壳压力均衡装置 - 10:
Current transformer connector - 流向互感器接线端子 - 11:
Current transformer general cap - 流向互感器通用盖板 - 12:
Current transformer head - 流向互感器头部结构 - 13:
Current transformer porcelain sleeve - 流向互感器瓷套管 - 14:
Current transformer secondary tank - 流向互感器二次罐体 - 15:
Current transformer voltage equalizing ring - 流向互感器电压均衡装置 - 16: 刀片形状通常指刀具的锋利边缘
- 17: 刀闸连接端子用于刀闸与刀杆的固定连接
- 18-20.刀闸固定销用于刀闸与刀杆之间的稳固连接
- 1:
例如:
1 0.453646 0.623148 0.234375 0.461111
2 0.321021 0.456789 0.123456 0.345678
...
使用该数据集进行模型训练
1. 数据预处理与加载
为了实现目标,我们需要获取数据并将其符合要求地转换为适合类模型的格式。前提条件是安装了PyTorch和YOLOv5。
import os
from PIL import Image
import torch
from torch.utils.data import Dataset, DataLoader
from torchvision import transforms
class PowerEquipmentInfraredDetectionDataset(Dataset):
def __init__(self, image_dir, label_dir, transform=None):
self.image_dir = image_dir
self.label_dir = label_dir
self.transform = transform
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)
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)
# 加载标注
with open(label_path, 'r') as f:
lines = f.readlines()
boxes = []
labels = []
for line in lines:
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
# 数据增强
transform = transforms.Compose([
transforms.Resize((640, 640)),
transforms.ToTensor(),
])
# 创建数据集
train_dataset = PowerEquipmentInfraredDetectionDataset(image_dir='PowerEquipmentInfraredDetectionDataset/images/train/', label_dir='PowerEquipmentInfraredDetectionDataset/labels/train/', transform=transform)
val_dataset = PowerEquipmentInfraredDetectionDataset(image_dir='PowerEquipmentInfraredDetectionDataset/images/val/', label_dir='PowerEquipmentInfraredDetectionDataset/labels/val/', transform=transform)
test_dataset = PowerEquipmentInfraredDetectionDataset(image_dir='PowerEquipmentInfraredDetectionDataset/images/test/', label_dir='PowerEquipmentInfraredDetectionDataset/labels/test/', transform=transform)
train_loader = DataLoader(train_dataset, batch_size=4, shuffle=True, num_workers=4)
val_loader = DataLoader(val_dataset, batch_size=4, shuffle=False, num_workers=4)
test_loader = DataLoader(test_dataset, batch_size=4, shuffle=False, num_workers=4)

2. 构建模型
我们可以通过采用YOLOv5模型来进行目标检测任务。假设你已经完成克隆并按照文档进行环境配置。
git clone https://github.com/ultralytics/yolov5
cd yolov5
pip install -r requirements.txt
创建数据配置文件 data/power_equipment_infrared_detection.yaml:
train: path/to/PowerEquipmentInfraredDetectionDataset/images/train
val: path/to/PowerEquipmentInfraredDetectionDataset/images/val
test: path/to/PowerEquipmentInfraredDetectionDataset/images/test
nc: 21 # 类别数
names: ['Arrester body', 'Arrester voltage equalizing ring', 'Breaker', 'Breaker connector', 'Breaker support insulator', 'Casing connector', 'Casing general hat', 'Casing porcelain sleeve', 'Casing pressure equalizing ring', 'Current transformer connector', 'Current transformer general cap', 'Current transformer head', 'Current transformer porcelain sleeve', 'Current transformer secondary tank', 'Current transformer voltage equalizing ring', 'Knife blade', 'Knife gate connector', 'Knife gate fixing pin', 'Knife gate support insulator', 'Voltage transformer body', 'Voltage transformer secondary tank']
3. 训练模型
使用YOLOv5进行训练。
python train.py --img 640 --batch 16 --epochs 100 --data data/power_equipment_infrared_detection.yaml --weights yolov5s.pt --cache
4. 评估模型
在验证集上评估模型性能。
python val.py --img 640 --batch 16 --data data/power_equipment_infrared_detection.yaml --weights runs/train/exp/weights/best.pt --task test
5. 推理
使用训练好的模型进行推理。
python detect.py --source path/to/test/image.jpg --weights runs/train/exp/weights/best.pt --conf 0.5
实验报告
实验报告应包括以下内容:
- 项目背景概述:简要阐述项目的起因、发展及其所处的时代背景。
- 数据集详细说明:全面介绍数据集的来源渠道、样本数量及其标注格式规范。
- 模型性能参数设置:明确所采用模型的种类及其相关的配置参数设置。
- 训练过程记录:系统记录训练阶段的各项关键指标变化情况及必要的调整措施。
- 评估指标展示:具体展示模型在验证集上的各项性能评估指标(如mAP值及准确率)。
- 检测结果可视化:通过典型样本检测结果的可视化图表直观呈现模型运行效果。
- 实验总结分析:综合总结实验成果,并深入探讨可能存在的改进空间。
- 附加材料包含:提供完整的附录内容包括相关代码片段及辅助图表资料。
依赖库
确保安装了以下依赖库:
pip install torch torchvision
pip install -r yolov5/requirements.txt
总结
该电力设备红外图像的目标检测数据集包含充足的标注信息,并非常适合用来训练与评估目标检测模型。基于YOLOv5框架设计的系统能够有效地构建并培训出高精度的目标检测模型。通过实验报告不仅有助于深入理解模型性能表现的同时也为后续研究工作提供了重要的参考依据。
全部评论 (0)
还没有任何评论哟~
