输电线路悬垂线夹,耐张线夹检测无人机航拍图像数据集,总共1900左右图片,悬垂线夹识别,标注为voc格式
如何使用YOLOv8模型训练输电线路悬垂线夹和耐张线夹检测的无人机航拍图像数据集。我们将从数据集的准备、模型的加载、训练配置和训练过程等方面进行详细说明。由于你的数据集标签格式为VOC格式,我们需要先将其转换为YOLO格式。
1. 数据集准备
数据集概述
- 数据集名称: 输电线路悬垂线夹和耐张线夹检测数据集
- 数据集来源: 无人机航拍
- 数据集内容: 包含约1900张图像,每张图像都有对应的标签文件,标签文件采用VOC格式。
- 检测目标: 悬垂线夹
- 数据集划分: 按8:1:1的比例划分为训练集、验证集和测试集,即1520张训练集、190张验证集和190张测试集。
数据集目录结构
Power-Line-Insulator-Detection-Dataset/
├── images/
│ ├── train/
│ │ ├── image1.jpg
│ │ ├── image2.jpg
│ │ └── ...
│ ├── val/
│ │ ├── image1.jpg
│ │ ├── image2.jpg
│ │ └── ...
│ └── test/
│ ├── image1.jpg
│ ├── image2.jpg
│ └── ...
└── labels/
├── train/
│ ├── image1.txt
│ ├── image2.txt
│ └── ...
├── val/
│ ├── image1.txt
│ ├── image2.txt
│ └── ...
└── test/
├── image1.txt
├── image2.txt
└── ...
2. VOC转YOLO格式
首先,我们需要编写一个脚本来将VOC格式的标签文件转换为YOLO格式的标签文件。
import os
import xml.etree.ElementTree as ET
import glob
def convert(size, box):
dw = 1. / size[0]
dh = 1. / size[1]
x = (box[0] + box[1]) / 2.0
y = (box[2] + box[3]) / 2.0
w = box[1] - box[0]
h = box[3] - box[2]
x = x * dw
w = w * dw
y = y * dh
h = h * dh
return (x, y, w, h)
def convert_annotation(xml_file, txt_file, class_dict):
tree = ET.parse(xml_file)
root = tree.getroot()
size = root.find('size')
w = int(size.find('width').text)
h = int(size.find