💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
2.2 算例2:数据预处理和使用诊断应用程序提取特征(信号时域特征和频谱特征)
⛳️赠与读者
👨💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。
或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎
💥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.