【导读】 自主无人机巡检风电叶片时,需要准确检测风机及其关键特征(叶尖、塔顶、轮毂等)来实现安全定位和避障。然而,现有方法依赖人工标注的真实图像,在天气、光照、风机型号等多样性方面受到限制。德国亚琛工业大学(RWTH Aachen)自动控制研究所提出了一种基于合成数据的解决方案:通过可定制的渲染工具箱生成带标注的合成风机图像,完全不使用真实图像进行训练,仅用合成数据训练 YOLOv11 关键点检测网络,并设计了针对叶尖排列不变性的改进损失函数。在83张从未见过的真实风机图像上,该方法的 Pose mAP50-95 达到 0.97。
论文标题: Wind Turbine Feature Detection Using Deep Learning and Synthetic Data
作者: Arash Shahirpour, Jakob Gebler, Manuel Sanders, Tim Reuscher
机构: Institute of Automatic Control (IRT), RWTH Aachen University
论文链接: arXiv:2507.21611v1
一、真实数据标注贵且多样性不足------为什么要用合成数据?
自主无人机巡检风电叶片时,无人机需要根据 RGB 相机图像提取风机的关键特征,以估计风机相对于无人机的位置和偏航角,从而实现安全导航和精准定位。
论文指出现有方法存在三个核心限制:
- 多样性不足:现有数据集通常在单一风电场、单一相机条件下采集,在天气、光照、风机型号和背景复杂度方面的覆盖有限,影响模型的泛化能力;
- 标注成本高:人工标注不适合大规模数据集(如10,000张以上),且难以扩展;
- 仅针对静止风机:部分方法仅处理叶片停止状态的风机,不适用于运行中的风机巡检。
然而,风机具有结构化、大致均匀的几何形态和可预测的外观,这使得用合成渲染图像替代真实图像进行训练在理论上是可行的。合成数据还可以系统性地控制和变化光照、背景复杂度和风机配置等视觉因素。
二、方法:合成数据生成 + 改进损失函数的 YOLOv11
2.1 合成数据生成工具箱

图片来源于原论文
论文基于 BlenderProc2(Blender 的 Python 接口)开发了一套可定制的渲染工具箱,用于生成带标注的合成风机图像。工具箱的核心设计如下:
风机模型多样性: 在初始 CAD 模型基础上扩展了多种变体,包含不同的叶片厚度和叶片长度。
背景多样性: 先以透明背景渲染风机图像,再与从 Kaggle 获取的 4319 张随机风景图像合成,模拟风机在自然环境中的真实视觉背景。
可配置参数: 工具箱支持以下参数的灵活配置:
| 参数类别 | 具体参数 |
|---|---|
| 光照 | 太阳方位角、高度角、灰尘密度 |
| 风机布局 | 每张图像中的风机数量(1-4台)、位置 |
| 风机姿态 | 偏航角 ψ、叶片旋转角 ϕ |
| 相机 | 离地高度、距原点距离、焦距,以及可选的横滚/俯仰/偏航角 |
数据增强: 在渲染图像上还叠加了以下增强操作:
- HSV 色彩偏移(前景和背景分别独立偏移)
- JPEG 压缩伪影(40%的图像)
- 高斯随机噪声(40%的图像)
- 10%的图像使用随机噪声背景
论文共生成了 12,977 张训练图像 和 3,273 张验证图像,渲染耗时约 270 分钟。
2.2 关键点定义

图片来源于原论文
论文定义了风机的 7 个关键特征点:3 个叶尖、轮毂前后端各1个、塔顶和塔底各1个。这些关键点可用于估计风机相对于无人机的位置和偏航角。
2.3 改进的损失函数:叶尖排列不变性
这是论文的一个技术亮点。在关键点检测中,每个关键点需要分配唯一索引。论文最初按角度区间([0°,120°)、[120°,240°)、[240°,360°))为三个叶尖分配固定标签。但这种方式存在两个问题:
- 当风机偏航旋转180°时,区间标签需要重新分配,否则标签对齐失败;
- 区间硬边界附近的预测会产生较大的损失惩罚。
解决方案: 论文修改了三个叶尖的 OKS(Object Keypoint Similarity)损失函数。对于预测的三个叶尖坐标和真实坐标,遍历所有 3! = 6 种排列,选择使欧氏距离之和最小的排列作为最优匹配:
π = arg min 求和 ||P_πi · p̂ − p||²
然后使用最优排列后的预测坐标计算 OKS 损失。这使得损失函数对叶尖的固定排序不变,网络可以独立于角度位置学习叶尖的视觉定位。
2.4 模型选择
论文使用 YOLOv11 的关键点检测变体,分别训练了两个尺寸的模型:
| 模型 | 参数量 | 训练时间 |
|---|---|---|
| YOLOv11-s | 9.4M | 4小时22分钟 |
| YOLOv11-m | 20.1M | 8小时4分钟 |
均训练 150 个 epoch,硬件为 AMD Ryzen 9 3900X + NVIDIA RTX 3080(10GB)。
三、实验结果
3.1 验证数据集
论文使用两个验证集:
- 合成验证集:3,273 张工具箱生成的图像;
- 真实验证集 :83 张从网络来源随机选取的真实风机图像(来自 Unsplash、Kaggle、Adobe Stock 等),手动裁剪和标注。真实验证集中的风机型号在训练中从未出现,与训练数据没有刻意的相似性。
3.2 检测性能
论文 Table 2 的完整数据如下:
| 模型 | 数据集 | mAP50 Box | mAP50-95 Box | mAP50 Pose | mAP50-95 Pose |
|---|---|---|---|---|---|
| YOLOv11-s | 合成 | 0.9897 | 0.9252 | 0.9881 | 0.9731 |
| YOLOv11-s | 真实 | 0.9929 | 0.8724 | 0.9929 | 0.9722 |
| YOLOv11-m | 合成 | 0.9906 | 0.9419 | 0.9897 | 0.9782 |
| YOLOv11-m | 真实 | 0.9910 | 0.8696 | 0.9920 | 0.9703 |

图片来源于原论文
关键发现:
- 两个模型在真实图像上的 Pose mAP50-95 均超过 0.97(s: 0.9722, m: 0.9703),而它们完全没有见过任何真实训练图像,验证了合成数据训练的强泛化能力;
- mAP50-95 Box 在真实数据上有所下降(从合成的 0.92-0.94 降至真实的 0.87),论文解释这是因为边界框检测在高 IoU 阈值下对大小和对齐的微小偏差更敏感;相比之下,关键点检测(Pose)在高阈值下仍保持稳定;
- 真实数据上的部分指标略高于合成数据,论文认为这是由于真实验证集仅83张图像,规模有限,无法达到合成数据集同等的复杂度和多样性,扩大真实数据集可能会导致更低但更真实的分数;
- s 和 m 模型精度相当(真实数据上 s 甚至略高0.3%),论文推测在更大、更多样化的场景中 m 模型可能表现更好。
3.3 推理速度
| 模型 | 推理时间 | 端到端延迟 |
|---|---|---|
| YOLOv11-s | 2.0 ms | 2.4 ms |
| YOLOv11-m | 4.6 ms | 5.1 ms |
s 模型的推理速度显著更快,适合机载部署场景中对算力和功耗敏感的需求。
四、方法优势与未来方向
优势
- 零真实数据训练:完全基于合成数据训练,消除了昂贵的真实数据采集和人工标注需求;
- 强泛化能力:在从未见过的真实风机型号上达到 Pose mAP50-95 = 0.97,验证了合成数据在结构化目标检测场景中可替代真实数据;
- 叶尖排列不变损失函数:通过最优排列匹配解决了旋转对称关键点的标签分配问题;
- 开源可复现:渲染工具箱和训练模型均已在 GitHub 公开发布;
- 轻量高效:s 模型仅 9.4M 参数、2.4 ms 端到端延迟,适合无人机机载部署。
未来方向
- 论文指出当前验证仅基于静态图像,尚未在视频帧上进行测试,视频中可能存在的运动模糊等因素需要进一步验证;
- 计划扩展工具箱以从预测中提取数值数据,如偏航角和叶片旋转速度;
- 将在更大的真实数据集和视频数据上进行测试。
五、总结
本文提出了一种基于合成数据训练 YOLOv11 关键点检测网络的方法,用于自主无人机巡检中的风机特征检测。通过可定制的 BlenderProc2 渲染工具箱生成多样化的合成训练图像,并设计了叶尖排列不变的改进损失函数,模型在完全不使用真实训练数据的情况下,在83张未见过的真实风机图像上达到了 Pose mAP50-95 = 0.97。该方法受到德国联邦经济与能源部 AutoFlow 项目资助,渲染工具箱和模型均已开源。结果表明,在风机这类具有结构化几何形态的目标上,精心设计的合成数据可以有效替代真实数据进行模型训练。