主要内容

代码生成深度学习仿真软件模型对ECG信号进行分类金宝app

这个例子演示了如何使用强大的信号处理技术和卷积神经网络对ECG信号进行分类。我们还将展示如何CUDA®代码可以从模型生成®模型。金宝app下面的例子使用了pretrained CNN网络的时间序列分类使用小波分析和深度学习小波工具箱™对ECG信号进行分类的例子基于图像变换的时间序列数据。有关培训的信息,明白了时间序列分类使用小波分析和深度学习(小波工具箱)

的视频演示如何执行software-in-the-loop(银),processor-in-the-loop(公益诉讼)模拟,和部署这个例子来英伟达杰森®,明白了//www.tatmou.com/videos/deep -学习-在-模型- - 金宝appnvidia gpu - - ecg信号的分类- - 1621401016961. - html

这个例子说明了以下概念:

  • 模型仿真软件中的分类应用程序。金宝app使用MATLAB函数块进行预处理和小波变换的心电数据。使用图像分类器块加载pretrained深度学习工具箱™的网络和执行ECG数据的分类。

  • 为代码生成配置模型。

  • 生成一个CUDA仿真软件的可执行模型。金宝app

第三方的先决条件

验证GPU环境

验证所需的编译器和库运行这个示例设置正确,使用coder.checkGpuInstall函数。

envCfg = coder.gpuEnvConfig (“主机”);envCfg。DeepLibTarget =“cudnn”;envCfg。DeepCodegen = 1;envCfg。安静= 1;coder.checkGpuInstall (envCfg);

心电图数据描述

这个示例使用心电图数据生理网数据库。它包含数据从三个群体:

  1. 人与心律失常(ARR)

  2. 人与充血性心力衰竭(CHF)

  3. 人与正常窦性节律(NSR)

它包括96录音与加勒比人,与瑞士法郎30录音人,36个录音与NSR的人。的ecg_signalsMAT-file包含测试心电图数据时间序列格式。图像分类器在这个例子中区分ARR,瑞士法郎,NSR。

算法流程

算法的框图模型的工作流模型。金宝app

心电图深度学习仿真软件模型金宝app

分类EC金宝appG信号的仿真软件模型。模型运行时,视频查看器块显示心电信号分类。

open_system (“ecg_dl_cwt”);

心电图预处理子系统

心电图预处理子系统包含一个MATLAB函数获得量图块执行连续小波变换的心电信号,然后处理量图来获取一个图像和一个图像分类器阻止加载pretrained网络trainedNet.mat并执行对图像分类的预测基于SqueezeNet深度学习CNN。

open_system (“ecg_dl_cwt /心电图预处理”);

ScalogramFromECG功能块定义了一个函数调用ecg_to_scalogram:

  • 利用65536年的双精度心电图数据样本作为输入。

  • 创建时间频率表示的心电图数据通过应用小波变换。

  • 小波系数的获得量图。

  • 量图转换为图像的大小(227 x227x3)。

的函数签名ecg_to_scalogram显示。

类型ecg_to_scalogram
函数ecg_image = ecg_to_scalogram (ecg_signal) %版权2020年MathWorks公司持久jetdata;如果(isempty (jetdata)) jetdata = ecgColorMap(128年,“单”);结束%获取ECG信号的小波系数cfs = cwt_ecg (ecg_signal);%获得量图的图像小波系数= ind2rgb (im2uint8(重新调节(cfs)), jetdata);ecg_image = im2uint8 (imresize(形象,[227227]));结束

心电图后处理

心电图后处理MATLAB功能块定义了label_prob_image函数,发现量图的标签图像基于成绩的得分最高输出的图像分类器。它输出的量图图像标签印刷和信心。

类型label_prob_image
函数final_image = label_prob_image (ecg_image、分数、标签)% 2020 - 2021版权MathWorks, inc .)分数=双(分数);%获得最大信心(概率、索引)= max(分数);信心=概率* 100;%获得标签对应于最大信心标签=擦掉(char(标签(索引)),“_label”);文本=细胞(2,1);文本{1}=(“分类:”标签);{2}=[文本的信心:“sprintf (% 0.2 f,信心)' % ');位置= [135 20 0 0;130年40 0 0]; final_image = insertObjectAnnotation(ecg_image,'rectangle',position,... text,'TextBoxOpacity',0.9,'FontSize',9); end

运行仿真

配置参数对话框打开。

模拟目标窗格中,选择GPU加速。在深度学习组,选择目标库cuDNN

验证算法和显示测试的标签和信心得分ECG信号加载在工作区中,仿真运行。

set_param (“ecg_dl_cwt”,“SimulationMode”,“正常”);sim卡(“ecg_dl_cwt”);

生成和构建仿真软件模型金宝app

代码生成窗格中,选择语言作为c++并使生成GPU的代码

开放代码生成> GPU的代码窗格。在子类别,使cuBLAS,cuSOLVERcuFFT

生成和构建在主机GPU通过使用仿真软件模型金宝appslbuild命令。代码生成器的文件在一个地方建立文件夹,一个子文件夹命名ecg_dl_cwt_ert_rtw在你当前的工作目录。

状态= evalc (“slbuild (ecg_dl_cwt)”);

生成的CUDA®代码

子文件夹命名ecg_dl_cwt_ert_rtw包含生成c++代码对应不同的块仿真软件模型和所执行的特定操作的块。金宝app例如,该文件trainedNet0_ecg_dl_cwt0.h包含c++类包含特定的属性,如numLayers和成员等功能getBatchSize (),预测()。这个类代表了pretrainedSqueezeNet已加载仿真软件模型。金宝app

清理

关闭仿真软件模型。金宝app

close_system (“ecg_dl_cwt /心电图预处理”);close_system (“ecg_dl_cwt”);

另请参阅

功能

相关的话题