输电通道隐患检测数据集 4类 共有图片数据集1078张;已处理成yolo格式、voc格式,可直接用于训练;标签类别及标签个数:nest: 540;kite: 103;balloon: 88;

输电通道隐患检测数据集 4类 共有图片数据集1078张;已处理成yolo格式、voc格式,可直接用于训练;标签类别及标签个数:nest: 540;kite: 103;balloon: 88;

 

输电通道隐患检测数据集

项目概述

本数据集是一个专门用于输电通道隐患检测的数据集,包含1078张图像。这些图像已经处理成YOLO格式和VOC格式的标注文件,可以直接用于训练深度学习模型。数据集涵盖了四类常见的输电通道隐患:鸟巢、风筝、气球和垃圾。所有标注数据经过处理,确保了标注的质量,适用于多种目标检测任务,特别是涉及电力设施管理和维护的应用。

数据集特点

  • 高质量标注:所有标注数据经过处理,确保了标注质量。
  • 多样化类别:涵盖四类常见的输电通道隐患。
  • 多用途:适用于多种目标检测任务,特别是涉及电力设施管理和维护的应用。
  • 易于使用:提供了详细的说明文档和预处理好的标注文件,方便用户快速上手。

数据集结构

Power_Transmission_Hazard_Dataset/
├── images/                               # 图像文件夹
│   ├── train/                            # 训练集图像
│   ├── val/                              # 验证集图像
│   └── test/                             # 测试集图像
├── labels/                               # 标注文件夹
│   ├── train/                            # 训练集标注 (YOLO 和 VOC 格式)
│   ├── val/                              # 验证集标注 (YOLO 和 VOC 格式)
│   └── test/                             # 测试集标注 (YOLO 和 VOC 格式)
├── README.md                             # 项目说明文档
└── data.yaml                             # 数据集配置文件

数据集内容

  • 总数据量:1078张图像。
  • 标注格式:YOLO格式和VOC格式。
  • 标注对象:各类输电通道隐患的位置。
  • 类别及数量
类别名标注个数
鸟巢 (Nest)540
风筝 (Kite)103
气球 (Balloon)88
垃圾 (Trash)76
  • 总计
    • 图像总数:1078张
    • 标注总数:807个
    • 总类别数 (nc):4类

使用说明

  1. 环境准备

    • 确保安装了Python及其相关库(如torchopencv-pythonmatplotlib等)。
    • 下载并解压数据集到本地目录。
    • 安装YOLOv5所需的依赖项:
      git clone https://github.com/ultralytics/yolov5
      cd yolov5
      pip install -r requirements.txt
  2. 加载数据集

    • 可以使用常见的编程语言(如Python)来加载和处理数据集。
    • 示例代码如下:
import os
import json
import pandas as pd
from pathlib import Path
from yolov5.utils.datasets import LoadImages, LoadImagesAndLabels
from yolov5.models.experimental import attempt_load
from yolov5.utils.general import non_max_suppression, scale_coords
from yolov5.utils.torch_utils import select_device
import cv2
import numpy as np

# 定义数据集路径
dataset_path = 'Power_Transmission_Hazard_Dataset'

# 加载图像和标注
def load_dataset(folder):
    images_folder = os.path.join(dataset_path, 'images', folder)
    labels_folder = os.path.join(dataset_path, 'labels', folder)
    
    dataset = []
    for image_file in os.listdir(images_folder):
        if image_file.endswith('.jpg') or image_file.endswith('.png'):
            image_path = os.path.join(images_folder, image_file)
            label_path = os.path.join(labels_folder, image_file.replace('.jpg', '.txt').replace('.png', '.txt'))
            
            with open(label_path, 'r') as f:
                labels = [line.strip().split() for line in f.readlines()]
            
            dataset.append({
                'image_path': image_path,
                'labels': labels
            })
    
    return dataset

# 示例:加载训练集
train_dataset = load_dataset('train')
print(f"Number of training images: {len(train_dataset)}")
  1. 模型训练
    • 使用预训练的YOLOv5模型进行微调,或者从头开始训练。
    • 示例代码如下:
# 设置设备
device = select_device('')

# 加载预训练模型或从头开始训练
model = attempt_load('yolov5s.pt', map_location=device)  # 或者 'path/to/custom_model.pt'
model.train()

# 数据集配置文件
data_yaml = 'Power_Transmission_Hazard_Dataset/data.yaml'

# 训练参数
hyp = 'yolov5/data/hyps/hyp.scratch.yaml'  # 超参数配置文件
epochs = 100
batch_size = 16
img_size = 640

# 开始训练
%cd yolov5
!python train.py --img {img_size} --batch {batch_size} --epochs {epochs} --data {data_yaml} --weights yolov5s.pt
  1. 模型推理
    • 使用训练好的模型进行推理,并在图像上绘制检测结果。
    • 示例代码如下:
def detect(image_path, model, device, img_size=640):
    img0 = cv2.imread(image_path)
    img = letterbox(img0, new_shape=img_size)[0]
    img = img[:, :, ::-1].transpose(2, 0, 1)  # BGR to RGB, to 3x416x416
    img = np.ascontiguousarray(img)

    img = torch.from_numpy(img).to(device)
    img = img.half() if half else img.float()  # uint8 to fp16/32
    img /= 255.0  # 0 - 255 to 0.0 - 1.0
    if img.ndimension() == 3:
        img = img.unsqueeze(0)

    # 推理
    with torch.no_grad():
        pred = model(img, augment=False)[0]

    # NMS
    pred = non_max_suppression(pred, 0.4, 0.5, classes=None, agnostic=False)
    for i, det in enumerate(pred):  # 每个图像的检测结果
        if det is not None and len(det):
            det[:, :4] = scale_coords(img.shape[2:], det[:, :4], img0.shape).round()
            for *xyxy, conf, cls in reversed(det):
                label = f'{model.names[int(cls)]} {conf:.2f}'
                plot_one_box(xyxy, img0, label=label, color=(0, 255, 0), line_thickness=3)

    return img0

# 示例:检测单张图像
result_img = detect('path/to/image.jpg', model, device)
cv2.imshow('Detection Result', result_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
  1. 性能评估
    • 使用测试集进行性能评估,计算mAP、召回率、精确率等指标。
    • 可以使用YOLOv5自带的评估脚本:
      python val.py --data Power_Transmission_Hazard_Dataset/data.yaml --weights best.pt --img 640

注意事项

  • 数据格式:确保图像文件和标注文件的命名一致,以便正确匹配。
  • 硬件要求:建议使用GPU进行训练和推理,以加快处理速度。如果没有足够的计算资源,可以考虑使用云服务提供商的GPU实例。
  • 超参数调整:根据实际情况调整网络架构、学习率、批次大小等超参数,以获得更好的性能。

应用场景

  • 电力设施管理:自动检测输电通道中的隐患,帮助管理部门及时清理和维护。
  • 智能监控:结合无人机巡检系统,实现对输电通道的实时监控和预警。
  • 科研教育:用于电力设施安全研究和教学,提高公众对电力设施保护的认识。

关键代码示例

1. 加载数据集
import os
import json
import pandas as pd
from pathlib import Path
from yolov5.utils.datasets import LoadImages, LoadImagesAndLabels
from yolov5.models.experimental import attempt_load
from yolov5.utils.general import non_max_suppression, scale_coords
from yolov5.utils.torch_utils import select_device
import cv2
import numpy as np

# 定义数据集路径
dataset_path = 'Power_Transmission_Hazard_Dataset'

# 加载图像和标注
def load_dataset(folder):
    images_folder = os.path.join(dataset_path, 'images', folder)
    labels_folder = os.path.join(dataset_path, 'labels', folder)
    
    dataset = []
    for image_file in os.listdir(images_folder):
        if image_file.endswith('.jpg') or image_file.endswith('.png'):
            image_path = os.path.join(images_folder, image_file)
            label_path = os.path.join(labels_folder, image_file.replace('.jpg', '.txt').replace('.png', '.txt'))
            
            with open(label_path, 'r') as f:
                labels = [line.strip().split() for line in f.readlines()]
            
            dataset.append({
                'image_path': image_path,
                'labels': labels
            })
    
    return dataset

# 示例:加载训练集
train_dataset = load_dataset('train')
print(f"Number of training images: {len(train_dataset)}")
2. 模型训练
# 设置设备
device = select_device('')

# 加载预训练模型或从头开始训练
model = attempt_load('yolov5s.pt', map_location=device)  # 或者 'path/to/custom_model.pt'
model.train()

# 数据集配置文件
data_yaml = 'Power_Transmission_Hazard_Dataset/data.yaml'

# 训练参数
hyp = 'yolov5/data/hyps/hyp.scratch.yaml'  # 超参数配置文件
epochs = 100
batch_size = 16
img_size = 640

# 开始训练
%cd yolov5
!python train.py --img {img_size} --batch {batch_size} --epochs {epochs} --data {data_yaml} --weights yolov5s.pt
3. 模型推理
def detect(image_path, model, device, img_size=640):
    img0 = cv2.imread(image_path)
    img = letterbox(img0, new_shape=img_size)[0]
    img = img[:, :, ::-1].transpose(2, 0, 1)  # BGR to RGB, to 3x416x416
    img = np.ascontiguousarray(img)

    img = torch.from_numpy(img).to(device)
    img = img.half() if half else img.float()  # uint8 to fp16/32
    img /= 255.0  # 0 - 255 to 0.0 - 1.0
    if img.ndimension() == 3:
        img = img.unsqueeze(0)

    # 推理
    with torch.no_grad():
        pred = model(img, augment=False)[0]

    # NMS
    pred = non_max_suppression(pred, 0.4, 0.5, classes=None, agnostic=False)
    for i, det in enumerate(pred):  # 每个图像的检测结果
        if det is not None and len(det):
            det[:, :4] = scale_coords(img.shape[2:], det[:, :4], img0.shape).round()
            for *xyxy, conf, cls in reversed(det):
                label = f'{model.names[int(cls)]} {conf:.2f}'
                plot_one_box(xyxy, img0, label=label, color=(0, 255, 0), line_thickness=3)

    return img0

# 示例:检测单张图像
result_img = detect('path/to/image.jpg', model, device)
cv2.imshow('Detection Result', result_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
4. 性能评估
python val.py --data Power_Transmission_Hazard_Dataset/data.yaml --weights best.pt --img 640

希望这个数据集和关键代码示例能帮助你更好地理解和应用深度学习技术在输电通道隐患检测中的应用。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值