如何训练自己的数据集?深度学习目标检测算法使用YOLOv5训练_输电线路缺陷图像检测数据集权重 识别检测输电线路导线散股和塔材锈蚀


使用YOLOv5到YOLOv10来训练——导线散股和塔材锈蚀两类缺陷的输电线路图像检测数据


在这里插入图片描述

如何使用YOLOv5到YOLOv10来训练一个包含导线散股和塔材锈蚀两类缺陷的输电线路图像检测数据集

:训练代码和步骤。

在这里插入图片描述

数据量:2399张
导线散股(Conductor Loosening):992张
塔材锈蚀(Tower Corrosion):1407张
类别:2类
Conductor Loosening
Tower Corrosion
标注:XML标注TXT标注文件
在这里插入图片描述

数据集组织
假设你的数据集目录结构如下

transmission_line_defect_detection_dataset/
├── train/
│   ├── images/
│   └── labels/
├── valid/
│   ├── images/
│   └── labels/
└── data.yaml  # 数据配置文件

在这里插入图片描述

其中:

train/ 包含训练集的图像和TXT标签文件。
valid/ 包含验证集的图像和TXT标签文件。
data.yaml 包含数据配置信息。
数据配置文件
创建或确认data.yaml文件是否正确配置了数据集路径和类别信息:

train: ./train/images/  # 训练集图像路径
val: ./valid/images/  # 验证集图像路径
test: ./test/images/  # 测试集图像路径(如果有)

Classes

nc: 2 # 类别数量
names: [‘conductor_loosening’, ‘tower_corrosion’] # 类别名称列表
数据准备
如果你的数据集中有VOC格式的标签文件,并且需要转换为YOLO格式的TXT文件,请参考以下脚本进行转换。如果已经有了YOLO格式的标签文件,则可以直接进入下一步。

转换VOC格式到YOLO格式
你可以使用以下Python脚本来将VOC格式的XML文件转换为YOLO格式的TXT文件:

import xml.etree.ElementTree as ET
import os

def convert_voc_to_yolo(xml_file, img_width, img_height):
    tree = ET.parse(xml_file)
    root = tree.getroot()
    yolo_lines = []

    for obj in root.findall('object'):
        name = obj.find('name').text
        bndbox = obj.find('bndbox')
        xmin = int(bndbox.find('xmin').text)
        ymin = int(bndbox.find('ymin').text)
        xmax = int(bndbox.find('xmax').text)
        ymax = int(bndbox.find('ymax').text)

        # 计算YOLO格式的坐标
        x_center = (xmin + xmax) / 2.0 / img_width
        y_center = (ymin + ymax) / 2.0 / img_height
        width = (xmax - xmin) / img_width
        height = (ymax - ymin) / img_height

        class_id = 0 if name == 'conductor_loosening' else 1
        yolo_lines.append(f"{class_id} {x_center} {y_center} {width} {height}\n")

    return yolo_lines

def convert_all_voc_to_yolo(voc_dir, txt_dir, image_dir):
    for xml_file in os.listdir(voc_dir):
        if xml_file.endswith('.xml'):
            xml_path = os.path.join(voc_dir, xml_file)
            txt_path = os.path.join(txt_dir, xml_file.replace('.xml', '.txt'))
            image_path = os.path.join(image_dir, xml_file.replace('.xml', '.jpg'))

            from PIL import Image
            with Image.open(image_path) as img:
                img_width, img_height = img.size

            yolo_lines = convert_voc_to_yolo(xml_path, img_width, img_height)
            with open(txt_path, 'w') as f:
                f.writelines(yolo_lines)

使用示例

convert_all_voc_to_yolo('./train/labels/', './train/labels/', './train/images/')
convert_all_voc_to_yolo('./valid/labels/', './valid/labels/', './valid/images/')

安装YOLOv5
如果你还没有安装YOLOv5,可以使用以下命令安装:

pip install yolov5

训练模型
使用YOLOv5训练模型的命令非常简单,你可以直接使用以下命令开始训练:

cd path/to/transmission_line_defect_detection_dataset/

克隆YOLOv5仓库

git clone https://github.com/ultralytics/yolov5.git
cd yolov5

下载预训练权重

wget https://github.com/ultralytics/yolov5/releases/download/v5.0/yolov5s.pt

开始训练

python train.py --img 640 --batch 16 --epochs 100 --data ../data.yaml --weights yolov5s.pt --cache

在这个命令中:

–img 640:输入图像的大小。
–batch 16:批量大小。
–epochs 100:训练轮数。
–data …/data.yaml:指定数据配置文件。
–weights yolov5s.pt:指定预训练权重。
–cache:使用缓存以加快训练速度。

模型评估

训练完成后,可以使用以下命令评估模型在验证集上的表现:

python val.py --data ../data.yaml --weights runs/train/exp/weights/best.pt --img 640

这里的runs/train/exp/weights/best.pt是训练过程中产生的最佳模型权重文件。

模型预测
你可以使用训练好的模型对新图像进行预测:

python detect.py --source path/to/your/image.jpg --weights runs/train/exp/weights/best.pt --img 640 --conf 0.4 --iou 0.5
查看训练结果
训练过程中的日志和结果会保存在runs/train/目录下,你可以查看训练过程中的损失、精度等信息。

升级到YOLOv10
如果你想要使用最新的YOLOv10进行训练,可以按照以下步骤操作:

cd path/to/transmission_line_defect_detection_dataset/

克隆YOLOv10仓库

git clone https://github.com/ultralytics/yolov10.git
cd yolov10

下载预训练权重

wget https://github.com/ultralytics/yolov10/releases/download/v10.0/yolov10s.pt

开始训练

python train.py --img 640 --batch 16 --epochs 100 --data ../data.yaml --weights yolov10s.pt --cache

注意事项
数据集质量:确保数据集的质量,包括清晰度、标注准确性等。
模型选择:可以选择更强大的模型版本(如YOLOv5m、YOLOv5l等)以提高性能。
超参数调整:根据实际情况调整超参数,如批量大小(batch-size)、图像大小(imgsz)等。
监控性能:训练过程中监控损失函数和mAP指标,确保模型收敛。

仅供参考,使用YOLOv5来训练一个输电线路缺陷检测数据集,并使用训练好的模型进行预测。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值