YAMNet神经网络
下载并解压缩音频工具箱™ YAMNet的模型。
类型亚姆内特
在命令窗口。如果未安装YAMNet的音频工具箱模型,则该函数提供指向网络权重位置的链接。要下载模型,请单击该链接。将文件解压缩到MATLAB路径上的某个位置。
或者,执行以下命令下载YAMNet模型并将其解压缩到临时目录。
downloadFolder=fullfile(tempdir,“YAMNetDownload”); loc=websave(下载文件夹,'https://ssd.mathworks.com/金宝appsupportfiles/audio/yamnet.zip'); YAMNetLocation=tempdir;解压(loc,YAMNetLocation)addpath(fullfile,YAMNetLocation,“yamnet”))
通过键入来检查安装是否成功亚姆内特
在命令窗口。如果已安装网络,则函数返回系列网络
(深度学习工具箱)对象
亚姆内特
ans=具有以下属性的系列网络:层:[86×1 nnet.cnn.layer.layer]输入名称:{'input_1'}输出名称:{'Sound'}
加载一个预训练的YAMNet卷积神经网络并检查层和类。
使用亚姆内特
加载预先训练的YAMNet网络。净输出是a系列网络
(深度学习工具箱)对象
净=yamnet
net = SeriesNetwork with properties: Layers: [86×1 net.cnn.layer. layer] InputNames: {'input_1'} OutputNames: {'Sound'}
使用查看网络体系结构层
网络有86层。有28层具有可学习的权重:27个卷积层和1个完全连接层。
网。层
ans=86x1带层的层阵列:1“输入_1”图像输入96×64×1图像2“conv2d”卷积32 3×3×1卷积带跨距[2]和填充“相同的”3“b”批标准化批标准化带32个通道4“激活”ReLU ReLU 5“深度_conv2d”分组卷积32组1 3×3×1卷积带跨距[1]和填充“相同的”6“L11”批标准化批标准化与32个通道7“激活\u 1”ReLU ReLU 8“conv2d\u 1”卷积64 1×1×32卷积与步幅[1]和填充“相同的”9“L12”批标准化批标准化与64个通道10“激活2”ReLU ReLU 11“深度2”conv2d_1”分组卷积64组1 3×3×1卷积与步幅[2]和填充“相同的”12“L21”批标准化批标准化与64个通道13“激活_3”ReLU ReLU 14“conv2d_2”卷积128 1×1×64卷积与步长[1]和填充“相同的”15“L22”批次标准化批次标准化128个通道16“激活4”ReLU ReLU 17“深度2”conv2d 2“分组卷积128组1 3×3×1卷积带步长[1 1]和填充“相同的”18“L31”批次标准化批次标准化128通道19“激活_5”ReLU ReLU 20“conv2d_3”卷积128 1×1×128卷积带步长[1]和填充“相同的”21“L32”批次标准化批次标准化128个通道22“激活”6“ReLU ReLU 23“深度”conv2d_3”分组卷积128组1 3×3×1卷积带步长[2]和填充“相同”24“L41”批次标准化批次标准化128通道25“激活7”ReLU ReLU 26“conv2d_4”卷积256 1×1×128卷积带步长[1]和填充“相同的”27“L42”批次标准化批次标准化256通道28“激活”8“ReLU ReLU 29“深度”conv2d_4”分组卷积256组1 3×3×1卷积带步长[1]和填充“相同”30“L51”批次标准化批次标准化256个通道31“激活_9”ReLU ReLU 32“conv2d_5”卷积256个1×1×256卷积带步长[1]和填充“相同”33“L52”批次标准化批次标准化256个通道34“激活”10“ReLU ReLU 35”深度2“conv2d”5“分组卷积256组1 3×3×1卷积带步长[2]和填充“相同”36“L61”批次标准化批次标准化256通道37“激活11”ReLU ReLU 38“conv2d_6”卷积512 1×1×256卷积带步长[1]和填充“相同的”39“L62”批次标准化批次标准化与512个通道40“激活”\u 12“ReLU ReLU 41”深度”\u conv2d\u 6“分组卷积512组1 3×3×1卷积,步幅[1]和填充“相同的”42“L71”批标准化批标准化与512个通道43“激活\u 13”ReLU ReLU 44“conv2d\u 7”卷积512 1×1×512带步长的卷积[1]和填充“相同的”45“L72”批标准化批标准化与512个通道46“激活”\u 14“ReLU ReLU 47”深度”\u conv2d\u 7“分组卷积512组1 3×3×1卷积带步长[1 1]和填充“相同的”48“L81”批标准化批标准化与512个通道49“激活\u 15”ReLU ReLU 50“conv2d\u 8”卷积512 1×1×512带步长的卷积[1]和填充“相同的”51“L82”批次标准化批次标准化512通道52“激活”\u 16“ReLU ReLU 53”深度”\u conv2d\u 8“分组卷积512组1 3×3×1卷积带步长[1 1]和填充“相同的”54“L91”批标准化批标准化512通道55“激活”17“ReLU ReLU 56“conv2d_9”卷积512 1×1×512带步长卷积[1]和填充“相同的”57“L92”批次标准化批次标准化与512个通道58“激活18”ReLU ReLU 59“深度”conv2d_9”分组卷积512组1 3×3×1卷积步幅[1]和填充“相同的”60“L101”批次标准化批次标准化512通道61“激活_19”ReLU ReLU 62“conv2d_10”卷积512 1×1×512带步长卷积[1]和填充“相同的”63“L102”批次标准化批次标准化与512个通道64“激活”\u 20“ReLU ReLU 65”深度”\u conv2d\u 10“分组卷积512组1 3×3×1卷积,步幅[1]和填充“相同的”66“L111”批标准化批标准化512通道67“激活\u 21”ReLU ReLU 68“conv2d\u 11”卷积512 1×1×512带步长卷积[1]和填充“相同”69“L112”批次标准化批次标准化512通道70“激活”22“ReLU ReLU 71“深度”conv2d_11”分组卷积512组1 3×3×1卷积步幅[2]和填充“相同”72“L121”批次标准化批次标准化512通道73“激活”\u 23“ReLU ReLU 74“conv2d\u 12”卷积1024 1×1×512卷积步长[1],并填充“相同”75“L122”批次标准化批次标准化批次标准化1024通道76“激活”\u 24“ReLU ReLU 77”深度_conv2d_12' Grouped Convolution 1024 groups of 1 3×3×1 convolutions with stride [1 1] and padding 'same' 78 'L131' Batch Normalization Batch normalization with 1024 channels 79 'activation_25' ReLU ReLU 80 'conv2d_13' Convolution 1024 1×1×1024 convolutions with stride [1 1] and padding 'same' 81 'L132' Batch Normalization Batch normalization with 1024 channels 82 'activation_26' ReLU ReLU 83 'global_average_pooling2d' Global Average Pooling Global average pooling 84 'dense' Fully Connected 521 fully connected layer 85 'softmax' Softmax softmax 86 'Sound' Classification Output crossentropyex with 'Speech' and 520 other classes
要查看网络学习的课程名称,您可以查看班级
分类输出层(最后一层)的属性。通过指定前10个元素查看前10个类。
净层(结束)类(1:10)
ans=10×1分类演讲儿童演讲,儿童演讲对话叙述,独白喋喋不休的演讲合成器大喊大叫
使用分析网络
(深度学习工具箱)以可视化方式浏览网络。
分析网络(net)
YAMNet发布时附带了相应的声音类本体,您可以使用阴阳图
对象
ygraph=yamnetGraph;p=绘图(ygraph);布局(p,“分层”)
本体图绘制了所有521种可能的声音类别。绘制了与呼吸音相关的声音子图。
allRespiratorySounds = dfsearch (ygraph,“呼吸音”);ygraphSpeech=子图(YGraphs,所有呼吸声音);绘图(ygraphSpeech)
YAMNet网络要求您通过将音频信号转换为网络训练的采样率,然后提取重叠的对数mel谱图,来预处理和提取音频信号的特征。本例将介绍所需的预处理和特征提取,以匹配用于训练YAMNet的预处理和特征提取。这个分类声音
函数为您执行这些步骤。
读入音频信号进行分类。将音频信号重新采样到16 kHz,然后将其转换为单精度。
[audioIn,fs0]=音频读取(“计数-16-44p1-mono-15秒波形”); fs=16e3;audioIn=重采样(audioIn,fs,fs0);audioIn=单个(audioIn);
定义mel谱图参数,然后使用光谱图
作用
FFT长度=512;numBands=64;频率范围=[125 7500];窗长=0.025*fs;重叠长度=0.015*fs;melSpect=melSpect频谱图(音频,fs,...“窗口”,hann(窗长,“周期性”),...“重叠长度”,重叠长度,...“FFTLength”,fft长度,...“频率范围”,频率范围,...“NumBands”,麻木,...“过滤器组规范化”,“没有”,...“窗口规范化”错误的...“光谱类型”,“震级”,...“FilterBankDesignDomain”,“扭曲的”);
将mel光谱图转换为对数刻度。
melSpect=log(melSpect+单个(0.001));
重新调整mel光谱图的方向,使时间沿第一维度成行。
melSpect=melSpect.;[numsftftwindows,numBands]=大小(melSpect)
numsftftwindows=1551
numBands=64
将光谱图分成96帧,重叠48帧。沿第四维放置这些帧。
frameWindowLength=96;frameOverlapLength=48;hopLength=frameWindowLength-frameOverlapLength;numHops=floor((numSTFTWindows-frameWindowLength)/hopLength)+1;frames=0(frameWindowLength,NumHands,1,numHops,“喜欢”,melSpect);对于hop = 1:numHops range = 1 + hopLength*(hop-1):hopLength*(hop -1) + frameWindowLength;跳帧(::1)= melSpect(范围:);终止
创建YAMNet网络。
net=yamnet();
对光谱图像进行分类。
类别=分类(网络、帧);
将音频信号分类为最常出现的声音。
mySound=模式(类)
我的声音=明确的演讲
下载并解压缩空气压缩机数据集[1].该数据集由处于健康状态或7种故障状态之一的空气压缩机的记录组成。
网址='//www.tatmou.com/金宝appsupportfiles/audio/AirCompressorDataset/AirCompressorDataset.zip';downloadFolder=fullfile(tempdir,“空气压缩机数据集”); datasetLocation=tempdir;如果~exist(完整文件)(tempdir,“空气压缩机数据集”),“dir”)loc=websave(下载文件夹,url);解压(loc,fullfile)(tempdir,“空气压缩机数据集”))终止
创建一个音频数据存储
对象来管理数据并将其拆分为训练集和验证集。
ads=音频数据存储(下载文件夹,“包含子文件夹”符合事实的“标签源”,“foldernames”);[adsTrain,adsValidation]=splitEachLabel(ads,0.8,0.2);
从数据存储中读取音频文件并保存采样率以备将来使用。重置数据存储以将读取指针返回到数据集的开头。收听音频信号并在时域中绘制信号。
[x,fileInfo]=read(adsTrain);fs=fileInfo.SampleRate;reset(adsTrain)sound(x,fs)figure t=(0:size(x,1)-1)/fs;plot(t,x)xlabel(‘时间’)头衔(‘国家’+字符串(fileInfo.Label))轴牢固的
使用从列车组中提取Mel光谱图YAMNET预处理
.每个音频信号都有多个频谱图。复制标签,使其与频谱图一一对应。
emptyLabelVector=adsTrain.Labels;emptyLabelVector(:)=[];trainFeatures=[];trainLabels=emptyLabelVector;虽然hasdata(adsTrain)[audioIn,fileInfo]=read(adsTrain);features=yamnetPreprocess(audioIn,fileInfo.SampleRate);numSpectrums=size(features,4);trainFeatures=cat(4,trainFeatures,features);trainLabels=cat(2,trainLabels,repmat(fileInfo.Label,1,numSpectrums));终止
从验证集中提取特征并复制标签。
validationFeatures=[];validationLabels=emptyLabelVector;虽然hasdata(adsvalization)[audioIn,fileInfo]=read(adsvalization);features=yamnetPreprocess(audioIn,fileInfo.SampleRate);numSpectrums=size(features,4);validationFeatures=cat(4,validationFeatures,features);validationLabels=cat(2,validationLabels,repmat(fileInfo.Label,1,numSpectrums));终止
空气压缩机数据集只有八类。
读入YAMNet并将其转换为分层图
(深度学习工具箱).
如果您的计算机上未安装YAMNet pretrained network,请执行以下命令下载YAMNet模型并将其解压缩到临时目录。
downloadFolder=fullfile(tempdir,“YAMNetDownload”); loc=websave(下载文件夹,'https://ssd.mathworks.com/金宝appsupportfiles/audio/yamnet.zip'); YAMNetLocation=tempdir;解压(loc,YAMNetLocation)addpath(fullfile,YAMNetLocation,“yamnet”))
在您阅读YAMNet并将其转换为分层图
(深度学习工具箱),替换最终版本完全连接层
(深度学习工具箱)决赛呢分类层
(深度学习工具箱)以反映新的任务。
uniqueLabels=unique(adsTrain.Labels);numLabels=numel(uniqueLabels);net=yamnet;lgraph=layerGraph(net.Layers);newDenseLayer=fullyConnectedLayer(numLabels,“姓名”,“稠密”);lgraph=替换层(lgraph,“稠密”,newDenseLayer);newClassificationLayer=classificationLayer(“姓名”,“声音”,“班级”,独一无二的标签);lgraph=替换层(lgraph,“声音”,新分类层);
要定义培训选项,请使用培训选项
(深度学习工具箱).
miniBatchSize=128;validationFrequency=floor(numel(列车标签)/miniBatchSize);options=trainingOptions(“亚当”,...“初始学习率”,3e-4,...“MaxEpochs”2....“MiniBatchSize”,小批量,...“洗牌”,“每个时代”,...“情节”,“培训进度”,...“冗长”错误的...“验证数据”,{single(validationFeatures),validationLabels},...“验证频率”,验证频率);
要训练网络,请使用列车网络
(深度学习工具箱).
空气压缩机网络=列车网络(列车特征、列车标签、lgraph、选项);
将经过培训的网络保存到空气压缩机垫
。您现在可以通过加载空气压缩机垫
文件。
拯救空气压缩机垫空气压缩机
参考文献
[1] Verma,Nishchal K.等人,“利用空气压缩机的声学信号进行智能状态监测。”可靠性会刊,第65卷,第1期,2016年3月,第291-309页。DOI.org(Crossref),doi:10.1109/TR.2015.2459684。
[1] 音频集:音频事件的本体和人类标记数据集2017年IEEE声学、语音和信号处理国际会议(ICASSP),IEEE,2017,第776-80页。DOI.org(Crossref),doi:10.1109/ICASSP.2017.7952261。
[2] 用于大规模音频分类的CNN架构2017年IEEE声学、语音和信号处理国际会议(ICASSP),IEEE,2017,第131-35页。DOI.org(Crossref),doi:10.1109/ICASSP.2017.7952132。
使用说明和限制:
只有激活
和预测
支持对象函数。金宝app
创建系列网络
对象生成代码,请参见用于代码生成的负载预训练网络(MATLAB编码器).
使用说明和限制:
只有激活
,分类
,预测
,预测和更新房地产
和resetState
支持对象函数。金宝app
创建系列网络
对象生成代码,请参见用于代码生成的负载预训练网络(GPU编码器).
您单击了与此MATLAB命令对应的链接:
通过在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您还可以从以下列表中选择网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家/地区站点不适合您所在位置的访问。