如何训练自己收集整理的数据集?智慧无人机视角电力巡检资产检测电力线路数据集

a2c6294ca53248fa80a191065812c671.png无人机视角电力巡检资产检测数据集

 资产检测关注17类目标,共10000余张无人机图像,json方式标注 玻璃绝缘子数据集 聚合物绝缘子数据集 铁箍数据集 电力巡检检测数据集 电力设备数据集

c5297516c11e410fbe7c5d6374bfdda2.png

电力线路上的主要设备和组件

62eb34c867a54397a8136147d39674be.png
电力线路资产检测关注17类目标,共10000余张无人机图像,json方式标注,类别如下:

e8c93ef5935244f8954f6c2cc0ebdfab.png
1.Spiral Damper - 螺旋阻尼器
2.Stockbridge Damper - 斯托克布里奇阻尼器
3.Glass Insulator - 玻璃绝缘子
4.Glass Insulator Big Shackle - 玻璃绝缘子大扣环
5.Glass Insulator Small Shackle - 玻璃绝缘子小扣环
6.Glass Insulator Tower Shackle - 玻璃绝缘子塔扣环
7.Lightning Rod Shackle - 防雷接地线扣环
8.Lightning Rod Suspension - 防雷悬挂装置
9.Tower ID Plate - 塔身标识牌
10.Polymer Insulator - 聚合物绝缘子
11.Polymer Insulator Lower Shackle - 聚合物绝缘子下部扣环
12.Polymer Insulator Upper Shackle - 聚合物绝缘子上部扣环
13.Polymer Insulator Tower Shackle - 聚合物绝缘子塔扣环
14.Spacer - 隔板
15.Vari-grip - 可变夹具
16.Yoke - 铁箍
17.Yoke Suspension - 铁箍悬挂装置1105b5a11dc0428d9ebebb6889fedf95.png

无人机视角电力巡检资产检测数据集介绍

数据集概述

该数据集用于电力巡检资产检测任务,重点关注17类目标,包含10000余张无人机拍摄的图像,并以JSON格式进行了详细标注。这些目标涵盖了电力线路上常见的设备和组件,旨在帮助检测和维护电力设施的安全性和完整性。

数据集特点

  1. 多样性和广泛性:数据集包含17类电力巡检目标,覆盖了电力线路上的主要设备和组件。
  2. 高质量标注:每一张图像都以JSON格式进行了标注,包含对象的边界框位置信息,适合用于目标检测任务。
  3. 无人机视角:所有图像都是从无人机视角拍摄,能够提供不同于地面视角的独特视角,对于复杂地形和高空设备的检测尤为重要。
  4. 大规模数据集:超过10000张图像提供了丰富的训练样本,有助于提高模型的泛化能力和鲁棒性。

数据集内容

  • 图像文件:包含10000余张JPG/PNG格式的图像文件。
  • 标注文件:每张图像对应一个JSON格式的标注文件,包含对象的边界框位置信息。
  • 类别标签:包含17类目标,具体如下:
    1. Spiral Damper - 螺旋阻尼器
    2. Stockbridge Damper - 斯托克布里奇阻尼器
    3. Glass Insulator - 玻璃绝缘子
    4. Glass Insulator Big Shackle - 玻璃绝缘子大扣环
    5. Glass Insulator Small Shackle - 玻璃绝缘子小扣环
    6. Glass Insulator Tower Shackle - 玻璃绝缘子塔扣环
    7. Lightning Rod Shackle - 防雷接地线扣环
    8. Lightning Rod Suspension - 防雷悬挂装置
    9. Tower ID Plate - 塔身标识牌
    10. Polymer Insulator - 聚合物绝缘子
    11. Polymer Insulator Lower Shackle - 聚合物绝缘子下部扣环
    12. Polymer Insulator Upper Shackle - 聚合物绝缘子上部扣环
    13. Polymer Insulator Tower Shackle - 聚合物绝缘子塔扣环
    14. Spacer - 隔板
    15. Vari-grip - 可变夹具
    16. Yoke - 铁箍
    17. Yoke Suspension - 铁箍悬挂装置

数据集结构示例

假设数据集的根目录为 power_inspection_dataset,其结构可能如下所示:

power_inspection_dataset/
├── images/
│   ├── image_0001.jpg
│   ├── image_0002.jpg
│   └── ...
├── annotations/
│   ├── image_0001.json
│   ├── image_0002.json
│   └── ...
└── data.yaml  # 数据集配置文件

数据集配置文件 data.yaml

创建一个 data.yaml 文件来描述您的数据集。这里假设数据集被放置在一个名为 power_inspection_dataset 的目录中,且包含 imagesannotations 子目录。

# data.yaml 文件
train: ../power_inspection_dataset/images/train/
val: ../power_inspection_dataset/images/val/
test: ../power_inspection_dataset/images/test/

nc: 17  # number of classes
names: ['Spiral Damper', 'Stockbridge Damper', 'Glass Insulator', 'Glass Insulator Big Shackle', 
        'Glass Insulator Small Shackle', 'Glass Insulator Tower Shackle', 'Lightning Rod Shackle',
        'Lightning Rod Suspension', 'Tower ID Plate', 'Polymer Insulator', 'Polymer Insulator Lower Shackle',
        'Polymer Insulator Upper Shackle', 'Polymer Insulator Tower Shackle', 'Spacer', 
        'Vari-grip', 'Yoke', 'Yoke Suspension']

关键训练代码

安装YOLOv8

如果您还没有安装YOLOv8框架,请按照官方文档执行以下命令:

git clone https://github.com/ultralytics/ultralytics.git  # 克隆YOLOv8仓库
cd ultralytics
pip install -r requirements.txt  # 安装依赖项

将JSON标注转换为YOLO格式

由于YOLO模型通常使用.txt文件存储边界框坐标,您需要将JSON标注转换为YOLO格式。可以使用第三方库如labelme2yolo或者自行编写转换脚本。下面是一个简单的转换脚本示例:

import json
import os

def convert_json_to_yolo(json_file_path, txt_file_path, img_width, img_height):
    with open(json_file_path, 'r') as json_file:
        data = json.load(json_file)
    
    with open(txt_file_path, 'w') as txt_file:
        for shape in data['shapes']:
            label = shape['label']
            points = shape['points']
            xmin, ymin = points[0]
            xmax, ymax = points[1]
            
            # 将坐标转换为YOLO格式
            x_center = (xmin + xmax) / 2.0
            y_center = (ymin + ymax) / 2.0
            width = xmax - xmin
            height = ymax - ymin
            
            x_center /= img_width
            y_center /= img_height
            width /= img_width
            height /= img_height
            
            class_id = names.index(label)
            txt_file.write(f"{class_id} {x_center:.6f} {y_center:.6f} {width:.6f} {height:.6f}\n")

# 使用方法
img_width, img_height = 1920, 1080  # 图像尺寸
convert_json_to_yolo('path/to/image_0001.json', 'path/to/image_0001.txt', img_width, img_height)

使用YOLOv8训练

使用以下命令开始训练模型:

cd ultralytics
python train.py --img 1080 --batch 16 --epochs 100 --data ../power_inspection_dataset/data.yaml --weights yolov8m.pt --cache

自定义训练脚本

如果需要更详细的控制,可以编写一个Python脚本来执行训练过程。以下是一个简单的脚本示例:

import torch
from ultralytics import YOLO  # 使用YOLOv8的API

def main():
    device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
    data_yaml = '../power_inspection_dataset/data.yaml'
    
    # 加载预训练模型
    model = YOLO('yolov8m.pt').to(device)  # 使用YOLOv8m作为基础模型
    
    # 设置训练参数
    epochs = 100
    batch_size = 16
    img_size = 1080
    
    # 开始训练
    model.train(data=data_yaml, epochs=epochs, batch=batch_size, imgsz=img_size, device=device)
    
    # 保存模型
    model.save('trained_model.pt')
    print('Training complete.')

if __name__ == '__main__':
    main()

注意事项

  • 数据一致性:确保所有图像和标签的大小一致,并且标签的格式符合模型要求。
  • 标签格式:确保JSON标注正确转换为YOLO格式的.txt标签文件。
  • 数据集划分:在实际使用中,建议将数据集进一步划分为训练集、验证集和测试集,以评估模型性能。
  • 超参数调整:根据实际训练情况调整学习率、批次大小等超参数。

测试模型

在训练完成后,您可以使用以下命令测试模型的性能:

python detect.py --weights runs/train/exp/weights/best.pt --img 1080 --conf 0.4 --source ../power_inspection_dataset/images/val/

使用预训练模型进行测试

如果您已经有了训练好的模型权重文件,可以直接使用它来进行测试。假设权重文件名为 best.pt,可以使用以下命令:

python detect.py --weights best.pt --img 1080 --conf 0.4 --source ../power_inspection_dataset/images/val/

总结

这个示例展示了如何使用YOLOv8框架训练一个基于无人机视角电力巡检资产检测的数据集。您可以根据自己的需求调整脚本中的参数和逻辑。通过使用这个数据集和相应的训练代码,您可以有效地训练出一个能够在多种条件下检测电力资产的模型。在实际应用中,可以根据具体需求调整模型结构和训练参数。此外,提供的训练代码可以让您快速启动训练流程,并获得良好的检测效果。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值