Классифицируйте сигналы ECG на Simulink Используя глубокое обучение

То В этом примере показано, как использовать вейвлет, преобразовывает и нейронная сеть для глубокого обучения в модели Simulink(R), чтобы классифицировать сигналы ECG. Этот пример использует предварительно обученную сверточную нейронную сеть от Классифицировать Временных рядов Используя пример Анализа и Глубокого обучения Вейвлета Wavelet Toolbox™, чтобы классифицировать сигналы ECG на основе изображений от CWT данных временных рядов. Для получения информации об обучении смотрите, Классифицируют Временные ряды Используя Анализ Вейвлета и Глубокое обучение (Wavelet Toolbox).

Описание данных о ECG

Этот пример использует данные о ECG из Физиосетевой базы данных. Это содержит данные из трех групп людей:

  1. Люди с сердечной аритмией (ARR)

  2. Люди с застойной сердечной недостаточностью (CHF)

  3. Люди с нормальными ритмами пазухи (NSR)

Это включает 96 записей от людей с ARR, 30 записей от людей со швейцарским франком и 36 записей от людей с NSR. ecg_signals MAT-файл содержит тестовые данные о ECG в формате временных рядов. Классификатор изображений в этом примере различает ARR, швейцарский франк и NSR.

Алгоритмический рабочий процесс

Блок-схему для алгоритмического рабочего процесса модели Simulink показывают.

Глубокое обучение ECG модель Simulink

Модель Simulink для классификации сигналов ECG показывают. Когда модель запускается, Video Viewer блок отображает классифицированный сигнал ECG.

open_system('ecg_dl_cwtMDL');

Подсистема предварительной обработки ECG

ECG Preprocessing подсистема содержит MATLAB Function блокируйтесь, который выполняет CWT, чтобы получить scalogram сигнала ECG и затем обрабатывает scalogram, чтобы получить изображение. Это также содержит Image Classifier блок из Deep Learning Toolbox™, который загружает предварительно обученную сеть от trainedNet.mat и выполняет предсказание для классификации изображений на основе CNN глубокого обучения SqueezeNet.

open_system('ecg_dl_cwtMDL/ECG Preprocessing');

ScalogramFromECG функциональный блок задает функцию под названием ecg_to_scalogram это:

  • Использование 65 536 выборок данных о ECG с двойной точностью, как введено.

  • Создайте представление частоты времени от данных о ECG путем применяния преобразования Вейвлета.

  • Получите scalogram из коэффициентов вейвлета.

  • Преобразуйте scalogram в изображение размера (227 227 3).

Функциональная подпись ecg_to_scalogram показан.

type ecg_to_scalogram
function ecg_image  = ecg_to_scalogram(ecg_signal)

% Copyright 2020 The MathWorks, Inc.

persistent jetdata;
if(isempty(jetdata))
    jetdata = colourmap(128,'single');
end
% Obtain wavelet coefficients from ECG signal
cfs = cwt_ecg(ecg_signal);  
% Obtain scalogram from wavelet coefficients
image = ind2rgb(im2uint8(rescale(cfs)),jetdata);
ecg_image = im2uint8(imresize(image,[227,227]));

end

Постобработка ECG

ECG Postprocessing Блок MATLAB function задает label_prob_image функция, которая находит метку для изображения scalogram на основе самого высокого счета от баллов выведенной классификатором изображений. Это выводит изображение scalogram с меткой и доверием overlayed.

type label_prob_image
function final_image = label_prob_image(ecg_image, scores, labels)

% Copyright 2020 The MathWorks, Inc.

scores = double(scores);
% Obtain maximum confidence 
[prob,index] = max(scores);
confidence = prob*100;
% Obtain label corresponding to maximum confidence
label = erase(char(labels(index)),'_label');
text = cell(2,1);
text{1} = ['Classification: ' label];
text{2} = ['Confidence: ' sprintf('%0.2f',confidence) '%'];
position = [135 20 0 0; 130 40 0 0];
final_image = insertObjectAnnotation(ecg_image,'rectangle',position,text,'TextBoxOpacity',0.9,'FontSize',9);

end

Запустите симуляцию

Чтобы проверить алгоритм и отобразить метки и оценку достоверности тестового сигнала ECG, загруженного в рабочей области, запустите симуляцию.

set_param('ecg_dl_cwtMDL', 'SimulationMode', 'Normal');
sim('ecg_dl_cwtMDL');

Генерация кода

С GPU Coder™ можно ускорить выполнение модели на NVIDIA® графические процессоры и сгенерировать код CUDA® для модели. Смотрите Генерацию кода для Глубокого обучения Модель Simulink, чтобы Классифицировать Сигналы ECG (GPU Coder) для получения дополнительной информации.

Очистка

Закройте модель Simulink.

close_system('ecg_dl_cwtMDL/ECG Preprocessing');
close_system('ecg_dl_cwtMDL');