YAMNet神经网络
下载并解压缩用于YAMNet的Audio Toolbox™模型。
类型yamnet
在命令窗口。如果未安装YAMNet的音频工具箱模型,则该函数提供指向网络权重位置的链接。要下载模型,请单击该链接。将文件解压缩到MATLAB路径上的某个位置。
或者,执行以下命令将YAMNet模型下载并解压缩到临时目录。
downloadFolder = fullfile (tempdir,“YAMNetDownload”); loc=websave(下载文件夹,“https://ssd.mathworks.com/金宝appsupportfiles/audio/yamnet.zip”);YAMNetLocation = tempdir;YAMNetLocation解压(loc)目录(fullfile (YAMNetLocation,“yamnet”))
输入以下命令,检查安装是否成功yamnet
在命令窗口。如果网络已安装,则该函数返回aSeriesNetwork
(深度学习工具箱)对象。
yamnet
ans=具有以下属性的系列网络:层:[86×1 nnet.cnn.layer.layer]输入名称:{'input_1'}输出名称:{'Sound'}
加载一个预先训练的YAMNet卷积神经网络并检查层和类。
使用yamnet
加载预先训练的YAMNet网络。净输出是aSeriesNetwork
(深度学习工具箱)对象。
网= 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个类。
net.Layers(结束). class (1:10)
ans =10×1分类演讲儿童演讲,儿童演讲对话叙述,独白喋喋不休的演讲合成器大喊大叫
使用analyzeNetwork
(深度学习工具箱)可视化地探索网络。
analyzeNetwork(净)
YAMNet发布时带有相应的声音类本体,您可以使用阴阳图
对象。
ygraph = yamnetGraph;p =情节(ygraph);布局(p,“分层”)
本体论图绘制了所有521种可能的声音类。绘制与呼吸音相关的音的子图。
allRespiratorySounds = dfsearch (ygraph,“呼吸音”);ygraphSpeech =子图(ygraph allRespiratorySounds);情节(ygraphSpeech)
YAMNet网络要求您通过将音频信号转换为网络训练的采样率,然后提取重叠的对数mel谱图,来预处理和提取音频信号的特征。本例将介绍所需的预处理和特征提取,以匹配用于训练YAMNet的预处理和特征提取。这个classifySound
函数为您执行这些步骤。
读入音频信号进行分类。重新采样音频信号到16千赫,然后将其转换为单一精度。
[audioIn, fs0] = audioread (“Counting-16-44p1-mono-15secs.wav”);fs = 16 e3;audioIn =重新取样(fs, audioIn fs0);audioIn =单(audioIn);
定义mel谱图参数,然后利用该方法提取特征melSpectrogram
函数。
FFTLength = 512;numBands = 64;frequencyRange = [125 7500];windowLength = 0.025 * fs;overlapLength = 0.015 * fs;melSpect = melSpectrogram (audioIn fs,...“窗口”损害(windowLength“周期”),...“OverlapLength”overlapLength,...“FFTLength”FFTLength,...“频率范围”frequencyRange,...“NumBands”,麻木,...“FilterBankNormalization”,“没有”,...“WindowNormalization”假的,...“SpectrumType”,“级”,...“FilterBankDesignDomain”,“扭曲的”);
转换mel谱图到对数尺度。
melSpect = log(melSpect + single(0.001));
重新定位mel谱图,使时间以行的形式沿第一个维度排列。
melSpect = melSpect。”;[numSTFTWindows, numBands] =大小(melSpect)
numsftftwindows=1551
numBands = 64
将声谱图分成长度为96、重叠48的帧。沿着第四维度放置框架。
frameWindowLength = 96;frameOverlapLength = 48;hopLength = frameWindowLength - frameOverlapLength;numHops = floor((numSTFTWindows - frameWindowLength)/hopLength) + 1;帧= 0 (numHops frameWindowLength numBands 1,“喜欢”,melSpect);为hop = 1:numHops range = 1 + hopLength*(hop-1):hopLength*(hop -1) + frameWindowLength;跳帧(::1)= melSpect(范围:);结束
创建一个YAMNet网络。
网= yamnet ();
对谱图图像进行分类。
类别=分类(网络、帧);
将音频信号分类为最常出现的声音。
实例命名=模式(类)
我的声音=明确的演讲
下载并解压空压机数据集[1].该数据集由处于健康状态或7种故障状态之一的空压机的记录组成。
网址=“//www.tatmou.com/金宝appsupportfiles/audio/AirCompressorDataset/AirCompressorDataset.zip”;downloadFolder = fullfile (tempdir,“aircompressordataset”);datasetLocation = tempdir;如果~ (fullfile (tempdir,存在“AirCompressorDataSet”),“dir”) loc = websave(downloadFolder,url);解压缩(loc fullfile (tempdir“AirCompressorDataSet”))结束
创建一个audioDatastore
对象来管理数据,并将其分解为训练集和验证集。
广告= audioDatastore (downloadFolder,“IncludeSubfolders”,真的,“LabelSource”,“foldernames”);[adsTrain,adsValidation]=splitEachLabel(ads,0.8,0.2);
从数据存储中读取音频文件,并保存采样率供以后使用。重新设置数据存储,将读指针返回到数据集的开头。听音频信号,并在时域中绘制信号。
[x, fileInfo] =阅读(adsTrain);fs = fileInfo.SampleRate;reset(adsTrain) sound(x,fs) figure t = (0:size(x,1)-1)/fs;情节(t, x)包含(“时间(s)”)头衔(“国家=”+字符串(fileInfo.Label)轴牢固的
使用从列车组中提取Mel光谱图yamnetPreprocess
.每个音频信号都有多个声谱图。复制标签,使它们与光谱图一一对应。
emptyLabelVector = adsTrain.Labels;emptyLabelVector (:) = [];trainFeatures = [];trainLabels = emptyLabelVector;而hasdata(adsTrain) [audioIn,fileInfo] = read(adsTrain);特点= yamnetPreprocess (audioIn fileInfo.SampleRate);numSpectrums =大小(功能,4);trainFeatures =猫(4 trainFeatures功能);trainLabels =猫(2 trainLabels repmat (fileInfo.Label 1 numSpectrums));结束
从验证集中提取特征并复制标签。
validationFeatures=[];validationLabels=emptyLabelVector;而hasdata(adsValidation) [audioIn,fileInfo] = read(adsValidation);特点= yamnetPreprocess (audioIn fileInfo.SampleRate);numSpectrums =大小(功能,4);validationFeatures =猫(4 validationFeatures功能);validationLabels =猫(2 validationLabels repmat (fileInfo.Label 1 numSpectrums));结束
空压机数据集只有8类。
读入YAMNet并将其转换为layerGraph
(深度学习工具箱).
如果您的机器上没有安装YAMNet预训练网络,请执行以下命令将YAMNet模型下载并解压缩到临时目录。
downloadFolder = fullfile (tempdir,“YAMNetDownload”); loc=websave(下载文件夹,“https://ssd.mathworks.com/金宝appsupportfiles/audio/yamnet.zip”);YAMNetLocation = tempdir;YAMNetLocation解压(loc)目录(fullfile (YAMNetLocation,“yamnet”))
读入YAMNet并将其转换为layerGraph
(深度学习工具箱),替换finalfullyConnectedLayer
(深度学习工具箱)决赛呢classificationLayer
(深度学习工具箱)来反映新的任务。
uniqueLabels=unique(adsTrain.Labels);numLabels=numel(uniqueLabels);net=yamnet;lgraph=layerGraph(net.Layers);newDenseLayer=fullyConnectedLayer(numLabels,“名称”,“密集”);lgraph = replaceLayer (lgraph,“密集”, newDenseLayer);newClassificationLayer = classificationLayer (“名称”,“声音”,“类”,独一无二的标签);lgraph=替换层(lgraph,“声音”,新分类层);
要确定培训选项,请使用trainingOptions
(深度学习工具箱).
miniBatchSize=128;validationFrequency=floor(numel(列车标签)/miniBatchSize);options=trainingOptions(“亚当”,...“InitialLearnRate”3的军医,...“MaxEpochs”2....“MiniBatchSize”,小批量,...“洗牌”,“every-epoch”,...“阴谋”,“训练进步”,...“详细”假的,...“ValidationData”{单(validationFeatures), validationLabels},...“ValidationFrequency”, validationFrequency);
要训练网络,使用trainNetwork
(深度学习工具箱).
airCompressorNet = trainNetwork (trainFeatures trainLabels、lgraph选项);
保存训练有素的网络airCompressorNet.mat
.您现在可以通过加载airCompressorNet.mat
文件。
保存airCompressorNet.matairCompressorNet
参考文献
[1] Verma, Nishchal K.等,“基于智能状态的空气压缩机声信号监测”。IEEE可靠性汇刊,第65卷,第5期1, 2016年3月,第291-309页。DOI.org (Crossref), doi: 10.1109 / TR.2015.2459684。
净
-预训练的YAMNet神经网络SeriesNetwork
对象预训练YAMNet神经网络,返回为SeriesNetwork
(深度学习工具箱)对象。
[1] Gemmeke, Jort F., et al. <音频集:用于音频事件的本体和人类标记数据集>。2017 IEEE声学、语音和信号处理国际会议(ICASSP), IEEE, 2017, pp. 776-80。DOI.org (Crossref), doi: 10.1109 / ICASSP.2017.7952261。
Hershey, Shawn, et al. < CNN大规模音频分类架构>。2017 IEEE声学、语音和信号处理国际会议(ICASSP), IEEE, 2017,第131-35页。DOI.org (Crossref), doi: 10.1109 / ICASSP.2017.7952132。
使用注意事项及限制:
只有激活
和预测
支持对象函数。金宝app
创建一个SeriesNetwork
对象用于代码生成,请参见加载预训练网络以生成代码(MATLAB编码器).
使用注意事项及限制:
只有激活
,分类
,预测
,predictAndUpdateState
,resetState
支持对象函数。金宝app
创建一个SeriesNetwork
对象用于代码生成,请参见加载预训练网络以生成代码(GPU编码器).
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。