太阳能可见光光伏电池板划痕数据集。用于目标检测,缺陷检测。
用于目标检测,缺陷检测。包含2648张图片,2648个yolo格式的标签,单类别,标注了划痕的位置。已分为测试集训练集验证集,可直接训练。有数据增强。
包含2648张图片,2648个yolo格式的标签,单类别,标注了划痕的位置。
已分为测试集训练集验证集,可直接训练。
有数据增强。
太阳能可见光光伏电池板划痕数据集(Solar Panel Scratch Detection Dataset, SPSD)
摘要
太阳能可见光光伏电池板划痕数据集(SPSD)是一个专门用于目标检测和缺陷检测的数据集,旨在识别太阳能光伏电池板上的划痕。该数据集包含2648张高质量的可见光图像,每张图像都标注了划痕的位置。数据集已经按照YOLO格式整理,并且划分好了训练集、验证集和测试集,可以直接用于训练YOLO系列的目标检测模型。此外,数据集还提供了数据增强功能,以提高模型的泛化能力。
数据集特点
- 单类别:数据集中只有一个类别,即
Scratch
。 - 高质量图像:图像分辨率高,清晰度好,能够准确反映光伏电池板上的划痕情况。
- 详细的标注信息:每张图像都经过专业人员的手动标注,确保了标注框的准确性。
- 数据增强:为了提高模型的鲁棒性和泛化能力,数据集提供了多种数据增强技术,如随机旋转、翻转、亮度调整等。
- 易于使用:数据集已经按照YOLO格式整理,并且划分好了训练集、验证集和测试集,可以直接用于训练YOLO系列的目标检测模型。
数据集构成
- 总图像数量:2648张
- 类别数:1类(
Scratch
) - 数据集划分:
- 训练集: 约1753张
- 验证集: 约400张
- 测试集: 约495张
示例代码
以下是一个详细的Python脚本示例,用于加载数据集中的一对图像-标签对,并可视化其中的标注信息。此外,还包括了如何使用YOLOv8进行训练的基本步骤。
加载并可视化图像与标签
import os
import cv2
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle
# 数据集目录路径
data_dir = 'path/to/spsd_dataset'
train_image_dir = os.path.join(data_dir, 'images/train')
train_label_dir = os.path.join(data_dir, 'labels/train')
# 选取一张训练图像及其对应标签
image_files = os.listdir(train_image_dir)
image_file = image_files[0] # 假设取第一张图
label_file = os.path.splitext(image_file)[0] + '.txt' # 假设是TXT格式的标签
image_path = os.path.join(train_image_dir, image_file)
label_path = os.path.join(train_label_dir, label_file)
# 加载图像
image = cv2.imread(image_path, cv2.IMREAD_COLOR)
height, width, _ = image.shape
# 解析YOLO格式标签
def parse_yolo_label(label_path, image_width, image_height):
bboxes = []
with open(label_path, 'r') as f:
lines = f.readlines()
for line in lines:
class_id, x_center, y_center, box_width, box_height = map(float, line.strip().split())
x_min = int((x_center - box_width / 2) * image_width)
y_min = int((y_center - box_height / 2) * image_height)
box_width = int(box_width * image_width)
box_height = int(box_height * image_height)
bboxes.append((class_id, x_min, y_min, box_width, box_height))
return bboxes
# 解析标签
bboxes = parse_yolo_label(label_path, width, height)
# 可视化标注
fig, ax = plt.subplots(figsize=(10, 10))
ax.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
colors = ['#FFA500'] # 仅有一个类别,选择一个颜色
names = ['Scratch'] # 类别名称
for bbox, color_name in zip(bboxes, colors):
class_id, x, y, w, h = bbox
rect = Rectangle((x, y), w, h, linewidth=2, edgecolor=color_name, facecolor='none')
ax.add_patch(rect)
ax.text(x, y - 10, names[int(class_id)], color=color_name, fontsize=8)
plt.title('Solar Panel Scratch Detection Dataset')
plt.axis('off')
plt.show()
使用YOLOv8进行训练
假设你已经安装了YOLOv8,并且配置文件(例如spdd.yaml
)已经准备好,以下是使用YOLOv8进行训练的基本步骤:
-
克隆YOLOv8仓库(如果尚未完成):
git clone https://github.com/ultralytics/ultralytics cd ultralytics
-
安装依赖:
pip install -r requirements.txt
-
创建数据配置文件(如果尚未创建): 创建一个名为
spsd.yaml
的文件,内容如下:train: path/to/spsd_dataset/images/train val: path/to/spsd_dataset/images/val test: path/to/spsd_dataset/images/test nc: 1 # 类别数 names: ['Scratch']
-
开始训练:
yolo detect train data=spsd.yaml model=yolov8n.pt epochs=100 imgsz=640
其中,
--imgsz 640
指定输入图像大小,epochs 100
指定训练轮数,model yolov8n.pt
指定预训练权重。 -
评估模型: 训练完成后,你可以使用以下命令来评估模型性能:
yolo detect val data=spsd.yaml model=runs/detect/train/weights/best.pt imgsz=640
-
推理和可视化: 你还可以使用训练好的模型进行推理,并可视化结果:
yolo detect predict source=path/to/your_test_images model=runs/detect/train/weights/best.pt save=True
数据增强
为了提高模型的泛化能力,可以使用多种数据增强技术。YOLOv8内置了丰富的数据增强选项,可以通过修改配置文件或命令行参数来启用这些增强方法。以下是一些常见的数据增强技术:
- 随机水平翻转:
hflip
- 随机垂直翻转:
vflip
- 随机旋转:
rotate
- 随机缩放:
scale
- 随机裁剪:
random_perspective
- 颜色抖动:
color_jitter
在YOLOv8的配置文件中,可以这样设置数据增强:
augmentations:
- name: HFlip
p: 0.5
- name: VFlip
p: 0.5
- name: Rotate
p: 0.5
degrees: 10
- name: ColorJitter
p: 0.5
brightness: [0.5, 1.5]
contrast: [0.5, 1.5]
saturation: [0.5, 1.5]
hue: [0.5, 1.5]
通过上述步骤,你可以轻松地使用这个数据集来训练一个高效的太阳能光伏电池板划痕检测模型。