Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >基于声音信号的工业设备异常检测

基于声音信号的工业设备异常检测

作者头像
deephub
发布于 2023-08-30 01:04:27
发布于 2023-08-30 01:04:27
61600
代码可运行
举报
文章被收录于专栏:DeepHub IMBADeepHub IMBA
运行总次数:0
代码可运行

异常检测主要目标是将异常事件与正常事件区分开来,因此才有了“异常”一词。本文将介绍基于声音信号的工业机械异常检测,使用的数据集是MIMII声音数据集,该数据集很容易在网上获得。

异常检测的任务可以通过多种方式实现。其中最简单的一种方法是将问题作为监督学习任务,并对正常和异常声音训练分类器。这种方法的问题是异常情况很少,相应地异常类的数据量有限,这样会对分类性能有很大的影响。还有一种无监督学习技术,在不使用标签的情况下就可以进行判断,这种方法使用一种常见的神经网络架构就是自编码器。

自编码器在深度学习中非常流行,并且已经成功地应用于许多任务中,例如噪声去除,数据压缩等。

自编码器

自编码器架构由三个块构成,即编码器块、隐空间和解码器块,如下图所示。模型学习数据的隐藏内部表示,该数据使用比原始数据更低的维度来描述数据集的信息。

异常检测

现在引入了自编码器后,可以利用该模型执行异常检测。首先使用机器在正常状态下运行的声音信号来训练构建的自编码器模型。然后将使用训练好的模型在错误阈值的帮助下执行异常检测。

因为我们这里使用声音数据集,所以需要从原始声音信号中提取特征作。声音的特征提起一般会使用梅尔频谱图。这里使用librosa包完成了如下所示的操作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 def extract_signal_features(signal, sr, n_mels=64, frames=5, n_fft=1024):
     # Compute a mel-scaled spectrogram:
     mel_spectrogram = librosa.feature.melspectrogram(
         y=signal,
         sr=sr,
         n_fft=n_fft,
         n_mels=n_mels
     )
     
     # Convert to decibel (log scale for amplitude):
     log_mel_spectrogram = librosa.power_to_db(mel_spectrogram, ref=np.max)
     
     # Generate an array of vectors as features for the current signal:
     features_vector_size = log_mel_spectrogram.shape[1] - frames + 1
     
     # Skips short signals:
     dims = frames * n_mels
     if features_vector_size < 1:
         return np.empty((0, dims), np.float32)
     
     # Build N sliding windows (=frames) and concatenate them to build a feature vector:
     features = np.zeros((features_vector_size, dims), np.float32)
     for t in range(frames):
         features[:, n_mels * t: n_mels * (t + 1)] = log_mel_spectrogram[:, t:t + features_vector_size].T
         
     return features

一旦提取了特征并创建了由正常声音组成的数据集,下一步就是设计自动编码器模型架构。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 def autoencoder_baseline(input_dims):
     #input layer
     inputLayer = Input(shape=(input_dims,))
     #Encoder block
     x = Dense(128, activation="relu")(inputLayer)
     x = Dense(64, activation="relu")(x)
     #Latent space
     x = Dense(32, activation="relu")(x)
     #Decoder block
     x = Dense(64, activation="relu")(x)
     x = Dense(128, activation="relu")(x)
     #Output layer
     x = Dense(input_dims, activation=None)(x)
     #Create and return the model
     return Model(inputs=inputLayer, outputs=x)

然后使用准备好的数据集训练创建的模型,如下所示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 #Set model parameters
 #Shape of the input data
 input_shape = n_mels*frames
 #Loss function
 model_loss = 'mean_squared_error'
 
 #Optimizer learning rate
 lr = 1e-3
 
 #Batch size and number of epochs to train the model
 batch_size = 512
 
 epochs = 30
 
 #Create the baseline model and compile it with the hyperparameters
 baseline_model = autoencoder_baseline(input_shape)
 
 baseline_model.compile(loss=model_loss,
                        optimizer=Adam(learning_rate=lr))
 #Model training
 baseline_hist = baseline_model.fit(
     train_data, 
     train_data,
     batch_size=batch_size,
     epochs=epochs,
     verbose=2
 )

模型的学习曲线如下图所示。从图中可以明显看出,模型损失开始时相当高,但随着训练的进行迅速下降。

模型训练好后就可以用来进行信号重建。这次要重建的信号既包含来自机器的正常声音,也包含异常声音。使用训练后的模型重建正常和异常声音对应的rmse损失使用下图中的直方图来描述。从图中可以明显看出,正常声音的rmse低于异常声音。

结果非常直观,因为模型在训练阶段没有异常声音的数据,这就是相应的rmse高于正常操作声音的原因。

所以我们可以将重构的rmse值与阈值进行比较,进行异常检测。阈值设置为正常声音的平均rmse,因为异常声音的rmse将高于此值。该模型使用标准分类指标进行评估,如精度,召回率,f1分数和准确性,如下所示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
                    precision recall    f1-score   support
 
       Normal       0.73      0.78      0.76       120
      Anomaly       0.77      0.72      0.74       120
 
     accuracy                           0.75       240
    macro avg       0.75      0.75      0.75       240
 weighted avg       0.75      0.75      0.75       240

可以看到效果还是和不错的,F1值已经达到了0.75.

总结

本文的完整代码可以在下面给出的github链接中访问。

https://github.com/naveed88375/AI-ML/tree/master/Anomaly%20Detection%20in%20Industrial%20Equipment

作者:Naveed

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DeepHub IMBA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
AI在运维中的异常检测:智能化运维的新时代
在信息技术飞速发展的今天,企业的IT系统变得越来越复杂,确保系统的稳定和高效运行成为运维工作的重中之重。传统的运维方式往往依赖于运维人员的经验和手工操作,无法及时发现和处理系统中的异常。而人工智能(AI)技术的引入,为运维中的异常检测提供了强大的支持。通过AI技术,系统能够自动分析海量数据,快速检测并预警异常情况,大大提升运维效率和系统稳定性。本文将详细介绍AI在运维中异常检测的应用,并通过具体代码示例展示其实现过程。
Echo_Wish
2024/12/19
3971
AI在运维中的异常检测:智能化运维的新时代
基于Pytorch实现的语音情感识别
在语音情感识别中,我首先考虑的是语音的数据预处理,按照声音分类的做法,本人一开始使用的是声谱图和梅尔频谱。声谱图和梅尔频谱这两种数据预处理在声音分类中有着非常好的效果,具体的预处理方式如下,但是效果不佳,所以改成本项目使用的预处理方式,这个种预处理方式是使用多种处理方式合并在一起的。
夜雨飘零
2022/09/07
2.3K0
张海腾:语音识别实践教程
作为智能语音交互相关的从业者,今天以天池学习赛:《零基础入门语音识别:食物声音识别》为例,带大家梳理一些自动语音识别技术(ASR)关的知识,同时给出线上可运行的完整代码实践,供大家练习。
Datawhale
2021/06/01
2.6K0
张海腾:语音识别实践教程
[机器学习|理论&实践] ​ 半监督学习的研究与应用
半监督学习的核心挑战之一是有效地利用未标记数据,提高模型的泛化性能。在深度学习领域,有一些令人振奋的前沿研究方向,为解决这一问题提供了新的思路。
数字扫地僧
2023/12/10
6270
用 Python 训练自己的语音识别系统,这波操作稳了!
近几年来语音识别技术得到了迅速发展,从手机中的Siri语音智能助手、微软的小娜以及各种平台的智能音箱等等,各种语音识别的项目得到了广泛应用。
AI科技大本营
2020/06/24
2.5K0
基于Keras的序列异常检测自编码器
在处理长字符串序列列表,如氨基酸结构、产品序列号或用户UID时,创建一个验证流程来检测序列中的异常是一项挑战,尤其是当我们不确定序列的正确格式或结构时。异常可能是由于错误或故意为之而遵循稍微不同或不寻常的格式的字符串,或者是一个极其罕见的字符串。
用户3578099
2024/09/10
2270
基于Keras的序列异常检测自编码器
人工智能在医疗中的应用-基于深度学习的心电图异常检测全解析
在医疗领域,心电图(ECG)是一种常见的检测工具,用于评估心脏功能和检测心脏疾病。随着人工智能技术的发展,利用机器学习和深度学习算法对心电图进行异常检测变得越来越普遍。本文将介绍如何利用人工智能技术对心电图数据进行分析和异常检测,并提供实际的代码实例来展示这一过程。
一键难忘
2024/10/13
1.1K0
Some methods of deep learning and dimensionality reduction
上一篇主要是讲了全连接神经网络,这里主要讲的就是深度学习网络的一些设计以及一些权值的设置。神经网络可以根据模型的层数,模型的复杂度和神经元的多少大致可以分成两类:Shallow Neural Network和Deep Neural Network。比较一下两者:
西红柿炒鸡蛋
2019/01/23
4210
人工智能与情感计算:AI如何理解人类情感
随着人工智能(AI)技术的迅猛发展,机器不仅能够进行复杂的数据计算和处理,还开始探索理解和回应人类情感的能力。这一领域被称为情感计算(Affective Computing)。通过情感计算,AI能够在情感层面与人类进行互动,提升用户体验,并为诸多领域带来创新和改变。本文将详细介绍情感计算的基本原理、实现方法、应用场景和未来发展。
Echo_Wish
2025/01/06
7560
人工智能与情感计算:AI如何理解人类情感
人工智能生成内容(AIGC)在图像生成领域的技术进展
人工智能生成内容(AIGC,AI-Generated Content)在图像生成领域取得了显著的进展。本文将探讨从卷积神经网络(CNN)到风格迁移(Style Transfer)的技术演变,并通过代码实例展示其应用。
一键难忘
2024/06/21
1.4K0
Tensorflow2.X中使用自编码器图像重构实战---文末送书
图像重构是计算机视觉领域里一种经典的图像处理技术,而自编码器算法便是实现该技术的核心算法之一。在了解了自编码器的基本原理之后,本节就通过实例讲解如何利用Tensorflow2.X来一步步地搭建出一个自编码器并将其应用于MNIST手写图像数据的重构当中。
Color Space
2022/09/26
5820
基于声音的鸟类物种检测
拥有Python经验的女性数据科学家,博士候选人,鸟类学家,数据分析师和软件工程师共同参与了一系列为期两周的冲刺,共同致力于该项目。
代码医生工作室
2020/01/17
2.6K0
基于声音的鸟类物种检测
使用 FastAI 和即时频率变换进行音频分类
目前深度学习模型能处理许多不同类型的问题,对于一些教程或框架用图像分类举例是一种流行的做法,常常作为类似“hello, world” 那样的引例。FastAI 是一个构建在 PyTorch 之上的高级库,用这个库进行图像分类非常容易,其中有一个仅用四行代码就可训练精准模型的例子。随着v1版的发布,该版本中带有一个data_block的API,它允许用户灵活地简化数据加载过程。今年夏天我参加了Kaggle举办的Freesound General-Purpose Audio Tagging 竞赛,后来我决定调整其中一些代码,利用fastai的便利做音频分类。本文将简要介绍如何用Python处理音频文件,然后给出创建频谱图像(spectrogram images)的一些背景知识,示范一下如何在事先不生成图像的情况下使用预训练图像模型。
AI研习社
2019/05/15
1.9K0
使用Python实现深度学习模型:智能安防监控与异常检测
在这篇教程中,我们将构建一个深度学习模型,用于智能安防监控和异常检测。我们将使用TensorFlow和Keras库来实现这一目标。通过这个教程,你将学会如何处理视频数据、构建和训练模型,并将模型应用于实际的异常检测任务。
Echo_Wish
2024/07/27
2590
使用Python实现深度学习模型:智能安防监控与异常检测
别等服务器炸了才慌!深度学习让运维更“未卜先知”
想象一下,你正悠闲地喝着咖啡,突然一个电话打来:“服务器宕了,赶紧处理!”你一查,发现磁盘空间爆满、CPU 负载飙升,用户抱怨连连。这时候,你只能像消防员一样冲进数据中心,疯狂修修补补,直到系统恢复。
Echo_Wish
2025/05/15
530
别等服务器炸了才慌!深度学习让运维更“未卜先知”
使用Python实现深度学习模型:语音合成与语音转换
语音合成和语音转换是语音处理中的重要任务,广泛应用于语音助手、语音导航、语音翻译等领域。通过使用Python和深度学习技术,我们可以构建一个简单的语音合成与语音转换系统。本文将介绍如何使用Python实现这些功能,并提供详细的代码示例。
Echo_Wish
2024/07/19
3000
使用Python实现深度学习模型:语音合成与语音转换
AI“捕风捉影”:深度学习如何让网络事件检测更智能?
在现代网络运维中,光靠人肉盯着日志是不现实的。每天大量的网络请求、异常流量、错误日志,如洪水般涌来,靠人工筛选基本是“竹篮打水”。但深度学习的加入,让网络事件检测不再只是简单的规则匹配,而是能根据历史数据学习出异常模式,精准找出潜在威胁。
Echo_Wish
2025/04/19
1000
AI“捕风捉影”:深度学习如何让网络事件检测更智能?
异常检测算法速览(Python代码)
异常检测是通过数据挖掘方法发现与数据集分布不一致的异常数据,也被称为离群点、异常值检测等等。
算法进阶
2022/06/01
9800
异常检测算法速览(Python代码)
KDD Cup 2021:时间序列异常检测问题开源Baseline
评测:如上图异常区域为2759至2820,最后答案定位的位置,在前后100的区间内都算正确。比如这里答案只要在2659 和 2920 区间内都算正确。
炼丹笔记
2021/05/14
1.5K0
KDD Cup 2021:时间序列异常检测问题开源Baseline
使用GAN进行异常检测
自从基于Stable Diffusion的生成模型大火以后,基于GAN的研究越来越少了,但是这并不能说明他就没有用了。异常检测是多个研究领域面临的重要问题,包括金融、医疗保健和网络安全。检测和正确分类未见的异常是一个具有挑战性的问题,多年来已经以许多不同的方式解决了这个问题。而今天我们要介绍一种基于GAN的异常检测方法,GAN是一种深度学习模型,可以学习生成与给定数据集相似的真实数据样本。GAN的这一特性表明它们可以成功地用于异常检测,以前的基于GAN的生成模型都是使用GAN的生成器,而异常检测则是需要使用GAN的鉴别器。
deephub
2023/12/14
7390
使用GAN进行异常检测
推荐阅读
相关推荐
AI在运维中的异常检测:智能化运维的新时代
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档