APReLU:跨界应用,用于机器故障检测的自适应ReLU | IEEE TIE 2020
论文的工作属于深度学习在工业界的应用,借鉴计算机视觉的解决方法,针对机器故障检测的场景提出自适应的APReLU,对故障检测的准确率有很大的提升。论文整体思想应该也可以应用于计算机视觉,代码也开源了,大家可以尝试下
来源:晓飞的算法工程笔记 公众号
论文: Deep Residual Networks with Adaptively Parametric Rectifier Linear Units for Fault Diagnosis
- 论文地址:https://ieeexplore.ieee.org/document/8998530/metrics#metrics
- 代码地址:https://github.com/zhao62/Adaptively-Parametric-ReLU
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参数,包含以下步骤:
- 用ReLU和GAP将输入特征映射到1D向量,获取正面特征(positive feature)的全局信息。用min(x, 0)和GAP将输入特征映射到另一个1D向量,获取负面特征(negative feature)的全局信息,负面信息可能包含某些有用的故障信息。GAP能够处理信号的偏移问题,将输入特征图信息压缩为两个1D向量,分别代表正面和负面信息。
- 将两个1D向量Concate到一起,进行FC-BN-ReLU-FC-BN-Sigmoid计算,两个FC的输出与输入特征的维度一致,最后sigmoid输出用于公式10的\(\alpha \in (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,对故障检测的准确率有很大的提升。论文整体思想应该也可以应用于计算机视觉,代码也开源了,大家可以尝试下。
如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】
APReLU:跨界应用,用于机器故障检测的自适应ReLU | IEEE TIE 2020的更多相关文章
- XMOS发布集单片机,AI,FPGA,DSP于一身的跨界处理器完全体xcore.ai,致力于AIOT,售价1美元起步
说明:XMOS这次致力于打造全新的,颠覆性的嵌入式平台,简化开发人员要学一堆东西才能开发一款高性能AIOT产品的痛点. XCORE.AI集单片机,AI,FPGA,DSP于一身,嵌入式软件开发人员可以灵 ...
- 跨界玩AR,迪奥、Hugo Boss等知名奢侈品牌将制造AR眼镜
Snapchat因为阅后即焚消息应用而被人所熟知,前段时间这家公司拓展主要业务,未来将不再只有消息应用,还有款名为"Spectacles"的AR太阳镜.内置了一个摄像头,戴上之后即 ...
- JJ Ying:越来越跨界的界面设计
2013年6月29号 星期六 小雨 @大众点评 利用非界面设计的专业知识来提升界面设计 向平面设计跨界 向工业设计的跨界 向摄影跨界 向动向的的跨界 向程序跨界 讲师介绍: JJ Ying / ...
- 跨界!Omi 发布多端统一框架 Omip 打通小程序与 Web 腾讯开源 2月28日
https://mp.weixin.qq.com/s/z5qm-2bHk_BCJAwaodrMIg 跨界!Omi 发布多端统一框架 Omip 打通小程序与 Web 腾讯开源 2月28日
- 2016年终总结--一个Python程序猿的跨界之旅
时间过得真快.感觉15年年终总结刚写完,16年就结束了.看了blog,16年就写了可怜的8篇,对我来说16年还算顺风顺水. 真正可能出乎意料的是年底我离开了呆了2年半的龙图游戏,临时放弃了用了3年半的 ...
- java web框架发展的新趋势--跨界轻型App
“跨界(cross over)在汽车界已然成风,将轿车.SUV.跑车和MPV等多种不同元素融为一体的混搭跨界车型,正在成为汽车设计领域的新趋势.从个人而言,当包容.多元的审美要求和物质要求越来越强烈时 ...
- 在路上:安全公司“跨界”SD-WAN
编者按:本文是SDNLAB“企业+”特别报道之一.“企业+”是SDNLAB重点打造的栏目,汇聚信息行业运营商.设备商.互联网公司.软件公司.集成公司.融创投资公司.科研院所等企业,重新定义IT行业撮合 ...
- 记View跨界平局
<?xml version="1.0" encoding="utf-8"? > <RelativeLayout xmlns:android=& ...
- 跨界 - Omi 发布多端统一框架 Omip 打通小程序与 Web
Omip 今天,Omi 不仅仅可以开发桌面 Web.移动 H5,还可以直接开发小程序!直接开发小程序!直接开发小程序! Github Omi 简介 Omi 框架是微信支付线研发部研发的下一代前端框架, ...
- 伪类+js实现CSS3 media queries跨界准确判断
@media screen and (min-width: 45em) { body:after{ content:"宽屏" } } var content = window.ge ...
随机推荐
- LTspice XVII使用笔记
安装 前往官网下载 https://www.analog.com/cn/design-center/design-tools-and-calculators/ltspice-simulator.htm ...
- 【framework】WMS启动流程
1 前言 WMS 是 WindowManagerService 的简称. (1)WMS 主要职责 窗口管理:负责启动.添加.删除窗口,管理窗口大小.层级,核心成员有:WindowContainer ...
- MySQL的MVCC概念介绍(转)
并发字段修改业务 最近在主要在做"工作流引擎"课题的预研工作,在涉及到"会签任务"(工作流业务概念,这与我们今天讨论文问题没有太多关联)的时候,遇到了一个并发修 ...
- centos7下修改mysql5.5字符集
1.查看现有数据库编码 show variables like "%char%"; 2.修改mysql配置文件:/etc/my.cnf(以实际安装环境为准) 在[client]字段 ...
- New Questions
1. C++/Qt 实现一个信号槽 #include <functional> #include <iostream> #include <vector> clas ...
- timeit测试函数执行时间
def list_append(): l = [] for i in range(5000): l.append(i) def list_insert(): l = [] for i in range ...
- ProtoBuffer-nanopb介绍
目录 一.需求 二.环境 三.相关概念 3.1 protocol buffer介绍 3.2 nanopb(支持C语言) 3.3 proto文件 四.proto基本语法 4.1 proto文件的定义 4 ...
- 【Azure事件中心】使用Python SDK(Confluent)相关方法获取offset或lag时提示SSL相关错误
问题描述 使用Python SDK(Confluent)相关方法获取offset或lag时, 提示SSL相关错误, 是否有更清晰的实例以便参考呢? 问题解决 执行代码,因为一直连接不成功,所以检查 c ...
- 【Azure 应用服务】Azure Function Python函数中,如何获取Event Hub Trigger的消息Event所属于的PartitionID呢?
问题描述 在通过Azure Function消费Event Hub中的消息时,我们从Function 的 Trigger Details 日志中,可以获得当前Funciton中处理的消息是哪一个分区( ...
- 【Azure 事件中心】Spring Boot 集成 Event Hub(azure-spring-cloud-stream-binder-eventhubs)指定Partition Key有异常消息
问题描述 在Spring Boot应用中集成Event Hub,发送消息时指定Partition Key,日志中发现异常: 应用使用Event Hub版本为 <dependency> &l ...