APReLU:跨界应用,用于机器故障检测的自适应ReLU | IEEE TIE 2020

论文的工作属于深度学习在工业界的应用,借鉴计算机视觉的解决方法,针对机器故障检测的场景提出自适应的APReLU,对故障检测的准确率有很大的提升。论文整体思想应该也可以应用于计算机视觉,代码也开源了,大家可以尝试下

来源:晓飞的算法工程笔记 公众号

论文: Deep Residual Networks with Adaptively Parametric Rectifier Linear Units for Fault Diagnosis

Introduction


  论文讨论的场景是电子设备的错误检测,由于在苛刻环境下长期运行,电子设备经常会不可避免地出现故障,进而造成意外和损失。而振动信号(vibration signal)通常包含由于机器故障引起脉冲和波动,可用来检测设备故障。近期,深度学习方法也被用于电子设备的错误检测中,将振动信号作为输入,输出当前设备是否正常。

  主流的分类神经网络使用一组完全相同的非线性变换来处理不同的输入,如图a所示,F、G和H代表非线性变化, = = =代表非线性变换是否相同。对于振动信号场景而言,相同健康状态的机器,由于当前操作不同,反馈的振动信号的差异可能较大,很难将不同波形的归为同一健康状态。相反的,不同健康状态的机器偶然会产生相同的振动信号,神经网络会将其映射到相近的区域,难以区分。综上,固定的非线性变换在振动信号场景中可能会对特征学习能力带来负面的影响,能够自动学习并根据输入信号使用不同的非线性变换是十分有意义的。

  论文基于ResNet提出了改进版ResNet-APReLU,如图b所示,根据输入信号赋予不同的非线性变换,具体是通过插入一个类似SE(squeeze-and-excitation)模块的子网来调整激活函数的斜率,能够大幅提升故障检测的准确率。由于论文的场景比较特殊,所以主要学习论文提出的方法,至于应用场景相关的部分和实验部分,就简单地带过就好了。

Fundamentals of classical ResNets


  论文以ResNet为基础,ResNet的核心结构如图2a所示,相信各位都很清楚,就不再介绍了。将ResNet应用到机器错误识别中,如图2b所示,输入振动信号,经过网络的特征提取后进行状态识别,判断机器是健康还是处于其它错误状态中。论文的核心是通过改进ReLU进行自适应的非线性变换,原版ReLU可公式化为:

Design of the developed ResNet-APReLU


Design of the fundamental architecture for APReLU

  APReLU集成了一个特别设计的子网,有点类似于SE模块,根据输入自适应地预测用于非线性变换的乘法因子,结构如图3a所示,输出channel-wise的ReLU参数,包含以下步骤:

  1. 用ReLU和GAP将输入特征映射到1D向量,获取正面特征(positive feature)的全局信息。用min(x, 0)和GAP将输入特征映射到另一个1D向量,获取负面特征(negative feature)的全局信息,负面信息可能包含某些有用的故障信息。GAP能够处理信号的偏移问题,将输入特征图信息压缩为两个1D向量,分别代表正面和负面信息。
  2. 将两个1D向量Concate到一起,进行FC-BN-ReLU-FC-BN-Sigmoid计算,两个FC的输出与输入特征的维度一致,最后sigmoid输出用于公式10的 α ∈ ( 0 , 1 ) \alpha \in (0, 1) α(0,1)因子:

Architecture of the developed ResNet-APReLU for vibration-based gearbox fault diagnosis

  基于APEeLU构建新的ResBlock,如图b所示,与原版的ResBlock基本一致,只是将ReLU替换为APReLU进行自适应非线性激活。APReLU的输出大小跟输入大小一样,可以简单地嵌入到各种网络中。完整的网络结构如图c所示,最后输出多个机器状态的预测,计算交叉熵损失,进行梯度下降学习。

Experimental Results


  从结果来看,针对机器故障的场景,论文提出的方法是十分有效的。

Conclustion


  论文的工作属于深度学习在工业界的应用,借鉴计算机视觉的解决方法,针对机器故障检测的场景提出自适应的APReLU,对故障检测的准确率有很大的提升。论文整体思想应该也可以应用于计算机视觉,代码也开源了,大家可以尝试下。



如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

work-life balance.

基于深度学习机器故障智能检测设备 作者:徐华 应用背景 在智能制造时代,随着工厂设备自动化程度不断越高,设备的预测性维护工作在生产中起着越来越重要的作用。预测性维护技术是未来智慧工厂重要构成部分,通过部署各种传感器,采集工厂设备各种运行状态数据,研究检测数据分析、预测算法微型化实现,快速便捷的对工业设备健康状况进行检测,在设备健康状况发生恶化之前做出合理的维护决策,消除设备的安全隐患。实现功能本项目基于RT-Thread、STM32开发板(NUCLEO-H743ZI2做了演示版本,ART-Pi只验证调试了传感器,跑通了流程,存在模拟i2c通信效率问题)、STM32 LSM6DSOX传感器、1.12寸OLED屏,SHT31温湿度传感器(温湿度数据暂时未参与建模)以及按键和指示灯设计一个MEMS振动监控设备。实际要求是利用检测设备运行状态数据预测机器的健康状况,但本项目只是一个原型设计,验证MCU采集传感器数据,并验证运行CNN学习模型离线预测的可行性,最终预测结果输出到OLED屏。RT-Thread 使用情况概述本项目功能基于RT-Thread开发,由于使用了Tensorflow,采用C/C++混合编程。NUCLEO-H743ZI2和ART-Pi开发板分别基于KEIL MDK和RT-Thread Studio开发。I2C分别采用了STM32HAL库(H743)和RT-Thread GPIO软件模拟(H750)调试开发。 硬件框架说明NUCLEO-H743ZI2开发板,传感器及OLED屏幕接I2C2_SDA和I2C2_SCL。BUTTON接PD_1,指示灯接PD_0。引脚对照如下: ART-Pi开发板,传感器及OLED屏幕接PH11和PH12。BUTTON接PH14,指示灯接PC7。 软件框架说明程序大体工作流程如下: 软件模块说明 NUCLEO-H743ZI2开发板软件: Source目录:Tensorflow Lite for Micro相关代码,收集传感器数据,基于训练的模型预测传感器状态,并在OLED上显示结果; Applications目录:main.c为主程序,其中增加了RT-Thread shell commands用于测试和调试。Sht31_sensor命令用于读取温湿度传感器值,实际暂时未参与建模和预测;sh1107g_oled命令为OLED显示测试命令;collect命令采集各状态传感器数据,输出到PC侧,整理标注后用于建模。Check命令为采集预测功能。主程序启动后,屏幕上显示提示信息,按button,开始运行。 Sensors:分别为LSM6DSOX,SHT31,OLED的驱动程序。 首先以RT-Thread shell commands形式,调试用到的各个外围设备。其中collect命令调试LSM6DSOX,并采集数据用于建模,采集的数据归为四类,在PC上构建CNN并训练模型,并保存模型文件。 通过xxd -i my_model.tflite > my_model_.cc命令,把模型文件转为数组形式。 Tensorflow相关代码用C++写,直接编译可能报如下错误,需要调整ARM Compile,以及不勾选Use MicroLIB。 ART-Pi开发板软件: 与NUCLEO-H743ZI2基本类似,最大区别是Tensorflow Lite是通过RT-Thread Settings添加的,i2c是gpio软件模拟的。检测识别代码放于下图红色标注处。 作品完整图片视频演示效果 首先是复位状态,屏幕上显示 “Measuring System Test for RT-Thread Test for Tensorflow Lite Micro Press button to start or stop” 按button,开始运行,屏幕显示预测状态。 调整传感器状态,MCU依据训练好的深度学习模型进行预测,屏幕上结果也跟着变化。 串口工具显示预测过程日志信息。 写在最后:首先感谢活动的组织者。作品只是一个原型设计,跑通了基本流程。算法没有优化。同时在ART-Pi上模拟I2C还在存在通信效率问题,还在优化。最后再次感谢组织者!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值