В Signal Labeler можно контролировать прогресс маркировки и смотреть статистику о марках с помощью Dashboard. Можно отобразить различные графики, чтобы быстро определить, сколько членов помечено, анализирует распределения каждой метки и подтверждает, что данные помечены правильно.
В разделе Selected Definition панели инструментов выберите одно или несколько определений метки, чтобы отобразиться от Definition Selection
выпадающий список. Отдельная вкладка для каждого определения метки появляется содержащий вкладки для каждого типа графика. Графики в Dashboard обеспечивают:
Процент членов помечен
Распределение значений метки
Распределение области или экземпляров точки через члены
Распределение видимой области (ROI) помечает значения длительности
Распределение точки помечает местоположения вовремя
По умолчанию Dashboard отображает процент помеченных членов и распределение значений метки выбранного определения метки. Можно выбрать дополнительные графики из галереи Plots на основе типа выбранного определения метки (атрибут, ROI, или указать метку).
Совет
Чтобы закрыть график, нажмите на X из его вкладки.
Чтобы закрыть все графики для определения метки, щелкните правой кнопкой по имени определения метки в его вкладке и нажмите Close.
Чтобы сменить положение графиков, показанных для определения метки, щелкните правой кнопкой по любому графику или в области вкладки определения метки и нажмите Sub-Tile
изменить размещение графиков к Single
, Left/Right
, или Top/Bottom
.
Чтобы просмотреть ваш прогресс маркировки, нажмите Dashboard в панели инструментов. По умолчанию, отображения приложения процент членов в вашем наборе данных, которые имеют по крайней мере одну метку для выбранного определения метки.
Совет
Можно задать количество ROI или указать метки, чтобы значить член в индикаторе выполнения. Нажмите на график и введите новое значение Threshold в панели инструментов.
Чтобы оценить качество и точность меток в вашем наборе данных, выберите график распределения из выпадающего меню в разделе Plots панели инструментов.
Можно смотреть различные распределения значений метки для атрибута, ROI, или указать определения метки.
Категориальный, логический, или строка — Каждый срез круговой диаграммы представляет количество экземпляров особого значения метки для выбранного определения метки.
Числовой — Каждая панель в графике гистограммы представляет количество экземпляров особого значения метки для выбранного определения метки.
Можно смотреть различные распределения во времени для ROI или указать определения метки.
Категориальный, логический, или строка — Каждая центральная метка в диаграмме представляет среднюю длительность ROI или местоположение точки особого значения метки для выбранного определения метки. Нижняя часть и верхние края поля указывают на 25-е и 75-е процентили, соответственно.
Числовой — Каждая панель в графике гистограммы представляет количество экземпляров длительности ROI или местоположения точки особого значения метки для выбранного определения метки.
Совет
Определите номер интервалов и пределов осей X, чтобы лучше смотреть распределения метки в выбранном графике гистограммы. Нажмите на график и настройте настройки в разделе Label Distribution панели инструментов.
Для получения дополнительной информации о связанных графиках распределения смотрите boxplot
(Statistics and Machine Learning Toolbox), histogram
, или pie
.
В этом примере показано, как отследить вашу маркировку, прогрессируют и оценивают качество меток с Инструментальной панелью. В этом режиме можно быстро определить, сколько членов помечено и смотрит распределения значений метки и длительности в наборе данных. Этот шаг упрощает процесс получения наборов полных и точных данных для машинного обучения.
Загрузите и подготовьте данные
Используйте QTdownload
функционируйте, чтобы загрузить электрокардиограмму (ECG) сигналы от общедоступной базы данных QT 1[] 2[] к новой временной директории folder
. Код для этой функции в конце примера.
folder = QTdownload;
Каждый файл содержит сигнал ECG ecgSignal
, таблица области маркирует signalRegionLabels
, и переменная Fs
частоты дискретизации. Все сигналы имеют частоту дискретизации 250 Гц. Метки области соответствуют трем морфологии heartbeat:
P волна
Комплекс QRS
T волна
Создайте datastore сигнала, который указывает на folder
. Укажите, что переменная сигнала называет ecgSignal
и переменная Fs
частоты дискретизации.
sds = signalDatastore(folder,'SignalVariableNames','ecgSignal','SampleRateVariableName','Fs');
Создайте подмножество datastore, содержащего первые двадцать файлов. Используйте это подмножество в качестве источника для labeledSignalSet
объект.
subsds = subset(sds,1:20); lss = labeledSignalSet(subsds);
Маркируйте Regions of Interest
Откройте приложение Signal Labeler и импортируйте помеченный набор сигнала из Рабочей области. Постройте первый сигнал в наборе данных. От вкладки Display выберите регулятор панорамы и изменение масштаба в меньшую область сигнала для лучшей визуализации.
От вкладки Labeler задайте категориальную метку видимой области (ROI) с P, QRS и категориями T. Назовите метку BeatMorphologies
.
Создайте пользовательскую функцию маркировки labelECGregions
определить местоположение и пометить три различных необходимых области. Код для пользовательской функции появляется позже в примере. Можно сохранить функцию в текущей папке, на пути MATLAB, или добавить его в приложении путем выбора Add Custom Function
в галерее Automate Value. Смотрите Пользовательский Functions Маркировки для получения дополнительной информации.
Выберите BeatMorphologies
в Маркировать браузере Definitions и выбирают labelECGregions
функция из галереи Automate Value. Выберите Auto-Label
и затем Auto-Label and Inspect Plotted
. Нажмите Run. От вкладки Display увеличьте масштаб области помеченного сигнала и используйте регулятор панорамы, чтобы перейти в течение времени. Если маркировка является удовлетворительной, нажмите Save Labels, чтобы принять метки и закрыть вкладку Autolabel. Вы видите метки и их значения местоположения в Помеченном Настроенном Браузере Сигнала.
Визуализируйте прогресс маркировки и статистику
Выберите Dashboard в панели инструментов вкладки Labeler. Индикатор выполнения показывает, что 5% членов помечены по крайней мере одной меткой ROI. Это соответствует 1/20 членам в наборе данных. Круговая диаграмма распределения метки показывает количество экземпляров каждой категории для выбранного определения метки.
Закройте инструментальную панель и продолжите свою маркировку. Выберите Auto-Label
и затем Auto-Label All Signals
пометить следующие четыре сигнала в списке. Установите флажок рядом с именами сигнала, которые вы хотите пометить и затем нажать ОК.
Выберите Dashboard снова. Индикатор выполнения теперь показывает, что 25% членов помечены. Проверьте, что распределение каждой категории (P, QRS или T) как ожидалось. Label Distribution
круговая диаграмма показывает, что каждая категория составляет приблизительно одну треть всех экземпляров метки. Выберите Time Distribution
график гистограммы из галереи Plots, чтобы просмотреть среднюю длительность P и волн T и комплексов QRS. Волны T имеют более долгую длительность, чем волны P и комплексы QRS.
Нажмите на график индикатора выполнения и настройте Threshold
в панели инструментов, чтобы считать только члены, по крайней мере, с 5000
метки. Теперь только три из пяти помеченных членов включены в количество. Настройте порог количества, чтобы лучше различить между помеченными и непомеченными членами на основе ваших требований маркировки.
Функция labelECGregions:
labelECGregions
функционируйте использует предварительно обученную нейронную сеть для глубокого обучения, чтобы идентифицировать P, QRS и морфологию heartbeat T в сигналах ECG.
function [labelVals,labelLocs] = labelECGregions(x,t,parentLabelVal,parentLabelLoc,varargin) labelVals = cell(2,1); labelLocs = cell(2,1); if nargin<5 Fs = 250; else Fs = varargin{1}; end % Download the pretrained networks netURL = 'https://ssd.mathworks.com/supportfiles/SPT/data/QTDatabaseECGSegmentationNetworks.zip'; %#ok<*UNRCH> modelsFolder = fullfile(tempdir,'QTDatabaseECGSegmentationNetworks'); modelsFile = fullfile(modelsFolder,'trainedNetworks.mat'); zipFile = fullfile(tempdir,'QTDatabaseECGSegmentationNetworks.zip'); if ~exist(modelsFolder,'dir') websave(zipFile,netURL); unzip(zipFile,fullfile(tempdir,'QTDatabaseECGSegmentationNetworks')); end load(modelsFile) for kj = 1:size(x,2) sig = x(:,kj)'; predTest = classify(rawNet,sig,'MiniBatchSize',50); msk = signalMask(predTest); msk.SpecifySelectedCategories = true; msk.SelectedCategories = find(msk.Categories ~= "n/a"); labels = roimask(msk); labelVals{kj} = labels.Value; labelLocs{kj} = labels.ROILimits/Fs; end labelVals = vertcat(labelVals{:}); labelLocs = cell2mat(labelLocs); end
QTdownload
Функция:
Можно загрузить файлы данных с https://www.mathworks.com/supportfiles/SPT/data/QTDatabaseECGData.zip или использовать unzip
функция, чтобы создать QTDatabaseECGData
папка в вашей временной директории с 210 MAT-файлами в нем.
function folder = QTdownload dataURL = 'https://www.mathworks.com/supportfiles/SPT/data/QTDatabaseECGData1.zip'; datasetFolder = fullfile(tempdir,'QTDataset'); zipFile = fullfile(tempdir,'QTDatabaseECGData.zip'); if ~exist(datasetFolder,'dir') websave(zipFile,dataURL); unzip(zipFile,tempdir); end folder = datasetFolder; end
Ссылки
[1] Голдбергер, Ари Л., Луис А. Н. Амараль, Леон Гласс, Джеффри М. Гаусдорф, Plamen Ch. Иванов, Роджер Г. Марк, Джозеф Э. Митус, Джордж Б. Муди, Чанг-Канг Пенг и Х. Юджин Стэнли. "PhysioBank, PhysioToolkit и PhysioNet: Компоненты Нового Ресурса Исследования для Комплексных Физиологических Сигналов". Циркуляция. Издание 101, № 23, 2000, стр e215–e220. [Циркуляция Электронные Страницы; http://circ.ahajournals.org/content/101/23/e215.full].
[2] Laguna, Пабло, Роджер Г. Марк, Ари Л. Голдбергер и Джордж Б. Муди. "База данных для Оценки Алгоритмов для Измерения QT и Других Интервалов Формы волны в ECG". Компьютеры в Кардиологии. Vol.24, 1997, стр 673–676.