(论文速读)BearingPGA-Net:知识蒸馏 + FPGA 加速的轻量轴承故障诊断网络 论文题目BearingPGA-Net: A Lightweight and Deployable Bearing Fault Diagnosis Network via Decoupled Knowledge Distillation and FPGA AccelerationBearingPGA-Net基于解耦知识蒸馏与 FPGA 加速的轻量可部署轴承故障诊断网络期刊IEEE Transactions on Instrumentation and Measurement2024DOI10.1109/TIM.2023.3346517源码GitHub - asdvfghg/BearingPGA-Net · GitHub摘要深度学习在轴承故障诊断中表现出色但模型越来越大很难直接部署到要求低功耗、高实时性和强可移植性的工业端侧设备。本文提出 BearingPGA-Net先利用 Decoupled Knowledge DistillationDKD把大型 Teacher 的知识迁移到只有一层卷积的轻量 Student再将网络从 PyTorch 的 32-bit 浮点实现转换成 16-bit 定点形式并使用 Verilog 在 Kintex-7 FPGA 上逐层实现 FFT、卷积、ReLU/Max-Pooling 和全连接运算。BearingPGA-Net 只有 2.83K 参数在 CWRU、HIT 和 PU 三个轴承数据集上保持较强的噪声鲁棒性16-bit FPGA 相比 32-bit PyTorch 在 HIT 数据集上的 F1、Recall 和 Precision 损失均低于 0.4%在线 100 次真实轴承测试的 Macro-F1 达到 96.98%。一、研究背景轻量模型不等于“真的能部署”轴承故障通常会在振动信号中形成异常冲击因此最常见的监测方式是把加速度传感器安装在机械表面再通过信号处理和诊断模型识别 Healthy、Inner Race、Outer Race、Ball Fault 等状态。深度 CNN 可以取得很高的诊断性能但工业现场的问题并不只是 Accuracy如果每台旋转设备都需要配一台高性能计算机成本、空间、布线和功耗都会迅速增加。FPGA 具备并行计算和低功耗优势但它的 LUT、BRAM、DSP 等资源又十分有限。因此本文关注两个必须同时解决的问题第一怎样把故障诊断网络压缩到 FPGA 能放得下第二怎样把这个网络真正翻译成硬件逻辑并高速运行。作者指出以往不少“轻量轴承诊断网络”只在 CPU/GPU 上验证并没有真正部署到嵌入式硬件。BearingPGA-Net 的重点正是把“轻量算法”和“FPGA 端侧实现”连起来。二、整体框架FFT DKD 单层 1D-CNN论文 Figure 1BearingPGA-Net 从训练到 FPGA 在线诊断的完整流程论文采用两阶段方案离线阶段Teacher → DKD → BearingPGA-Net Student在线阶段加速度信号 → Signal Conditioner → AD Converter → FIFO → FFT → BearingPGA-Net → LED 诊断结果Teacher 使用 WDCNN由 6 个 CNN Block 和全连接层组成Student 则极度精简只保留论文 Table IBearingPGA-Net 的网络结构这个网络总参数只有2.83K。为了弥补单层 CNN 特征提取能力不足作者并不是直接把原始时域信号送进去而是先对 2048 点振动片段进行 FFT再把频域特征作为网络输入。也就是说BearingPGA-Net 本质上采用了传统信号处理增强特征表达 极浅神经网络降低硬件成本。三、DKD为什么一层 CNN 还能保持较好的诊断能力普通 Knowledge Distillation 使用 Teacher 的 Soft Label 指导 Student但传统 KL Loss 会把目标类别和非目标类别的知识耦合在一起。DKD 将蒸馏知识拆成两部分TCKDTarget Class KD关注目标类别NCKDNon-Target Class KD描述其他类别之间的关系。最终 Loss 为在轴承任务中作者发现应当提高目标类别知识的权重即通常采用 ()。论文 Table XTeacher 与 Student 的规模和计算量比较Teacher 有50.09K 参数、0.83M FLOPsBearingPGA-Net 只有2.83K 参数、78.34K FLOPs。因此参数量减少约17×FLOPs 减少约10.6×1000 个样本的离线推理时间由 1.5703 s 降至 0.6431 s。论文 Table XI–XIII、Figure 10DKD 增益、消融实验及超参数敏感性DKD 的意义尤其体现在噪声场景。例如 CWRU-2HP 在 −6 dB 下DKD 相比不使用蒸馏提高约8.23% F1HIT 在 0 dB 下提高约8.46%。消融实验也表明 TCKD 是主要贡献项而完整 DKD 效果最好。所以这里的“轻量化”不是直接把网络删到一层而是先让大型 Teacher 学会复杂判别边界再把这部分知识迁移到极小 Student。四、FPGA 部署不是把 PyTorch 文件直接丢进开发板论文 Figure 2–3逐层定点量化以及 FPGA 上的完整数据流。Fig2.BearingPGA-Net每层整数和小数的位宽示例其中(SXY)分别表示符号位数、整数位数和十进制位数。Fig3.BearingPGA-Net部署到现场可编程门阵列的总体框图。Python 网络原本使用 32-bit Float。作者将参数转换成16-bit Fixed Point并根据每一层数据的最大值、最小值动态分配整数位和小数位以兼顾量化范围与分辨率。这与简单的“全网络统一 INT16”不同不同层可以采用不同的整数/小数位配置从而降低 Overflow 和 Quantization Error。部署使用ALINX 7325B开发板核心芯片为Kintex-7 XC7K325T运行频率100 MHz。作者没有使用 PYNQ 自动转换而是在 Vivado 2018.3 中直接通过 Verilog 设计硬件模块。论文 Figure 4–6MAC、卷积层和全连接层的硬件实现卷积是主要计算瓶颈。输入经过 RF Selector 后形成 128 个长度为 64 的片段作者实例化128 个并行 MAC 单元。每个 MAC 在 64 Cycle 内完成一次长度 64 的乘加因此一个卷积 Kernel 可以在 64 Cycle 内完成全部窗口计算4 个 Kernel 总计约 256 Cycle相比普通串行方式形成约128× 的卷积级并行加速。ReLU 与 Max-Pooling 也被融合为同一个比较模块。因为二者都依赖最大值判断作者通过符号位先过滤负数约节省2/3 的 LUT 资源。全连接层则采用“模块复用”不是同时放置全部乘法器而是用 10 个 MAC 单元循环 256 Cycle在资源和速度之间折中。这正是 FPGA 部署与 MCU 部署最大的差别MCU 主要优化软件执行而 FPGA 是把神经网络算子直接重新组织成并行数字电路。五、实验结果从模型精度一直测到 FPGA Power论文使用三个数据源CWRU10 类12 kHz 驱动端振动信号并测试不同负载和 −62 dB 噪声HIT 自采数据HC7003 轴承Healthy Ball/OR/IR 三种位置、三种严重程度共 10 类12 kHzPU 数据集真实损伤数据3 类并跨不同转速、载荷和径向力测试。论文 Table V、VII–IX轻量模型规模及 CWRU/HIT/PU 分类结果BearingPGA-Net 仅2.83K 参数明显小于 WDCNN、LEFE-Net 等网络。在 CWRU 的 −6 dB 强噪声下仍能维持超过 95% 的 F1在 HIT 噪声实验中平均 F1 为80.54%高于 CLFormer 的 76.37% 和 KDSCNN 的 74.98%。5.1 32-bit PyTorch → 16-bit FPGA 会损失多少论文 Table XIV、Figure 11量化前后的指标与混淆矩阵HIT 测试集中PyTorchF197.39%、Recall97.40%、Precision97.57%FPGAF197.12%、Recall97.34%、Precision97.12%因此三项指标下降均低于0.4%。2500 个测试样本中FPGA 相对原模型只额外产生 24 个错误。5.2 FPGA 资源用了多少论文 Table XV、Figure 12Kintex-7 的资源占用整个网络占用LUT74.40%BRAM58.20%FF44.19%DSP22.02%其中卷积模块约占 LUT 的50%FFT 模块约占23%。这也说明为什么作者把 Student 限制为单卷积层即使只有一层 Conv已经消耗了大约一半 LUT。5.3 推理时间和功耗论文 Table XVICPU 与 FPGA 单样本 Inference Time / Power Consumption实测数据为Intel i5-1135G7 2.40 GHz3001.9 μs28 WKintex-7 XC7K325T 100 MHz60.3 μs0.67 W按 Table XVI 直接计算FPGA 的单样本推理时间约为 CPU 的1/50功率约为1/42。这也是正文对 Table XVI 的明确表述。需要注意一个论文内部的口径差异摘要和结论写的是“over 200× faster diagnosis speed compared with CPU”但 Table XVI 的 3001.9 μs / 60.3 μs 实际约为 49.8×。论文没有在表格附近进一步解释“200×”采用了什么不同的速度定义。因此如果后续引用端侧 Latency建议直接采用 Table XVI 的原始实测值并单独说明这一差异。六、在线测试与启示真正把振动信号送进 FPGA论文 Figure 13真实在线轴承诊断平台最后的实验不是把保存好的测试数据离线送入 FPGA而是在真实轴承台架上安装加速度计振动信号经过 Signal Conditioner 和 AD Converter 后实时进入 FPGA诊断类别由 4 个 LED 以二进制形式显示。每个轴承重复测试 10 次共进行100 次在线诊断。论文 Figure 14Online Test Confusion Matrix最终 Macro-F1 为96.98%Precision 为97.27%Recall 为97.00%。主要错误集中在 Ball Fault两个轻微滚动体故障被判为中等一个中等故障被判为严重。作者认为这与滚动体故障存在随机滑移、周期特征不稳定有关。如果把这篇论文压缩成一句话先用 FFT 把振动信号变成浅层网络更容易处理的频域特征再用 DKD 把深模型的判别能力压进单层 CNN最后通过 16-bit 定点量化、并行 MAC、算子融合和模块复用把整个诊断网络变成 Kintex-7 上可实时运行的数字逻辑。对于“信号处理 端侧部署”的研究这篇文章最值得借鉴的是完整证据链Raw vibration → FFT → Lightweight Model → Knowledge Distillation → Quantization → FPGA RTL → Resource Utilization → Latency → Power → Online Test同时论文也给出了清晰的限制单层 CNN 的跨设备泛化能力有限如果为了 Domain Adaptation、Transfer Learning 增加网络分支和 Loss就会重新增加 FPGA 资源压力。因此 BearingPGA-Net 的核心并不是“网络越小越好”而是在诊断性能、可部署性、并行度、硬件资源和功耗之间做系统级折中。