航空发动机作为飞机的"心脏",其健康状况直接关系到飞行安全。气路系统是发动机的核心组成部分,各种故障如叶片磨损、积碳、泄漏等都会严重影响发动机性能。传统的故障诊断方法主要依赖专家经验和定期检修,这种方法效率低下且容易漏检。随着大数据和人工智能技术的发展,基于深度学习的智能故障诊断方法正在成为研究热点。

本文将介绍一个完整的航空发动机气路故障诊断系统,该系统使用CNN-LSTM混合深度学习模型,能够自动识别五种常见的气路故障类型。

效果:https://www.bilibili.com/video/BV1ar43zMEN9/?spm_id_from=333.999.0.0

数据集介绍

数据来源与特征

本系统使用的数据集包含航空发动机气路系统的多维度传感器数据,主要特征包括:

  • 压力参数:p3(压气机出口压力)、p5(涡轮出口压力)等
  • 温度参数:t4(涡轮进口温度)、t6(涡轮出口温度)等
  • 转速参数:n1(低压转子转速)、n2(高压转子转速)
  • 燃油参数:fuel_flow(燃油流量)
  • 振动参数:vib1、vib2等振动传感器数据

故障类别

系统能够识别以下五种故障状态:

  1. 正常状态 - 发动机正常运行状态
  2. 高压压气机叶片磨损 - 压气机性能下降
  3. 高压涡轮叶片积碳 - 涡轮效率降低
  4. 低压涡轮叶片损伤 - 涡轮机械损伤
  5. 气路泄漏 - 密封性能下降

数据统计

数据集共包含数千条记录,每个样本包含20+个特征参数,数据经过专业采集和标注,具有较高的工程应用价值。

原始特征可视化

​测试集混淆矩阵

​编辑

技术架构

数据预处理流程

python

def load_and_preprocess_data(file_path='engine_gas_path_data.csv'):
    # 数据加载与标准化处理
    # 特征标准化:消除量纲影响
    # 标签编码:将类别标签转为数值形式
    # 数据划分:训练集80%,测试集20%
    # 数据重塑:适配深度学习模型输入

混合模型设计:CNN-LSTM

本系统的核心创新在于结合了CNN和LSTM两种神经网络的优势:

CNN(卷积神经网络)部分

python

# CNN特征提取层
x = Conv1D(filters=64, kernel_size=1, activation='relu')(inputs)
x = BatchNormalization()(x)  # 批标准化,加速训练
x = MaxPooling1D(pool_size=1)(x)  # 池化层,特征降维

x = Conv1D(filters=128, kernel_size=1, activation='relu')(x)
x = BatchNormalization()(x)
x = MaxPooling1D(pool_size=1)(x)

CNN的作用

  • 自动提取传感器数据中的局部特征模式
  • 捕捉不同故障在特征空间中的分布
  • 通过卷积核学习特征间的空间相关性
LSTM(长短期记忆网络)部分

python

# LSTM时序处理层
x = LSTM(units=128, return_sequences=False)(x)
x = Dropout(0.3)(x)  # 防止过拟合

LSTM的作用

  • 处理传感器数据中的时间依赖性
  • 记忆长期模式,识别故障发展的时序特征
  • 增强模型对动态过程的建模能力
全连接分类层

python

# 分类输出层
x = Dense(64, activation='relu')(x)
x = Dropout(0.2)(x)
outputs = Dense(num_classes, activation='softmax')(x)

可视化分析系统

1. 特征分布分析

通过核密度估计(KDE)图展示关键特征在不同故障类型中的分布差异:

python

# 关键特征选择
key_features = ['p3', 't4', 't6', 'n1', 'n2', 'fuel_flow']

# 多子图展示特征分布
for i, feature in enumerate(key_features):
    for label in range(len(class_names)):
        sns.kdeplot(raw_data[raw_data['label'] == label][feature],
                   label=class_names[label], fill=True, alpha=0.5)

分析价值

  • 识别对故障敏感的关键参数
  • 理解不同故障在特征空间中的分离程度
  • 为特征工程提供指导

2. 箱线图分析

展示特征值的统计分布和异常值情况:

python

sns.boxplot(x='特征', y='值', hue='故障类型', data=plot_data)

工程意义

  • 直观显示各故障类型的特征值范围
  • 识别传感器数据的异常波动
  • 辅助确定故障诊断的阈值边界

3. PCA降维可视化

python

pca = PCA(n_components=2)
principal_components = pca.fit_transform(features_scaled)

PCA分析结果

  • 将高维特征投影到2D平面
  • 显示累计解释方差比
  • 观察故障类别的聚类情况

4. 特征相关性分析

通过热力图展示特征间的相关性:

python

corr = raw_data.drop('label', axis=1).corr()
sns.heatmap(corr, mask=mask, annot=True, fmt=".2f", cmap='coolwarm')

相关性分析价值

  • 识别冗余特征,优化模型输入
  • 理解发动机各系统间的耦合关系
  • 为传感器布置提供参考

模型训练与优化

训练策略

python

# 早停机制防止过拟合
early_stopping = EarlyStopping(monitor='val_loss', patience=20, 
                              restore_best_weights=True)

# 模型检查点保存最佳权重
model_checkpoint = ModelCheckpoint('best_model.h5', 
                                  monitor='val_accuracy', 
                                  save_best_only=True)

超参数设置

  • 学习率:0.001
  • 批大小:32
  • 训练轮次:100(配合早停)
  • 优化器:Adam
  • 损失函数:分类交叉熵

结果分析与评估

训练过程监控

系统提供完整的训练过程可视化:

  • 损失函数曲线:监控模型收敛情况
  • 准确率曲线:跟踪模型学习进度
  • 验证集性能:评估模型泛化能力

性能评估指标

python

# 混淆矩阵
cm = confusion_matrix(y_true, y_pred)

# 分类报告
print(classification_report(y_true, y_pred, target_names=class_names))

# 各类别准确率
class_accuracy = cm.diagonal() / cm.sum(axis=1)

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐