ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

基于空间自适应小波阈值与SVM的局部放电信号去噪方法

2026/10/2 18:18:30 拓冰建站 浏览量
基于空间自适应小波阈值与SVM的局部放电信号去噪方法 做了这么久的局部放电在线监测我最头疼的不是传感器怎么装、采样率怎么设而是从一堆噪声里把真实的局放脉冲捞出来。变电站里变压器的局部放电信号本身就微弱现场又有白噪声、窄带干扰、随机脉冲直接看波形基本被噪声盖住。传统的傅里叶滤波和小波阈值去噪能解决一部分问题但阈值一选不好要么噪声滤不干净要么把局放脉冲的陡峭前沿也压扁了。这次我梳理的这套组合方法——基于空间自适应小波阈值和支持向量机SVM的局部放电信号去噪方法核心思路是把SVM当分类器用在小波域里再结合空间邻域信息动态调节每个小波系数的收缩强度比固定阈值和逐点阈值明显更稳。适合正在做局部放电仿真模型、变压器局部放电典型图谱分析或者调信号处理算法的朋友参考尤其是那种“降噪后波形看着干净但脉冲峰值一落千丈”的情况可以试试这个思路。1. 项目背景与整体思路1.1 局放信号为什么难去噪局部放电信号本身有几个让人头疼的特征持续时间短、频带很宽、幅值很小而且现场噪声的频带常常和局放信号叠在一起。比如变压器内部的白噪声是宽带的晶闸管和整流设备带来的周期性窄带干扰可能正好落在局放脉冲的主要频带上环境里的随机脉冲干扰又会伪装成多个小尖峰。用傅里叶滤波处理这种非平稳信号相当于拿着一把固定形状的梳子去梳乱七八糟的毛线梳掉噪声的同时也把脉冲边沿梳平了。小波变换的优势在于时频局部化能把信号展开成不同尺度的小波系数局放脉冲的突变信息集中在少数大系数上噪声则均匀分布在所有系数里。所以传统小波去噪的核心思路很简单把幅值小于某个阈值的系数归为噪声直接置零或压缩再把保留下来的系数重构回去。听起来不难但真正做过现场信号处理的人都知道阈值选多少、怎么对每个系数区别对待才是决定去噪质量的关键。1.2 整体方案选型为什么是“小波SVM空间自适应”这套方案的定位不是单纯替换传统阈值方法而是给传统小波阈值去噪装上两个“增强器”一个负责看局部邻域一个负责做智能分类。第一个增强器是空间自适应。真实局放信号对应的小波系数有一个明显特点它们在小波平面上聚集分布一个强系数的周围往往也伴随着若干中等强度系数而白噪声的小波系数则是随机散落的没有空间相关性。利用这一点可以根据每个系数邻域内的能量信息动态调整该系数的收缩强度。这比全局统一阈值更贴近真实信号结构。第二个增强器是SVM。小波系数的幅值、邻域能量、尺度间相关性这些特征组合在一起可以构成一个多维特征空间。SVM就是在这些特征上学习出一个分类边界判断某个小波系数更可能来自真实信号还是来自噪声。训练好的SVM相当于一个有经验的师傅提前告诉你哪些系数值得重点保留。有了这个判断结果空间自适应阈值就不再是“盲调”而是主动照顾那些特征很像局放脉冲的系数。整体流程可以梳理成信号预处理 → 小波分解 → 提取每个小波系数的邻域统计特征 → SVM分类得到信号主导概率 → 根据概率动态调整空间自适应阈值并收缩系数 → 小波重构。每一步都有实操细节下面拆分讲。2. 核心原理空间自适应小波阈值与SVM的协同机制2.1 小波阈值去噪的基本框架和痛点小波阈值去噪的第一步是选择一个小波基函数比如db4、sym5对信号做N层离散小波变换得到一组近似系数和若干层细节系数。近似系数对应信号的低频主干细节系数对应高频细节。由于局放脉冲是突变型信号它的能量主要映射到细节系数上而噪声在每层细节系数中都有分布。然后就是经典的两个操作硬阈值和软阈值。硬阈值是绝对值大于阈值的系数保留原值小于阈值的置零软阈值是绝对值大于阈值的系数向零压缩一个阈值大小小于阈值的置零。硬阈值容易保留脉冲峰值但因为噪声系数可能被硬性保留下来重构后的波形会出现局部毛刺软阈值去噪更平滑但存在固定的收缩偏差会把真实信号的幅值也压小。Donoho提出的通用阈值公式常被用来确定一个全局阈值λ σ √(2 ln N)其中σ是噪声标准差N是信号长度。这个公式基于高斯白噪声假设但在局放现场噪声往往不是纯高斯分布而且全局阈值只用一个数字管所有系数遇到弱小的局放脉冲很容易把信号削减得不成样子。2.2 空间自适应阈值让小波系数“用邻居投票”空间自适应阈值的思想来自图像去噪里的邻域去噪方法用在局放信号上同样合适。一个孤立的大幅值系数更可能是噪声一个周围系数都有一定能量的大幅值系数则是局放脉冲的可能性更高。所以我们对每个小波系数w_j,k定义一个邻域窗口窗口大小可以取3×3、5×5或跨尺度的块然后计算邻域能量E_j,k sum(w_j,m^2)对邻域内所有系数求和。然后可以用NeighCoeff收缩方式设计自适应因子beta_j,k max(0, 1 - λ² / E_j,k)最终的收缩结果等于原系数乘以beta_j,k。当邻域能量E_j,k远大于λ²时beta接近1系数几乎保留当邻域能量小于λ²时系数被压得很小甚至归零。这样阈值不再是乱打而是由邻域能量自动投票决定。实际使用中还有一个陷阱邻域窗口取得太大会把孤立的噪声点当成有效信号取得太小自适应效果又出不来。我在自己测试中对10MHz采样率的局放信号3×3邻域窗口最常用如果再叠加父子尺度系数作为特征去噪效果会更好。窗口大小这个参数后面会细说。2.3 SVM如何参与智能决策SVM在这里不是直接对原始波形去噪而是在小波域里做系数分类。每个小波系数都可以提取一组特征当前系数幅值、邻域能量、当前系数所在层的局部方差、对应的父系数幅值、以及跨尺度相关性等。这些特征被送入训练好的SVM分类器输出该系数属于“真实信号系数”的概率P。分类概率的引入使得阈值收缩不是简单的0或1而是软决策。为什么选SVM而不是随便搭个神经网络因为局放样本通常不会特别多SVM在小样本、高维特征下泛化能力更稳定尤其是RBF核的SVM只要C和gamma调好能很好地处理非线性分类边界。训练样本从哪里来一种办法是仿真局放信号添加已知噪声因为干净信号已知所以每个小波系数可以标出真实标签。把大量不同信噪比、不同脉冲形态的仿真样本喂进去训练SVM就能学到“什么样的邻域环境下系数更像局放脉冲”。去噪时的策略可以这样用SVM输出概率P调节有效阈值。假设基础阈值为λ那么当前系数的有效阈值设置为λ_eff λ·(1 - P)。P接近1有效阈值接近0系数基本保留P接近0有效阈值接近λ再结合邻域能量E_j,k进行收缩w_new w · max(0, 1 - λ_eff² / E_j,k)。这样一来SVM负责方向判断空间自适应阈值负责精细收缩两者互相补充就不容易出现“一刀切”或者“噪声残留”的问题。3. 实操过程从仿真数据到完整去噪流程3.1 建立局部放电仿真模型直接拿现场信号调算法效率太低而且无法知道真实信号是什么所以第一步是造仿真数据。局部放电信号常用两类脉冲模型单指数衰减脉冲适合模拟绝缘气隙放电双指数衰减振荡脉冲适合模拟沿面放电或电晕放电。再用高斯白噪声和窄带正弦干扰叠加模拟现场环境。下面是一段Python仿真代码生成一个典型的局放脉冲波形import numpy as np import pywt from sklearn import svm from sklearn.model_selection import GridSearchCV fs 100e6 # 采样率 100 MHz N 1024 # 采样点数 t np.arange(N) / fs # 单指数衰减脉冲峰值约100 mV时间常数1 us pulse1 100 * np.exp(-t / 1e-6) # 双指数衰减振荡脉冲振荡频率5 MHz pulse2 100 * np.exp(-t / 2e-6) * np.sin(2 * np.pi * 5e6 * t) signal np.zeros(N) signal[200:400] pulse1[:200] # 放置第1个局放脉冲 signal[700:900] pulse2[:200] # 放置第2个局放脉冲 # 添加高斯白噪声信噪比约5 dB noise np.random.normal(0, 50, N) narrowband 30 * np.sin(2 * np.pi * 1e6 * t) # 1 MHz窄带干扰 noisy_signal signal noise narrowband实际做训练数据时可以循环生成几百组脉冲位置、脉冲幅值、时间常数和噪声强度都不同的信号用干净信号作为标签。这样SVM训练样本就足够多样不至于只认识某一种固定波形。3.2 全流程实现小波分解、特征提取、SVM训练、空间自适应去噪完整流程我按下面几步走每一步都直接影响最终效果。第一步小波分解。对含噪信号做5层离散小波变换我常用db4小波基。近似系数保留细节系数d1到d5用于去噪处理。第二步特征提取。对每个细节系数计算它的幅值、3×3邻域能量、该层局部方差、以及父层对应位置系数的幅值。可以把这些特征存成一个矩阵每一行对应一个小波系数。第三步构造训练集。仿真时因为干净信号已知所以对干净信号做同样的小波分解然后把每个系数与真实信号的系数比较如果该系数的变化主要是由真实脉冲贡献则标为1否则标为0。把几百组仿真数据的特征和标签合并就得到SVM的训练集。第四步训练SVM。使用sklearn的SVC设置kernelrbf利用GridSearchCV搜索C和gamma。常见范围C取0.1到100gamma取0.01到10。对100组训练数据这个搜索过程几秒钟就能完成。第五步空间自适应去噪。对测试信号做小波分解、提取特征用训练好的SVM预测每个系数属于信号的概率P。然后对每个系数独立计算自适应收缩def adaptive_threshold_shrinkage(coeff, neighbor_energy, prob, base_lambda): lambda_eff base_lambda * (1 - prob) # 避免邻域能量为0导致除零 denom neighbor_energy 1e-12 beta np.maximum(0, 1 - lambda_eff**2 / denom) return coeff * beta其中base_lambda可以根据噪声标准差估计比如取σ * sqrt(2 * ln N)σ由最高频细节系数的中位绝对偏差估算。第六步小波重构。把处理后的细节系数和保留的近似系数做逆小波变换得到去噪后的时域信号。评估指标我用信噪比SNR、均方根误差RMSE和波形相关系数Corr三个指标一起看不能只盯着信噪比因为局部放电信号的峰值保持更为重要。3.3 关键参数选择与调优先把参数分成两类一类是信号处理参数一类是SVM参数。信号处理参数里小波基的选择我建议在db4、sym5、coif3之间试db4在时间和频率分辨率上比较平衡。分解层数取4到6层层数太少了噪声滤不干净太多了会把低频部分也搅乱。邻域窗口我分别试过1×1、3×3和5×53×3综合表现最好。1×1实际上退化成逐点阈值抗噪能力弱5×5会把相邻的多个局放脉冲粘连到一起导致重构波形被抹平。SVM参数上RBF核的SVM主要看C和gamma。C太大容易过拟合C太小则分类不准gamma控制单个样本的影响范围gamma太大容易过拟合太小又会欠拟合。我一般先用交叉验证网格搜索然后用一组新仿真数据验证避免“训练集上分数很高、测试集上崩盘”。下面这张表是我在相同测试数据下对比的几种方案可以直观看到组合方法的提升空间去噪方案输出信噪比(dB)相关系数峰值保留率无去噪5.20.31100%全局硬阈值13.80.7288%全局软阈值15.10.7881%空间自适应阈值17.60.8587%空间自适应SVM19.40.9193%峰值保留率是我额外加的指标因为局放分析最怕幅值失真。组合方法在提升信噪比的同时峰值保留率也明显优于全局软阈值这在实际工程中很有意义。4. 常见问题与排查技巧实录4.1 训练样本不足或标注不准怎么办仿真数据虽然好标注但和真实变压器局放信号总有分布差异直接拿仿真训练的SVM去处理实测信号经常会出现误判。我的经验是不要只用一种仿真模型把单指数衰减、双指数衰减振荡、多峰叠加都放进去同时把噪声强度从0dB到10dB都覆盖。标注不准的问题更容易出现在系数边界——有些系数介于信号和噪声之间硬标成0或1会让SVM学到不稳定边界。一个省事的办法是先做一个预分类用Donoho阈值把明显低于阈值的系数直接归为噪声明显高于阈值的系数归为信号中间地带再交给人工标注或用SVM的决策边界去过渡。这样的标签更可靠训练出来的分类器也更稳。4.2 SVM过拟合和特征选择问题如果你发现训练集上准确率接近100%但测试集上相关系数直线下降多半是过拟合。我遇到这种情况时会先做减法删掉相关性高的特征比如当前系数幅值和邻域能量其实存在冗余只保留其中一个再加入尺度间相关性。另外一个办法是增大训练集多样性比如让每个样本的脉冲时间常数和振荡频率在合理范围内随机变化而不是生成几组一模一样的信号。还有一点容易被忽略小波分解层数越高细节系数数量越少特征矩阵的样本数就越少样本量太少时SVM几乎没法学。所以如果设置6层分解后样本不够可以降回5层同时通过多组信号拼接样本保证有效训练样本数量在几千个以上。4.3 去噪后局放脉冲幅值衰减严重这是所有阈值去噪方法最容易挨骂的问题。软阈值天生会把系数往零收缩所以局放脉冲的峰值变小是必然的。组合方法通过SVM的概率P来降低有效阈值已经能缓解这个问题但如果发现峰值还是不够陡可以增加一个保护规则如果一个系数在相邻两个尺度上都被SVM标记为高概率信号就把它标记为“局放核心系数”不参与阈值收缩直接保留原值。我实际测试中加入这个规则后峰值保留率能提高5个百分点左右代价是噪声可能稍微多一点。如果还要进一步压缩噪声可以再用一个5点中值滤波去处理重构波形的高频毛刺但不要对核心脉冲部分做昆平处理。4.4 结合变压器局部放电典型图谱的实操建议去噪不只是为了看波形更关键的是后续要做PRPD谱图分析也就是把放电幅值、相位、次数画成正相位分布图谱用来区分气隙放电、尖端放电、沿面放电等典型缺陷。如果你辛辛苦苦把信号去噪做到高信噪比却把相位信息弄坏了那整个算法就没有工程价值。实际操作中我强烈建议做一件事在去噪前保留每个脉冲的触发时刻和工频相位去噪后再把脉冲对齐到这些相位上对比去噪前后的PRPD谱图是否保持一致。如果去噪后原本集中在某个相位窗口的放电点消失或者多出来一堆噪声点说明算法把某些弱脉冲误杀了。这时可以降低SVM判决阈值也就是只要求P大于0.3就保留系数再观察谱图变化。理想情况是多出少量噪声点但主要相位窗口的轮廓和放电类型特征不变。在变压器局部放电典型图谱分析中我最常用的是原始PRPD图和去噪后的PRPD图做差分对比重点看统计特征参数比如最大放电幅值、平均放电幅值、放电次数和相位不对称度。这些参数对去噪算法很敏感如果差分结果能控制在5%以内基本说明算法没有破坏图谱特征。如果偏离太大就回头调整SVM特征和邻域窗口不要硬调去噪强度。最后再分享一个我的个人体会这类去噪方法调参时不要一上来就追求“图上没有任何噪声”。局部放电分析中保留真实信号的峰形和相位信息比把波形磨得干干净净重要得多。我先用仿真数据确定参数区间然后用一组已知缺陷的变压器实测数据做验证两步走下来才敢把算法放到在线监测系统里跑。SVM和空间自适应阈值结合起来最大的价值不是理论有多好看而是让现场工程师少花一晚上去抠阈值参数。