主要内容

调查使用石灰声谱图分类

这个例子展示了如何使用本地可判断的model-agnostic解释(石灰)调查深卷积神经网络的鲁棒性训练对谱图进行分类。石灰是可视化技术的哪些部分观察有助于网络的分类决策。下面的例子使用了imageLIME函数来理解哪些特性的谱图数据分类是最重要的。

在本例中,您创建和训练一个神经网络模拟四种时间序列数据进行分类:

  • 单一频率的正弦波

  • 三个正弦波的叠加

  • 时间序列的广义高斯峰

  • 高斯脉冲在时间序列

使这个问题更加现实,时间序列包括添加混杂的信号:一个常数低频背景正弦信号和大量的高频噪声。噪声时间序列数据是一个具有挑战性的序列分类的问题。你可以先处理这个问题将时间序列数据转化为一个时频光谱图,揭示了时间序列数据的基本特征。然后您可以输入声音图像分类网络。

生成波形和谱图

为四类生成时间序列数据。下面的例子使用了辅助函数generateSpectrogramData生成时间序列和相应的谱图数据。在这个例子中使用的辅助函数作为支持文件。金宝app

numObsPerClass = 500;类=分类([“SingleFrequency”,“ThreeFrequency”,“高斯”,“脉搏”]);numClasses =长度(类);[noisyTimeSeries、谱图、标签]= generateSpectrogramData (numObsPerClass、类);

计算光谱图图像的大小和数量的观察。

inputSize =大小(谱图(1 2));numObs =大小(声音(4);

图生成的数据

情节与噪声时间序列数据的一个子集。因为噪音相对振幅的信号,噪声在时域中出现的数据。这个特性使得分类一个具有挑战性的问题。

图numPlots = 12;i = 1: numPlots次要情节(3、4、i)情节(noisyTimeSeries(我,:))标题(标签(i))结束

情节的时频声音嘈杂的数据,在时间序列图的顺序相同。横轴是时间,纵轴是频率。

i = 1:12次要情节(3、4、i) imshow(谱图(:,:,1,我))colormapparula标题(标签(i))结束

特性从每个类都清晰可见,展示为什么从时域转换光谱图图像可以为这种类型的问题是有益的。例如,SingleFrequency类有一个峰值在基本频率,可见光谱图作为一个单杠。为ThreeFrequency类,这三个频率是可见的。

显示所有类微弱的乐队在低频率(图像的顶部),对应于背景正弦信号。

分割数据

使用splitlabels函数将数据分为训练和验证数据。80%的数据用于训练和验证为20%。

splitIndices = splitlabels(标签,0.8);trainLabels =标签(splitIndices {1});trainSpectrograms =色(:,:,:,splitIndices {1});valLabels =标签(splitIndices {2});valSpectrograms =色(:,:,:,splitIndices {2});

定义神经网络体系结构

创建一个与卷积,卷积神经网络批正常化,和ReLU层。

dropoutProb = 0.2;numFilters = 8;层= [imageInputLayer inputSize convolution2dLayer (3 numFilters“填充”,“相同”)batchNormalizationLayer reluLayer maxPooling2dLayer (3“步”2,“填充”,“相同”)convolution2dLayer (3 2 * numFilters“填充”,“相同”)batchNormalizationLayer convolution2dLayer (3、4 * numFilters,“填充”,“相同”)batchNormalizationLayer reluLayer globalMaxPooling2dLayer dropoutLayer (dropoutProb) fullyConnectedLayer (numClasses) softmaxLayer classificationLayer];

定义培训的选项

定义使用个优化器选择培训。洗牌每个时代通过设置的数据“洗牌”选项“every-epoch”。通过设置监控培训进展“阴谋”选项“训练进步”。抑制详细输出,集“详细”

选择= trainingOptions (“个”,“洗牌”,“every-epoch”,“阴谋”,“训练进步”,“详细”假的,“ValidationData”,{valSpectrograms, valLabels});

列车网络的

列车网络对谱图的图像进行分类。

网= trainNetwork (trainSpectrograms、trainLabels层,选择);

精度

分类验证观察使用训练网络。

predLabels =分类(净,valSpectrograms);

研究网络性能通过绘制混淆矩阵confusionchart

图confusionchart (valLabels predLabels,“归一化”,“row-normalized”)

网络准确分类验证谱图,准确率接近100%的类。

调查网络预测

使用imageLIME函数来理解哪些特性分类的图像数据是最重要的。

石灰的技术部分图像分成几个特性和生成合成观察通过随机包括或不包括的功能。每个像素在一个排除特性是平均图像像素的值所取代。网络分类这些合成的观察,并使用结果分数预测类,以及一个特性的存在与否,反应和预测训练回归问题更简单的模型在这个例子中,一个回归树。回归树试图接近网络的行为在一个观察。它学特性和显著影响类分数很重要。

自定义分割图

默认情况下,imageLIME使用superpixel分割将图像划分为特征。这个选项适用于自然图像,但不太有效的谱图数据。您可以指定一个自定义分割地图通过设置“分割”名称-值参数数值数组相同大小的图像,其中每个元素是一个整数对应的索引功能,像素。

的谱图数据,y维的声谱图图像有更好的特性(频率)比x维(时间)。生成一个分割图有240段,40-by-6电网,提供更高的频率分辨率。Upsample网格大小的图像通过使用imresize函数,指定upsampling方法“最近的”

featureIdx = 1:240;segmentationMap =重塑(featureIdx 6 40) ';segmentationMap = imresize (segmentationMap inputSize,“最近的”);

计算石灰地图

绘制光谱图和计算两个的石灰地图观察每个类。

obsToShowPerClass = 2;j = 1: obsToShowPerClass图i = 1:长度(类)idx =找到(valLabels = =类(i), obsToShowPerClass);%阅读测试图片和标签。testSpectrogram = valSpectrograms (:,:,:, idx (j));testLabel = valLabels (idx (j));%计算重要性石灰地图。地图= imageLIME(净、testSpectrogram testLabel,“NumSamples”,4096,“分割”,segmentationMap);%重新调节映射到图像的大小。mapRescale = uint8(255 *重新调节(地图));%绘制光谱图图像旁边的石灰地图。次要情节(2,2,我)imshow (imtile ({testSpectrogram, mapRescale}))标题(string (testLabel)) colormapparula结束结束

石灰地图表明,对于大多数类,网络是专注于分类的相关特性。例如,对于SingleFrequency类,网络关注频率对应的功率谱正弦波,而不是虚假的背景细节或噪音。

SingleFrequency类,网络使用频率进行分类。为脉冲高斯类,另外网络集中在正确的频率谱图的一部分。这三个类,网络不混淆背景频率可见的顶部附近所有的声音。这些信息不是有助于区分这些类(因为它存在于所有类),所以网络忽略它。相比之下,ThreeFrequency类,常数背景频率与网络的分类决策相关。这个类,网络不会忽略这个频率,但是把它和类似的重要性三个实际的频率。

imageLIME结果表明,网络是正确使用高峰时频色,不被虚假的背景对所有类除了正弦信号ThreeFrequency类,网络不区分这三个频率信号和低频背景。

另请参阅

|(信号处理工具箱)|

相关的话题