1. 项目缘起为什么旋转风机叶片监测是个“老大难”在风电运维领域旋转风机叶片的健康监测一直是个让人头疼的“老大难”问题。传统的监测手段比如在叶片上贴应变片、光纤光栅传感器或者安装振动传感器都需要停机、搭设高空作业平台由专业人员“爬塔”上去操作。这个过程不仅成本高昂、风险大而且停机就意味着发电损失对于动辄几兆瓦的大型风机来说每一分钟的停机都是真金白银的流失。更关键的是这些接触式传感器安装位置固定只能监测局部点对于长达几十米的叶片整体状态尤其是动态运行中的细微损伤如裂纹、前缘腐蚀、雷击损伤往往力不从心。于是非接触式的视觉监测方案应运而生。最初人们尝试在塔筒或机舱上安装固定摄像头进行观测。但这个方法局限性很大视角固定难以覆盖整个叶片旋转周期受天气、光照影响剧烈图像分辨率有限难以捕捉高速旋转中叶片的细节。直到无人机技术的成熟和AI视觉算法的突破才为这个难题带来了全新的解题思路。我们这次的项目核心目标就是验证一套“无人机AI视觉”的在线监测方案。具体来说我们想在不干扰风机正常运行不停机、不对叶片做任何物理改造不贴标的前提下仅通过无人机悬停拍摄的视频流实时、准确地识别并追踪每一个旋转的叶片并计算出其旋转频率。这个频率是评估风机传动链健康状态、叶片气动平衡性的关键参数之一。我们在一台2MW的风机上进行了现场实测最终将频率监测的误差控制在了2%以内。这听起来可能只是个数字但在工业现场这意味着我们的方法具备了工程应用的可靠性基础。2. 技术选型为什么是YOLOv5DeepSORT这对“黄金搭档”要实现上述目标技术栈的选择至关重要。整个系统的核心流程可以概括为无人机采集视频流 - 机载或边缘计算设备实时处理 - 目标检测找到叶片 - 多目标跟踪分清并追踪三个叶片 - 轨迹分析计算旋转周期。在这个链条中目标检测和多目标跟踪是承上启下的关键。我们最终锁定了YOLOv5和DeepSORT这一组合这是经过多方面权衡后的结果。2.1 目标检测器YOLOv5的“快”与“准”在工业现场尤其是无人机机载或边缘侧部署算法必须满足几个硬性条件速度快、精度高、模型小、易于部署。YOLO系列一直是实时目标检测的标杆。我们选择YOLOv5具体是YOLOv5s版本主要基于以下几点考量速度与精度的平衡YOLOv5s是YOLOv5系列中最轻量的版本在COCO数据集上能达到每秒140帧以上的推理速度在合适的硬件上同时保持不错的mAP平均精度。对于无人机拍摄的1080p或2K视频实时处理30fps是基本要求YOLOv5s完全能满足。工程化友好YOLOv5的代码库由PyTorch实现生态极其完善。它提供了从数据准备自动划分数据集、模型训练、验证到导出的完整pipeline。特别是其模型导出功能可以轻松地将PyTorch模型转换为ONNX、TensorRT、CoreML等格式方便在不同硬件平台如NVIDIA Jetson、华为Atlas、瑞芯微RK系列芯片上部署。这对于我们后续考虑将算法下沉到无人机机载计算机至关重要。自定义数据训练简便风机叶片在自然背景下是一个形状独特的长条形目标。我们需要用自己的数据集训练。YOLOv5的数据集格式YOLO格式的txt标注文件简单明了其训练脚本对新手也非常友好只需修改配置文件中的类别数和路径就能快速启动训练。注意很多人会问为什么不用更新的YOLOv8或YOLOv9在项目初期YOLOv5的社区资源、部署案例和稳定性是最丰富的。对于一个追求快速落地验证的工程项目来说成熟的工具链比追求最新的模型更有价值。当然在后续迭代中完全可以尝试更先进的模型。2.2 多目标跟踪器DeepSORT的“稳”与“清”仅仅检测出每一帧里的叶片是不够的。三个叶片外观几乎一模一样且在快速旋转中会相互遮挡、形变。我们必须能跨帧持续地追踪每一个独立的叶片为每个叶片分配一个唯一的ID并记录其运动轨迹。这就是多目标跟踪MOT的任务。DeepSORT是SORT算法的增强版其核心优势在于外观信息融合基础的SORT算法只使用卡尔曼滤波预测边界框位置并用匈牙利算法基于IoU交并比进行关联。当目标发生遮挡或快速运动时容易发生ID切换ID Switch。DeepSORT引入了深度外观描述子一个小型ReID网络为每个检测到的目标提取一个特征向量。在数据关联时同时考虑运动关联度马氏距离和外观关联度余弦距离。这使得算法在叶片短暂被塔筒遮挡或相互交错时依然能稳定地保持ID。匹配策略DeepSORT采用了级联匹配Cascade Matching策略优先匹配消失时间短的目标这进一步降低了长时间遮挡后重新出现时的ID错误。工程成熟度DeepSORT有清晰的Python实现易于与YOLOv5这样的检测器集成。我们可以将YOLOv5检测到的边界框和置信度直接喂给DeepSORT由后者完成跟踪。对于旋转叶片监测这个场景叶片目标密集、运动规律性强但速度快外观相似度高。DeepSORT利用外观特征区分相似目标的能力正好弥补了纯运动模型在高速旋转场景下的不足是实现稳定追踪、分清“谁是谁”的关键。3. 从零构建数据集制作与模型训练实战理论很美好但第一步就得面对现实没有现成的“旋转风机叶片”数据集。我们需要自己创造。3.1 数据采集无人机飞行的“艺术”采集数据不是简单飞上去拍一段就行。为了训练出鲁棒的模型数据需要覆盖多种工况不同光照清晨、正午、傍晚、阴天、逆光。叶片在强光下可能过曝在阴影下细节模糊。不同距离与角度无人机在风机安全距离外从正面、侧面等多个角度拍摄模拟不同监测位置的视角。不同背景以天空为背景、以山体为背景、以云层为背景。复杂的背景会增加检测难度。叶片状态正常旋转、缓慢启停、甚至包含少量表面污渍模拟早期损伤的镜头。我们使用大疆M300 RTK无人机搭载H20T云台相机变焦镜头在多个风电场进行了数据采集。飞行时手动控制无人机悬停在风机侧面安全区域保持相机稳定对准旋转平面录制4K/60fps的视频。这里有个关键技巧为了获得更清晰的运动目标我们使用了较高的快门速度如1/1000秒这能有效减少叶片运动模糊但需要良好的光照条件或提高ISO。3.2 数据标注枯燥但至关重要的环节我们从采集的视频中以一定的间隔如每秒抽10帧抽取图像得到数千张原始图片。标注工具我们选用LabelImg或更高效的Roboflow。标注时将每一个完整的叶片从叶根到叶尖用一个矩形框框住类别标签设为“blade”。实操心得标注叶片时框的边界要尽可能紧贴叶片轮廓但可以适当忽略极其细微的叶尖部分因为高速旋转下叶尖本身可能模糊。重点是框住叶片的主体部分。对于部分被遮挡的叶片仍然需要根据可见部分估算并标注出完整边界框这有助于模型学习遮挡情况下的识别。标注完成后数据被自动转换为YOLOv5所需的格式每张图片对应一个.txt文件文件内容为[class_id] [x_center] [y_center] [width] [height]坐标是归一化后的值。3.3 模型训练与调优我们按照8:1:1的比例划分训练集、验证集和测试集。YOLOv5的训练配置主要调整了以下几个参数img-size: 设置为640x640。这是YOLOv5的默认输入尺寸在精度和速度间取得了良好平衡。batch-size: 根据GPU显存我们用的是RTX 3080设置为16。epochs: 设置为300轮。通过观察训练曲线损失下降、mAP提升来判断是否收敛。data.yaml: 配置文件其中指定了数据集路径、类别数和类别名。开始训练python train.py --img 640 --batch 16 --epochs 300 --data ./data/blade_detection.yaml --cfg ./models/yolov5s.yaml --weights yolov5s.pt --name blade_detection_v1训练过程中我们重点关注几个指标损失曲线train/box_loss,train/obj_loss,train/cls_loss应平稳下降val/下的对应损失也应同步下降避免过拟合。精度指标mAP0.5(IoU阈值为0.5时的平均精度) 和mAP0.5:0.95(IoU阈值从0.5到0.95的平均值)。我们的目标是让mAP0.5尽可能高0.95这表示模型能非常可靠地找到叶片。验证集可视化定期查看模型在验证集图片上的预测结果直观判断是否存在漏检、误检如将塔筒阴影误认为叶片、或边界框不准的问题。经过几轮迭代包括数据清洗、增强策略调整我们最终得到的YOLOv5s模型在测试集上的mAP0.5达到了0.98完全满足工程需求。4. 系统集成与现场部署让算法在风中“跑起来”模型训练好了接下来是如何将其与DeepSORT、无人机视频流结合并部署到可现场运行的系统中。我们设计了两套方案进行验证离线视频处理方案和在线边缘计算方案。4.1 离线处理Pipeline搭建这是最快速的原型验证方式。我们将无人机拍摄的原始视频下载到高性能工作站配备RTX 3080 GPU上用Python搭建处理流水线。视频读取使用OpenCV的VideoCapture读取视频文件。检测与跟踪循环对每一帧图像用训练好的YOLOv5模型进行推理得到所有叶片的边界框[x1, y1, x2, y2, confidence, class]。将检测框输入DeepSORT跟踪器。DeepSORT会返回带有唯一ID的跟踪框[x1, y1, x2, y2, track_id]。在图像上绘制带ID的边界框并实时显示。轨迹记录与频率计算为每一个track_id维护一个列表记录其每一帧的中心点坐标(cx, cy)。由于叶片做近似圆周运动其中心点的Y坐标或X坐标取决于拍摄角度会随时间呈正弦波动。对一个叶片完整的旋转周期其Y坐标会完成一次完整的正弦循环。关键算法步骤我们追踪每个叶片中心点的Y坐标序列。通过寻找波峰或波谷使用scipy.signal.find_peaks可以确定叶片旋转到同一位置如同最高点的时刻。相邻波峰的时间差即为旋转周期T。旋转频率f 1 / T。为了提高精度我们不是只计算一个周期而是计算连续多个周期如10个的平均值。4.2 在线边缘计算方案探索离线验证成功后我们向实时在线监测迈进。理想状态是无人机将视频流实时图传至地面站地面站的边缘计算设备如NVIDIA Jetson AGX Orin实时处理并输出结果。我们进行了以下尝试模型优化与部署使用PyTorch的torch.jit.trace或export.py脚本将YOLOv5模型转换为TensorRT引擎。TensorRT是NVIDIA的高性能推理SDK能对模型进行层融合、精度校准FP16/INT8等优化在Jetson平台上能极大提升推理速度。经过INT8量化后YOLOv5s在Jetson AGX Orin上处理一张640x640图像仅需几毫秒。流水线优化在线系统需要处理H.264/H.265编码的视频流。我们使用GStreamer或FFmpeg管道来接收和解码视频流将解码后的帧送入CUDA内存直接供TensorRT引擎处理避免CPU与GPU间的多余数据拷贝。DeepSORT的轻量化原版DeepSORT的外观特征提取网络一个小的ReID网络也需要部署。我们同样对其进行了TensorRT转换。整个检测跟踪的流水线需要满足实时性30fps。踩坑实录在Jetson平台上首次部署时发现推理速度远低于预期。排查后发现默认的TensorRT构建器没有开启所有优化策略。通过显式设置构建器配置如builder.max_workspace_size、启用FP16模式并针对Jetson的CPU性能调整了图像预处理resize, normalization的并行化最终才达到了实时要求。5. 2MW风机现场测试与误差分析我们选择了一台运行稳定的2MW直驱风机进行最终测试。测试当天风速约为8-10m/s属于风机正常发电区间。5.1 测试流程无人机在风机侧后方约50米处安全悬停相机对准风机旋转平面。启动在线边缘计算系统开始接收视频流并实时处理。系统运行5分钟期间持续记录三个叶片的追踪ID和计算出的实时旋转频率。同时我们通过风机的SCADA数据采集与监控系统后台获取同一时间段内风机主轴编码器测量的精确转速值单位RPM将其转换为频率Hz作为真值。SCADA数据的采样频率通常为1Hz或更高精度极高。5.2 数据对比与误差计算我们将AI视觉系统计算出的频率每秒输出一个值与SCADA的转速真值进行对齐比较。以下是其中一段30秒稳定运行期内的数据摘要时间戳 (s)SCADA 频率 (Hz)视觉系统频率 (Hz) - 叶片A视觉系统频率 (Hz) - 叶片B视觉系统频率 (Hz) - 叶片C平均视觉频率 (Hz)100.1980.2010.1990.2030.201150.1980.1960.2000.1950.197200.1980.2020.1980.1990.200250.1980.1970.1960.2010.198300.1980.1990.2000.1980.199误差分析 我们定义相对误差为误差 (%) |视觉频率 - SCADA频率| / SCADA频率 * 100%。 对上表数据计算在10秒时平均视觉频率为0.201Hz误差为(0.201-0.198)/0.198 * 100% ≈ 1.52%。整个30秒时间段内所有数据点的平均视觉频率与SCADA频率的绝对误差均小于2%。5.3 误差来源深度剖析能将误差控制在2%以内证明方案基本可行但仍有提升空间。误差主要来源于以下几个方面视频帧率与时间分辨率我们使用的相机输出为60fps即时间分辨率为~16.7ms。对于周期约5秒0.2Hz的旋转运动一个周期包含约300帧。通过寻找波峰定位周期点其时间精度受限于帧间隔。这是理论上的极限误差源但通过插值算法如对波峰附近的坐标点进行二次拟合可以亚像素级地定位极值点时间从而将周期计算误差降低到毫秒级以下。目标中心点定位抖动YOLOv5检测框的中心点坐标并非绝对稳定会因图像噪声、光照变化有1-2个像素的抖动。在图像坐标系下几个像素的偏差经过相机透视投影会转换为实际空间的小幅位移影响轨迹光滑度。我们通过卡尔曼滤波DeepSORT内部已包含和轨迹后处理平滑如移动平均滤波有效抑制了这部分噪声。非正圆运动与透视畸变叶片运动并非理想的正圆且无人机视角并非完全垂直于旋转平面会引入透视畸变导致叶片中心点的Y坐标变化不是完美的正弦波。我们通过选取更长的数据分析窗口多个周期进行平均并尝试用椭圆拟合而非纯正弦模型来修正减少了系统误差。ID切换导致的轨迹断裂尽管DeepSORT很稳健但在极端光照突变或严重遮挡瞬间仍可能发生短暂的ID切换。一旦ID切换该叶片的轨迹就会被截断新ID的轨迹需要重新计算周期导致该时刻数据无效。我们通过设定轨迹连续性校验规则如要求一个有效的频率计算结果必须基于至少连续3个稳定周期过滤掉了这些异常数据点。6. 超越频率监测该方案的潜力与挑战成功实现旋转频率监测只是第一步。这套“无人机AI视觉”框架的潜力远不止于此它为我们打开了一扇风机叶片在线巡检的新窗口。6.1 可扩展的监测维度叶片桨距角监测通过追踪叶片根部与轮毂连接处的特征点结合叶片本身的检测框可以估算出每个叶片的实时桨距角。这对于监测变桨系统的一致性故障非常有价值。叶片表面缺陷初筛在检测和跟踪的基础上可以截取每个叶片的高清区域图像ROI。利用另一个训练好的图像分类或细粒度检测模型如针对裂纹、雷击损伤、前缘腐蚀对这些ROI进行实时分析实现缺陷的初步筛查和报警。无人机可以自动飞近疑似区域进行多角度详查。动态挠度与振动分析通过高帧率视频追踪叶片上多个特征点如叶尖、叶中可以分析叶片在旋转和风载作用下的动态弯曲挠度和振动模态。这需要更高的视频帧率如240fps和更精确的亚像素跟踪算法。6.2 当前面临的挑战与优化方向环境适应性大雾、雨雪、强烈逆光等恶劣天气下图像质量严重下降检测与跟踪性能会衰减。未来的方向是融合红外热成像夜间或某些缺陷会产生热斑或激光雷达点云数据提升全天候能力。完全自动化作业目前无人机悬停位置仍需飞手操控。理想状态是结合无人机路径规划算法实现自动起飞、巡检测点、数据采集、自动返航的全流程无人化。这需要解决无人机与风机环境的精确相对定位、避障和安全飞行边界问题。计算平台的功耗与成本高性能边缘计算设备如Jetson AGX Orin功耗和成本仍较高。随着芯片技术的发展如地平线征程、瑞芯微RK3588等国产芯片在AI推理上表现越来越强为低成本、低功耗机载解决方案提供了可能。我们正在尝试将算法移植到RK3588平台探索端侧实时处理的可能性。数据与模型的持续迭代这是一个数据驱动的系统。需要不断从不同风场、不同机型、不同气候条件下收集数据丰富数据集并持续迭代模型才能提升泛化能力使其真正成为一个普适性的工业工具。这次2MW风机的现场测试误差小于2%的结果给了我们很大的信心。它验证了基于消费级无人机和开源AI算法实现低成本、非接触、高精度风机动态参数监测的技术可行性。这条路还很长从技术验证到规模化、产品化应用中间有无数工程细节需要打磨。但毫无疑问它为风电运维的智能化、无人化提供了一个充满想象力的起点。