风电叶片缺陷检测数据集,共1300余张超高分辨率(5000×4000)无人机图像,涵盖各种缺陷包括:后缘裂纹、因雷击导致的红色表面裂纹、因雷击导致的白色表面裂纹、前缘侵蚀和尖端裂纹。各种污染物包括:鸟类、航空燃油(油渍)、污迹、附着的沙子和昆虫。4.7GB
如何使用YOLOv5到YOLOv10来训练一个包含1300余张超高分辨率(5000×4000)无人机图像的风电叶片缺陷检测数据集,并附上详细的训练代码和步骤。这个数据集涵盖了多种缺陷类型和污染物。
数据集描述
-
数据量:1300余张超高分辨率(5000×4000)无人机图像
-
类别:
- 后缘裂纹(Trailing Edge Crack)
- 因雷击导致的红色表面裂纹(Red Surface Crack from Lightning)
- 因雷击导致的白色表面裂纹(White Surface Crack from Lightning)
- 前缘侵蚀(Leading Edge Erosion)
- 尖端裂纹(Tip Crack)
- 鸟类(Birds)
- 航空燃油(油渍)(Aviation Fuel Stain)
- 污迹(Stains)
- 附着的沙子(Attached Sand)
- 昆虫(Insects)
-
标注:每张图像都使用边界框进行精心注释。
-
数据大小:4.7GB
数据集组织
假设你的数据集目录结构如下:
wind_turbine_blade_defect_dataset/
├── train/
│ ├── images/
│ └── labels/
├── valid/
│ ├── images/
│ └── labels/
├── test/
│ ├── images/
│ └── labels/
└── data.yaml # 数据配置文件
其中:
train/
包含训练集的图像和TXT标签文件。valid/
包含验证集的图像和TXT标签文件。test/
包含测试集的图像和TXT标签文件。data.yaml
包含数据配置信息。
数据配置文件
创建或确认data.yaml
文件是否正确配置了数据集路径和类别信息:
train: ./train/images/ # 训练集图像路径
val: ./valid/images/ # 验证集图像路径
test: ./test/images/ # 测试集图像路径
# Classes
nc: 10 # 类别数量
names:
- trailing_edge_crack
- red_surface_crack_from_lightning
- white_surface_crack_from_lightning
- leading_edge_erosion
- tip_crack
- birds
- aviation_fuel_stain
- stains
- attached_sand
- insects # 类别名称列表
数据准备
假设你的数据集已经准备好,并且每个图像都有对应的YOLO格式的TXT标签文件。如果还没有准备好,请确保将VOC格式的XML文件转换为YOLO格式的TXT文件,可以参考之前提供的脚本进行转换。
安装YOLOv5
如果你还没有安装YOLOv5,可以使用以下命令安装:
pip install yolov5
训练模型
由于图像分辨率非常高(5000×4000),直接训练可能会导致内存不足等问题。因此,建议先对图像进行下采样,或者在训练时动态调整图像大小。这里我们以640×640为例进行训练。
下采样图像(可选)
你可以使用以下Python脚本来批量下采样图像:
import os
from PIL import Image
def downsample_images(input_dir, output_dir, target_size=(640, 640)):
if not os.path.exists(output_dir):
os.makedirs(output_dir)
for filename in os.listdir(input_dir):
if filename.endswith(('.png', '.jpg', '.jpeg')):
img_path = os.path.join(input_dir, filename)
with Image.open(img_path) as img:
img_resized = img.resize(target_size, Image.ANTIALIAS)
img_resized.save(os.path.join(output_dir, filename))
# 使用示例
downsample_images('./train/images/', './train/images_downsampled/')
downsample_images('./valid/images/', './valid/images_downsampled/')
downsample_images('./test/images/', './test/images_downsampled/')
然后更新data.yaml
中的路径:
train: ./train/images_downsampled/ # 训练集图像路径
val: ./valid/images_downsampled/ # 验证集图像路径
test: ./test/images_downsampled/ # 测试集图像路径
开始训练
使用YOLOv5训练模型的命令非常简单,你可以直接使用以下命令开始训练:
cd path/to/wind_turbine_blade_defect_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进行训练,可以按照以下步骤操作:
-
安装YOLOv10:首先需要确认YOLOv10是否已经发布,并且是否有可用的开源实现。目前YOLOv8是最新的公开版本,如果YOLOv10已经发布并且有可用的实现,可以按照类似的方式安装和使用。
-
使用YOLOv10训练:假设YOLOv10已经发布并且可用,可以使用以下命令进行训练:
cd path/to/wind_turbine_blade_defect_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来训练一个风电叶片缺陷检测数据集,并使用训练好的模型进行预测。