使用机器学习和深度学习对城市声音进行分类(Matlab代码实现)

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

 ⛳️赠与读者

💥1 概述

📚2 运行结果

2.1 算例1——介绍示例,探索和可视化数据

2.2 算例2:数据预处理和使用诊断应用程序提取特征(信号时域特征和频谱特征)

2.3 算例3:模型训练和评估

2.4 算例4:模型部署

2.5 算例5:使用MFCC提取特征来训练机器学习模型

🎉3 参考文献

🌈4 Matlab代码、文档


 ⛳️赠与读者

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。

     或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

💥1 概述

使用机器学习和深度学习对城市声音进行分类,概述:

在本文中,我们将使用机器学习对城市声音数据集进行分类。请注意,我不会解释深度学习技术,尽管人们普遍认为深度学习技术可以获得更高的准确性。让我们先看看如何使用机器学习。对于这个项目,我们将使用一个名为Urbansound8K的数据集。该数据集包含来自10个类别的8732个城市声音片段(<=4秒),这些类别是:

- 空调
- 汽车喇叭
- 儿童游戏
- 狗叫
- 钻孔
- 发动机怠速
- 枪声
- 手锤
- 警报
- 街头音乐

这个例子中有7个算例:

算例1:介绍示例,探索和可视化数据
算例2:数据预处理和使用诊断应用程序提取特征(信号时域特征和频谱特征)
算例3:模型训练和评估
算例4:模型部署
算例5:使用MFCC提取特征来训练机器学习模型
算例6:使用小波分析和深度学习对城市声音进行分类

亮点:
为音频数据存储准备真实生活数据
标准化和归一化数字信号数据(采样率、位深度、通道数)
使用不同方法提取特征(时域信号特征和频谱特征、MFCC、离散小波变换、Haar 1D小波变换)
使用分类学习器应用程序训练机器学习模型
训练深度学习模型
将机器学习模型部署到嵌入式设备或桌面应用程序

需要:
MATLAB
音频工具箱
统计和机器学习工具箱
信号处理工具箱
DSP系统工具箱
小波工具箱
深度学习工具箱

📚2 运行结果

2.1 算例1——介绍示例,探索和可视化数据

2.2 算例2:数据预处理和使用诊断应用程序提取特征(信号时域特征和频谱特征)

2.3 算例3:模型训练和评估

2.4 算例4:模型部署


2.5 算例5:使用MFCC提取特征来训练机器学习模型


2.6 算例6:使用小波分析和深度学习对城市声音进行分类

 

部分代码:

function helperCreateRGBfromTF(ads,datafolder_scallogram)

for i = 1:length(ads.Files)
    clearvars sig
    Fs = 44100;
    sig = audioread(ads.Files{i});
    fb = cwtfilterbank('SignalLength',length(sig),...
    'SamplingFrequency',Fs,...
    'VoicesPerOctave',4);
    cfs = abs(fb.wt(sig(:)));
    im = ind2rgb(im2uint8(rescale(cfs)),jet(128));   
    imgLoc = fullfile(datafolder_scallogram,char(ads.Labels(i)));
    imFileName = strcat(char(ads.Labels(i)),'_',num2str(i),'.jpg');
    imwrite(imresize(im,[224 224]),fullfile(imgLoc,imFileName));
end
end

% findLayersToReplace(lgraph) finds the single classification layer and the
% preceding learnable (fully connected or convolutional) layer of the layer
% graph lgraph.
function [learnableLayer,classLayer] = findLayersToReplace(lgraph)

if ~isa(lgraph,'nnet.cnn.LayerGraph')
    error('Argument must be a LayerGraph object.')
end

% Get source, destination, and layer names.
src = string(lgraph.Connections.Source);
dst = string(lgraph.Connections.Destination);
layerNames = string({lgraph.Layers.Name}');

% Find the classification layer. The layer graph must have a single
% classification layer.
isClassificationLayer = arrayfun(@(l) ...
    (isa(l,'nnet.cnn.layer.ClassificationOutputLayer')|isa(l,'nnet.layer.ClassificationLayer')), ...
    lgraph.Layers);

if sum(isClassificationLayer) ~= 1
    error('Layer graph must have a single classification layer.')
end
classLayer = lgraph.Layers(isClassificationLayer);


% Traverse the layer graph in reverse starting from the classification
% layer. If the network branches, throw an error.
currentLayerIdx = find(isClassificationLayer);
while true
    
    if numel(currentLayerIdx) ~= 1
        error('Layer graph must have a single learnable layer preceding the classification layer.')
    end
    
    currentLayerType = class(lgraph.Layers(currentLayerIdx));
    isLearnableLayer = ismember(currentLayerType, ...
        ['nnet.cnn.layer.FullyConnectedLayer','nnet.cnn.layer.Convolution2DLayer']);
    
    if isLearnableLayer
        learnableLayer =  lgraph.Layers(currentLayerIdx);
        return
    end
    
    currentDstIdx = find(layerNames(currentLayerIdx) == dst);
    currentLayerIdx = find(src(currentDstIdx) == layerNames);
    
end
end

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]杨子明.基于图像和声音信号的城市轨道交通轨道线路病害识别技术研究[J].[2024-05-15].

[2]景春臻.基于深度学习的情感分类系统的研究与实现[D].北京邮电大学[2024-05-15].

[3]吉根林,戚小莎,王嘉琦.基于深度学习的视频异常检测研究综述[J].模式识别与人工智能, 2024(002):037.

🌈4 Matlab代码、文档

  • 21
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值