vggish
语法
描述
例子
下载VGGish网络
下载并解压缩音频工具箱VGGish™模型。
类型vggish
在命令窗口。如果音频VGGish工具箱模型没有安装,那么函数提供了一个链接到网络权值的位置。下载模式,点击链接。将文件解压缩到一个位置在MATLAB的道路。
另外,执行这些命令下载并解压缩VGGish模型到你的临时目录中。
downloadFolder = fullfile (tempdir,“VGGishDownload”);loc = websave (downloadFolder,“https://ssd.mathworks.com/金宝appsupportfiles/audio/vggish.zip”);VGGishLocation = tempdir;VGGishLocation解压(loc)目录(fullfile (VGGishLocation,“vggish”))
通过输入检查安装是否成功vggish
在命令窗口。如果安装了网络,那么函数返回SeriesNetwork
(深度学习工具箱)对象。
vggish
ans = SeriesNetwork属性:层:[24×1 nnet.cnn.layer.Layer] InputNames: {“InputBatch”} OutputNames: {“regressionoutput”}
负载Pretrained VGGish网络
加载一个pretrained VGGish卷积神经网络和检查层和类。
使用vggish
加载pretrained VGGish网络。输出净
是一个SeriesNetwork
(深度学习工具箱)对象。
网= vggish
网= SeriesNetwork属性:层:[24×1 nnet.cnn.layer.Layer] InputNames: {“InputBatch”} OutputNames: {“regressionoutput”}
查看网络体系结构使用层
财产。网络有24层。可学的权重有九层,其中六个是卷积层和三个完全连接层。
net.Layers
ans = 24×1层阵列层:1“InputBatch”图像输入96×64×64 2的conv1卷积图像卷积3×3×1步[1]和填充“相同”3“relu”relu relu 4“pool1”马克斯池2×2马克斯池步(2 - 2)和填充“相同”5 conv2卷积128 3×3×64旋转步[1]和填充‘相同’6”relu2 relu relu 7“pool2”马克斯池2×2马克斯池步(2 - 2)和填充“相同”256“conv3_1”卷积3×3×128旋转步[1]和填充“相同”9“relu3_1”relu relu conv3_2的卷积256 3×3×256旋转步[1]和填充“相同”11的relu3_2 relu relu 12“pool3”马克斯池2×2马克斯池步(2 - 2)和填充“相同”13 conv4_1卷积512 3×3×256旋转步[1]和填充“相同”14的relu4_1 relu relu 15 conv4_2卷积512 3×3×512旋转步[1]和填充“相同”16的relu4_2 relu relu 17“pool4”马克斯池2×2马克斯池步(2 - 2)和填充“相同”18 fc1_1完全连接4096完全连接层19 ' relu5_1 relu relu 20“fc1_2”完全连接4096完全连接层21 ' relu5_2 relu relu 22 fc2的完全连接128完全连接层23的EmbeddingBatch relu relu 24 regressionoutput回归输出均方误差
使用analyzeNetwork
(深度学习工具箱)视觉探索网络。
analyzeNetwork(净)
提取特征使用VGGish
读入一个音频信号提取特征嵌入。
[audioIn, fs] = audioread (“Ambiance-16-44p1-mono-12secs.wav”);
情节和听音频信号。
t =(0:元素个数(audioIn) 1) / fs;情节(t, audioIn)包含(“时间(s)”)ylabel (“Ampltiude”)轴紧
%的声音,调用soundsc (audioIn fs)
VGGish需要预处理音频信号来匹配输入格式用于训练网络。预处理步骤包括音频信号重采样和计算数组的梅尔·色。学习更多关于梅尔·色,看到的melSpectrogram
。使用vggish进行预处理
对信号进行预处理和提取的梅尔·色传递给VGGish。可视化的一个声音(随机选取的。
色= vggishPreprocess (audioIn, fs);arbitrarySpect =色(::1,兰迪(大小(谱图,4)));冲浪(arbitrarySpect EdgeColor =“没有”)视图(90、-90)包含(“梅尔乐队”)ylabel (“帧”)标题(“VGGish梅尔声谱图”)轴紧
创建一个VGGish神经网络。使用vggish
函数需要安装pretrained VGGish网络。如果网络没有安装,功能提供了一个链接到下载pretrained模型。
网= vggish;
调用预测
与网络预处理梅尔声谱图嵌入图像提取特征。作为一个返回的功能嵌入numFrames
128年——矩阵,numFrames
是个人谱图和128的数量在每个特征向量元素的数量。
特点=预测(净色);[numFrames, numFeatures] =大小(特性)
numFrames = 24
numFeatures = 128
可视化VGGish功能嵌入。
冲浪(特性,EdgeColor =“没有”)视图(-90年[90])包含(“特性”)ylabel (“帧”)标题(“VGGish功能嵌入”)轴紧
将学习使用VGGish
在本例中,您将学习VGGish回归模型的音频分类的任务。
下载并解压缩环境声音分类数据集。该数据集由录音贴上一个10个不同的音频声音类(ESC-10)。
downloadFolder = matlab.internal.examples.download金宝appSupportFile (“音频”,“esc - 10. - zip”);解压缩(downloadFolder tempdir) dataLocation = fullfile (tempdir,“ESC-10”);
创建一个audioDatastore
对象来管理数据并把它分割为训练和验证集。调用countEachLabel
显示声音类的分布和数量的独特的标签。
广告= audioDatastore (dataLocation IncludeSubfolders = true, LabelSource =“foldernames”);labelTable = countEachLabel(广告)
labelTable =10×2表_____电锯标签数* * * 40 clock_tick 40 crackling_fire 40 crying_baby 40狗40直升机40雨40公鸡38 sea_waves 40打喷嚏40
确定类的总数。
numClasses =身高(labelTable);
调用splitEachLabel
将数据集分为训练和验证集。检查标签的分布在训练集和验证集。
[adsTrain, adsValidation] = splitEachLabel(广告,0.8);countEachLabel (adsTrain)
ans =10×2表_____电锯标签数* * * 32 clock_tick 32 crackling_fire 32 crying_baby 32狗32直升机32雨32公鸡30 sea_waves 32打喷嚏32
countEachLabel (adsValidation)
ans =10×2表_____电锯标签数* * * 8 clock_tick 8 crackling_fire 8 crying_baby 8只狗8直升机8雨8公鸡8 sea_waves 8打喷嚏8
VGGish网络预计音频预处理到日志梅尔·色。使用vggishPreprocess
提取声音从火车集。有多个每个音频信号的谱图。复制标签,这样他们是一一对应的谱图。
overlapPercentage =75年;trainFeatures = [];trainLabels = [];而hasdata (adsTrain) [audioIn fileInfo] =阅读(adsTrain);特点= vggishPreprocess (audioIn、fileInfo.SampleRate OverlapPercentage = OverlapPercentage);numSpectrograms =大小(功能,4);trainFeatures =猫(4 trainFeatures功能);trainLabels =猫(2 trainLabels repelem (fileInfo.Label numSpectrograms));结束
从验证集和提取谱图复制标签。
validationFeatures = [];validationLabels = [];segmentsPerFile = 0(元素个数(adsValidation.Files), 1);idx = 1;而hasdata (adsValidation) [audioIn fileInfo] =阅读(adsValidation);特点= vggishPreprocess (audioIn、fileInfo.SampleRate OverlapPercentage = OverlapPercentage);numSpectrograms =大小(功能,4);validationFeatures =猫(4 validationFeatures功能);validationLabels =猫(2 validationLabels repelem (fileInfo.Label numSpectrograms));segmentsPerFile (idx) = numSpectrograms;idx = idx + 1;结束
加载VGGish模型,并将它转换成一个layerGraph
(深度学习工具箱)对象。
网= vggish;lgraph = layerGraph (net.Layers);
使用removeLayers
(深度学习工具箱)删除最后回归的输出层图。删除回归层后,新的图的最后一层是ReLU层命名“EmbeddingBatch”
。
lgraph = removeLayers (lgraph,“regressionoutput”);lgraph.Layers(结束)
ans = ReLULayer属性:名称:“EmbeddingBatch”
使用addLayers
(深度学习工具箱)添加一个fullyConnectedLayer
(深度学习工具箱),一个softmaxLayer
(深度学习工具箱)和一个classificationLayer
(深度学习工具箱)图。设置WeightLearnRateFactor
和BiasLearnRateFactor
新的完全连接层的快10这样学习是新层的传输层。
lgraph = addLayers (lgraph, (…fullyConnectedLayer (numClasses Name =“FCFinal”WeightLearnRateFactor = 10, BiasLearnRateFactor = 10) softmaxLayer (Name =“softmax”)classificationLayer (Name =“classOut”)));
使用connectLayers
(深度学习工具箱)softmax附加完全连接,和分类层到层图。
lgraph = connectLayers (lgraph,“EmbeddingBatch”,“FCFinal”);
定义训练选项,使用trainingOptions
(深度学习工具箱)。
miniBatchSize = 128;选择= trainingOptions (“亚当”,…MaxEpochs = 5,…MiniBatchSize = MiniBatchSize,…洗牌=“every-epoch”,…ValidationData = {validationFeatures, validationLabels},…ValidationFrequency = 50,…LearnRateSchedule =“分段”,…LearnRateDropFactor = 0.5,…LearnRateDropPeriod = 2,…OutputNetwork =“best-validation-loss”,…Verbose = false,…情节=“训练进步”);
训练网络,使用trainNetwork
(深度学习工具箱)。
[trainedNet, netInfo] = trainNetwork (trainFeatures、trainLabels lgraph,选项);
每个音频文件分成几段注入VGGish网络。结合预测每个文件的验证集使用少数服从多数原则决定。
validationPredictions =分类(trainedNet validationFeatures);idx = 1;validationPredictionsPerFile =分类;为2 = 1:元素个数(adsValidation.Files) validationPredictionsPerFile(2, 1) =模式(validationPredictions (idx: idx + segmentsPerFile (ii) 1));idx = idx + segmentsPerFile (ii);结束
使用confusionchart
(深度学习工具箱)评估网络的性能验证集。
图(单位=“归一化”位置= (0.2 - 0.2 0.5 - 0.5));confusionchart (adsValidation.Labels validationPredictionsPerFile,…标题= sprintf (“验证数据混淆矩阵\ nAccuracy = % 0.2 f % % ",意味着(validationPredictionsPerFile = = adsValidation.Labels) * 100),…ColumnSummary =“column-normalized”,…RowSummary =“row-normalized”)
输出参数
净
——Pretrained VGGish神经网络
SeriesNetwork
对象
Pretrained VGGish神经网络,作为一个返回SeriesNetwork
(深度学习工具箱)对象。
引用
[1]Gemmeke, Jort F。,Daniel P. W. Ellis, Dylan Freedman, Aren Jansen, Wade Lawrence, R. Channing Moore, Manoj Plakal, and Marvin Ritter. 2017. “Audio Set: An Ontology and Human-Labeled Dataset for Audio Events.” In2017年IEEE国际会议音响、演讲和信号处理(ICASSP),776 - 80。新奥尔良,LA: IEEE。https://doi.org/10.1109/ICASSP.2017.7952261。
[2]好时,肖恩,微酸的乔杜里,丹尼尔·p·w·埃利斯Jort f . Gemmeke Jansen, r·钱宁摩尔Manoj Plakal,等。2017。“CNN架构对大规模音频分类。“在2017年IEEE国际会议音响、演讲和信号处理(ICASSP)131 - 35。新奥尔良,LA: IEEE。https://doi.org/10.1109/ICASSP.2017.7952132。
扩展功能
C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。
使用笔记和限制:
只有
激活
和预测
支持对象的功能。金宝app创建一个
SeriesNetwork
为代码生成对象,明白了负载Pretrained网络代码生成(MATLAB编码器)。
GPU的代码生成
生成NVIDIA的CUDA®代码®GPU使用GPU编码器™。
使用笔记和限制:
只有
激活
,分类
,预测
,predictAndUpdateState
,resetState
支持对象的功能。金宝app创建一个
SeriesNetwork
为代码生成对象,明白了负载Pretrained网络代码生成(GPU编码器)。
版本历史
介绍了R2020b
MATLABコマンド
次のMATLABコマンドに対応するリンクがクリックされました。
コマンドをMATLABコマンドウィンドウに入力して実行してくださ了对いweb这类ブラウザーはMATLABコマンドをサポートしていません。
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。