用于故障诊断的残差收缩网络
目录
2. Architecture of the DRSN(DRSN的架构)
2.2 Architecture of the Developed DRSN-CS(DRSN-CS的架构)
2.3 Architecture of the Developed DRSN-CW(DRSN-CW的架构)
1. Introduction(介绍)
本文主要是针对于判断机械传动系统中,噪声带来的影响而导致故障诊断失误的情况,为了解决这样一个问题,而提出了一种残差收缩网络,通过机器学习的方法来自适应确定软阈值去消除噪声的影响。
并且该文提出来两种情况下的残差收缩网络:DRSN-CS 和 DRSN-CW。
2. Architecture of the DRSN(DRSN的架构)
本文的模型架构是基于深度残差卷积网络而提出来的,其残差单元是Resnet的基本组成部分,与一般Convnet不同的是,Resnet有一个shortcut(捷径),能够使网络更深。示意图如下图所示:
(c)对通道的扩充也同理。一倍数目的卷积核 + 步长为2,in which the number of channels of the output feature map is doubled
(d)RBU表示的就是(a)(b)(c)中的残差模块。
2.1 Soft thresholding(软阈值)
软阈值通常用来过滤掉噪声,但是对于不同的情况,需要专业知识去确定阈值大小,下图是软阈值的函数图以及导数图:
a)表示软阈值的曲线,将0附近的值变为0,其他值不变。
b)表示其梯度,两边为1,中间为0。
这样一个经典的软阈值函数,通常只适用于部分情况,对于大多数情况,还是需要特定的估计测试才能确定好适用的阈值函数。所以一种自适应阈值的方式将可解决这样一种情况。
2.2 Architecture of the Developed DRSN-CS(DRSN-CS的架构)
DRSN-CS是Resnet的一种变体,使用了自适应软阈值层的方式(残差收缩层)去消除噪声,这个残差收缩层的结构如下图所示:
其中经过残差的两次卷积后,将结果取绝对值,之后经过GAP(全局平均池化),将W缩减为1,之后再经过两次全连接层得到z,该结果进行Sigmoid得到 ,最后将GAP的结果取平均后与 相乘,得到软阈值的结果。最后与原输入进行阈值化。(PS. 该论文中有keras的源代码和tf的源代码),我写了下pytorch收缩层的源代码,如下:
class Shrinkage(nn.Module):
def __init__(self, gap_size, channel):
super(Shrinkage, self).__init__()
self.gap = nn.AdaptiveAvgPool2d(gap_size)
self.fc = nn.Sequential(
nn.Linear(channel, channel),
nn.BatchNorm1d(channel),
nn.ReLU(inplace=True),
nn.Linear(channel, 1),
nn.Sigmoid(),
)
def forward(self, x):
x_raw = x
x = torch.abs(x)
x_abs = x
x = self.gap(x)
x = torch.flatten(x, 1)
average = torch.mean(x, dim=1, keepdim=True)
# average = x
x = self.fc(x)
x = torch.mul(average, x)
x = x.unsqueeze(2).unsqueeze(2)
# 软阈值化
sub = x_abs - x
zeros = sub - sub
n_sub = torch.max(sub, zeros)
x = torch.mul(torch.sign(x_raw), n_sub)
return x
经过测试,在图像分类任务中,这个模型效果不太行,与baseline相比,几乎没有提升,还有点下降,对于图像来讲这个还是慎用,因为它将channel给平均下来了。
2.3 Architecture of the Developed DRSN-CW(DRSN-CW的架构)
DRSN-CW与DRSN-CS的架构类似,不同点在于它没有将channel给平均掉,结构图如下:
从图中可知,Average运算消失了,这是他们唯一不同的点,程序修改也很简单,代码如下:
class Shrinkage(nn.Module):
def __init__(self, gap_size, channel):
super(Shrinkage, self).__init__()
self.gap = nn.AdaptiveAvgPool2d(gap_size)
self.fc = nn.Sequential(
nn.Linear(channel, channel),
nn.BatchNorm1d(channel),
nn.ReLU(inplace=True),
nn.Linear(channel, 1),
nn.Sigmoid(),
)
def forward(self, x):
x_raw = x
x = torch.abs(x)
x_abs = x
x = self.gap(x)
x = torch.flatten(x, 1)
# average = torch.mean(x, dim=1, keepdim=True)
average = x
x = self.fc(x)
x = torch.mul(average, x)
x = x.unsqueeze(2).unsqueeze(2)
# 软阈值化
sub = x_abs - x
zeros = sub - sub
n_sub = torch.max(sub, zeros)
x = torch.mul(torch.sign(x_raw), n_sub)
return x
同样,在图像分类任务中,这个模型效果效果提升十分明显,在测试时,准确率提升3%左右,训练时,提升的效果8%左右,对于图像来说,这个效果还是可以的。
4. Conclusion(结论)
创新点:在Resnet中的残差模块,增加了一个收缩层(自适应软阈值层)去消除无关噪声——残差收缩网络,这样一个网络有两种变体,对于图像来讲,建议使用DRSN-CW,有3%左右的性能提升。
论文地址:知乎 - 安全中心
相关文章
- 网络号、主机号、子网号、子网掩码、子网划分
- [文献阅读]用于大规模图像检索的深度哈希网络研究
- 对象检测网络中的NMS算法详解
- 【SLAM】开源 | 一种新颖的基于3D激光雷达的深度学习网络,用于自动驾驶汽车和机器人应用中的位置识别
- 2023年最新整理的 Linux 网络和故障排除命令大全,强烈建议收藏!
- 网络升级宝典:从SD-WAN到SASE,该如何升级到未来就绪的数字网络架构?
- [Bioinformatics | 论文简读] 用于从单细胞 RNA 测序数据中预测基因调控的图注意力网络
- [IEEE TMI | 论文简读] PLN:用于几乎无监督的医学图像分割的类寄生网络
- 用于 Kubernetes 网络的 Cilium:为什么我们使用它以及为什么我们喜欢它
- 【Java 网络编程】TCP 简介
- Go语言网络爬虫条目处理管道
- Linux网络配置:最佳实践与应用(linux网络配置与应用)
- 谷歌推出邻居感知网络(NAN)示例应用 可用于检测手机之间的大约距离
- 安装Oracle:网络配置指南(oracle安装网络配置)
- 《30天打造安全工程师》第05天:从简单的网络命令讲起
- Linux下载机:突破网络束缚(下载机linux)
- 地址Linux网络安装之设置IP地址(linux网卡ip)
- 历时72天,TOR网络中钓出110多台“流氓服务器”
- 建设基于LinuxH3C网络:安全可靠的技术实现(linuxh3c)
- 分析 Oracle网络入侵报告研究分析(oracle入侵报告)
- CMD检测MySQL网络连接状况(cmd检测网络mysql)
- 基于VC实现的网络监听功能程序实例