1. 项目背景与核心价值
轴承作为工业设备的核心旋转部件,其健康状态直接影响整机运行安全。传统振动信号分析方法依赖专家经验,而基于深度学习的智能诊断技术正在彻底改变这一领域。2024年发表在SCI二区期刊的这篇论文,创新性地融合CNN与Transformer两大架构,在轴承故障诊断领域实现了98.7%的Top-1准确率(CWRU数据集),比单一模型平均提升6.2个百分点。
这个复现项目的独特价值在于:
- 架构创新性:通过CNN局部特征提取与Transformer全局依赖建模的级联设计,同时捕捉振动信号的时频局部特征和长程周期规律
- 工程实用性:论文提供的预处理流程和超参数配置,可直接应用于工业现场采集的原始振动数据
- 方法通用性:采用的频域分帧+重叠切片技术,可迁移到齿轮箱、电机等其他旋转机械故障诊断场景
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 数据准备与预处理
2.1 数据集选择与特性分析
推荐使用凯斯西储大学(CWRU)轴承数据集,包含四种故障类型(内圈、外圈、滚动体、保持架)和三种损伤程度(0.18mm/0.36mm/0.53mm)。原始数据为12kHz采样的驱动端振动信号,需特别注意:
- 采样策略:采用滑动窗口分割,窗口长度1024点(约85ms),重叠率50%
- 数据增强:添加高斯噪声(SNR=15dB)和随机时移(±5%)提升泛化性
- 频域处理:对每个窗口应用Hanning窗后做FFT,保留0-6kHz频段(轴承故障特征主要集中区)
python复制def preprocess_signal(raw_signal):
windows = sliding_window(raw_signal, 1024, 512) # 50%重叠
processed = []
for win in windows:
win = win * np.hanning(1024)
fft = np.abs(np.fft.fft(win)[:512]) # 取前一半频点
processed.append(fft)
return np.array(processed)
2.2 标签体系构建
采用分层标签编码方案,同时包含故障类型和严重程度信息。例如:
- 标签"OR_0.36"表示外圈故障0.36mm
- 健康样本标记为"Normal"
关键细节:振动信号存在转速波动时,建议采用阶比分析代替固定频率切片,消除转速变化影响
3. 模型架构实现细节
3.1 CNN特征提取模块
论文采用改进ResNet18架构,关键修改点:
- 输入层:接收512维频域向量(对应FFT结果)
- 首层卷积:使用窄核(k=3, stride=1)保留高频细节
- 深度可分离卷积:替换原始Block中的标准卷积,参数量减少67%
- 特征图输出:最后一层得到256×8×1的特征张量
python复制class DSConvBlock(nn.Module):
def __init__(self, in_ch, out_ch):
super().__init__()
self.depthwise = nn.Conv1d(in_ch, in_ch, kernel_size=3,
groups=in_ch, padding=1)
self.pointwise = nn.Conv1d(in_ch, out_ch, kernel_size=1)
def forward(self, x):
return F.relu(self.pointwise(self.depthwise(x)))
3.2 Transformer时序建模模块
将CNN输出的特征序列视为时间步,构建轻量级Transformer:
- 位置编码:采用可学习的1D位置编码(长度=8)
- 注意力头:4头注意力,key_dim=64
- 前馈网络:单隐藏层(512 units)+GeLU激活
- 分类头:全局平均池化后接Softmax
python复制transformer_layer = nn.TransformerEncoderLayer(
d_model=256,
nhead=4,
dim_feedforward=512,
activation='gelu'
)
3.3 混合训练策略
- 分阶段训练:先单独训练CNN部分(冻结Transformer)50轮
- 联合微调:解冻全部参数,采用余弦退火学习率(初始3e-4)
- 标签平滑:使用ε=0.1的标签平滑防止过拟合
4. 实验配置与调优
4.1 硬件环境建议
| 设备类型 | 最低配置 | 推荐配置 |
|---|---|---|
| GPU | GTX 1660 (6GB) | RTX 3090 (24GB) |
| 内存 | 16GB | 32GB |
| 数据存储 | 500GB HDD | 1TB NVMe SSD |
4.2 关键超参数设置
yaml复制optimizer:
type: AdamW
lr: 3e-4
weight_decay: 0.05
scheduler:
type: CosineAnnealingLR
T_max: 100
eta_min: 1e-6
batch_size:
CNN_phase: 128
Joint_phase: 64
4.3 性能评估指标
除常规准确率外,建议关注:
- 混淆矩阵:分析特定故障类型的误判模式
- t-SNE可视化:观察特征空间分离情况
- 推理延迟:测量单样本端到端处理时间(工业部署关键指标)
5. 常见问题与解决方案
5.1 梯度消失问题
现象:Transformer层梯度范数小于1e-6
解决方案:
- 添加LayerNorm到每个残差连接后
- 采用梯度裁剪(max_norm=1.0)
- 使用Pre-LN结构替代Post-LN
5.2 过拟合处理
当验证集准确率波动大于5%时:
- 启用MixUp数据增强(α=0.4)
- 增加DropPath概率(从0.1线性增加到0.3)
- 对频域输入施加随机掩码(mask_ratio=0.2)
5.3 工业数据适配
现场数据与实验室数据差异较大时:
- 添加域适应模块(如MMD损失)
- 采用小样本微调策略(冻结底层CNN)
- 引入噪声鲁棒训练(随机频带衰减)
6. 扩展应用与优化方向
6.1 多传感器融合
将振动信号与温度、声音信号联合输入:
- 低频温度信号:直接输入Transformer
- 高频声音信号:通过并行CNN分支处理
- 融合策略:门控注意力机制
6.2 边缘设备部署
使用TensorRT优化推理流程:
- 将模型转换为ONNX格式
- 应用FP16量化和层融合
- 测试Jetson Xavier NX上的实时性
6.3 故障发展预测
将诊断模型扩展为预测模型:
- 构建LSTM-Transformer时序预测模块
- 输入连续时间段的诊断结果
- 输出剩余使用寿命(RUL)估计
在实际部署中发现,对6307型轴承的端盖振动信号,将FFT频段调整为0-4kHz可获得更好效果。这是因为该型号轴承的特征频率通常不超过3kHz,高频部分主要是噪声干扰。这种基于具体设备型号的参数微调,是工业落地中的关键经验
