Main Content

Signal Labeler

Etiquete atributos de señal, regiones y puntos de interés y extraiga características

Desde R2019a

Descripción

La app Signal Labeler es una herramienta interactiva que le permite etiquetar señales para realizar análisis o para utilizarla en aplicaciones de machine learning y deep learning. Utilizando Signal Labeler, puede:

  • Etiquetar atributos de señal, regiones y puntos de interés

  • Utilizar etiquetas lógicas, categóricas, numéricas o con valores de cadena

  • Etiquetar de forma automática picos de señal o regiones de señales acotadas

  • Aplicar funciones de etiquetado personalizadas

  • Importar, etiquetar y reproducir señales de audio

  • Utilizar vistas de frecuencia o tiempo-frecuencia para ayudar al etiquetado

  • Generar etiquetas de atributo y región de interés (ROI) a partir de las características de la señal

  • Agregar, editar y eliminar etiquetas o subetiquetas

  • Mostrar los subconjuntos de señales y etiquetas seleccionados

Signal Labeler guarda los datos como objetos labeledSignalSet. Puede utilizar los objetos labeledSignalSet para entrenar una red, un clasificador o analizar los datos y notificar las estadísticas.

Para obtener más información, consulte Using Signal Labeler App.

  • Necesita una licencia de Audio Toolbox™ para etiquetar señales de audio.

Signal Labeler app

Abrir la aplicación Signal Labeler

  • Barra de herramientas de MATLAB®: En la pestaña Apps, en Signal Processing and Communications, haga clic en el icono de la app.

  • Línea de comandos de MATLAB: Introduzca la función signalLabeler.

Ejemplos

expandir todo

Este ejemplo muestra cómo realizar un seguimiento del progreso del etiquetado y evaluar la calidad de las etiquetas con el panel. En este modo, se puede determinar rápidamente cuántos miembros están etiquetados e inspeccionar las duraciones y distribuciones de valores de etiqueta en un conjunto de datos. Este paso facilita el proceso de obtención de conjuntos de datos completos y precisos para machine learning.

Descargar y preparar los datos

Utilice la función QTdownload para descargar señales de un electrocardiograma (ECG) de la base de datos QT de acceso público [1] [2] en un nuevo directorio temporal folder. El código de esta función se encuentra al final del ejemplo.

folder = QTdownload;

Cada archivo contiene una señal de ECG ecgSignal, una tabla de etiquetas de región signalRegionLabels y la variable de tasa de muestreo Fs. Todas las señales tienen una tasa de muestreo de 250 Hz. Las etiquetas de las regiones corresponden a tres morfologías de latido:

  • Onda P

  • Complejo QRS

  • Onda T

Cree un almacén de datos de señales que apunte a folder. Especifique el nombre de la variable de la señal ecgSignal y la variable de tasa de muestreo Fs.

sds = signalDatastore(folder,SignalVariableNames="ecgSignal", ...
    SampleRateVariableName="Fs");

Cree un subconjunto del almacén de datos que contenga los veinte primeros archivos. Utilice este subconjunto como la fuente de un objeto labeledSignalSet.

subsds = subset(sds,1:20);
lss = labeledSignalSet(subsds);

Etiquetar regiones de interés

Abra la app Signal Labeler e importe el conjunto de señales etiquetadas del área de trabajo. Represente la primera señal del conjunto de datos. En la pestaña Display, seleccione el panoramizador y haga zoom sobre una región más pequeña de la señal para visualizarla mejor.

En la pestaña Labeler, defina una etiqueta categórica de la región de interés (ROI) con las categorías P, QRS y T. Nombre la etiqueta BeatMorphologies.

Cree una función de etiquetado personalizada labelECGregions para localizar y etiquetar las tres regiones de interés diferentes. El código de la función personalizada aparece más adelante en el ejemplo. Puede guardar la función en la carpeta actual, en la ruta de MATLAB, o añadirla a la app seleccionando Add Custom Function en la galería Automate Value. Para obtener más información, consulte Custom Labeling Functions.

Seleccione BeatMorphologies en el navegador Label Definitions y elija la función labelECGregions de la galería Automate Value. Seleccione Auto-Label y, luego, Auto-Label and Inspect Plotted. Haga clic en Run. En la pestaña Display, amplíe una región de la señal etiquetada y utilice el panoramizador para navegar en el tiempo. Si el etiquetado es satisfactorio, haga clic en Save Labels para aceptar las etiquetas y cerrar la pestaña Autolabel. Puede ver las etiquetas y sus valores de ubicación en Labeled Signal Set Browser.

Visualizar el progreso del etiquetado y las estadísticas

Seleccione el panel en la barra de herramientas de la pestaña Labeler. La barra de progreso muestra que el 5% de los miembros están etiquetados con al menos una etiqueta de la ROI. Esto corresponde a 1/20 miembros del conjunto de datos. La gráfica circular de distribución de etiquetas muestra el número de instancias de cada categoría para la definición de etiqueta seleccionada.

Cierre el panel y siga etiquetando. Seleccione Auto-Label y, luego, Auto-Label All Signals para etiquetar las cuatro señales siguientes de la lista. Marque la casilla situada junto a los nombres de las señales que desea etiquetar y, luego, haga clic en OK.

Seleccione de nuevo el panel. La barra de progreso muestra ahora que el 25% de los miembros están etiquetados. Compruebe que la distribución de cada categoría (P, QRS o T) es la esperada. La gráfica circular Label Distribution muestra que cada categoría representa aproximadamente un tercio de todas las instancias de etiquetas. Seleccione la gráfica de histogramas Time Distribution de la galería Plots para ver la duración media de las ondas P y T y los complejos QRS, incluidos los valores atípicos. Observe que las ondas T duran más que las ondas P y que los complejos QRS.

Muestre la gráfica Member Count para visualizar mejor la distribución de etiquetas entre los miembros y el número de instancias. La mayoría de los miembros del conjunto de datos tienen entre 0 y 500 instancias de las regiones P, QRS y T.

Haga clic en la gráfica de la barra de progreso y ajuste Threshold en la barra de herramientas para contar solo los miembros con al menos 5000 etiquetas. Ahora solo se incluyen en el recuento tres de los cinco miembros etiquetados. Ajuste el umbral de recuento para diferenciar mejor entre miembros etiquetados y no etiquetados, en función de sus requisitos de etiquetado.

Función labelECGregions

La función labelECGregions utiliza una red de deep learning preentrenada para identificar morfologías de latido P, QRS y T en señales de 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 network

netfil = matlab.internal.examples.downloadSupportFile("SPT", ...
    "data/QTDatabaseECGSegmentationNetworks.zip"); %#ok<*UNRCH>
unzip(netfil,fullfile(tempdir,"ECGnet"))
load(fullfile(tempdir,"ECGnet","trainedNetworks.mat"))
    
    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

Función QTdownload

Puede descargar los archivos de datos de https://www.mathworks.com/supportfiles/SPT/data/QTDatabaseECGData.zip o utilizar la función unzip para crear una carpeta en un directorio temporal con 210 archivos MAT.

function folder = QTdownload

localfile = matlab.internal.examples.downloadSupportFile("SPT", ...
    "data/QTDatabaseECGData1.zip");
unzip(localfile,tempdir)
folder = fullfile(tempdir,"QTDataset");

end

Referencias

[1] Goldberger, Ary L., Luis A. N. Amaral, Leon Glass, Jeffery M. Hausdorff, Plamen Ch. Ivanov, Roger G. Mark, Joseph E. Mietus, George B. Moody, Chung-Kang Peng y H. Eugene Stanley. "PhysioBank, PhysioToolkit, and PhysioNet: Components of a New Research Resource for Complex Physiologic Signals." Circulation. Vol. 101, núm. 23, 2000, págs. e215–e220. [Circulation Electronic Pages; http://circ.ahajournals.org/content/101/23/e215.full].

[2] Laguna, Pablo, Roger G. Mark, Ary L. Goldberger y George B. Moody. "A Database for Evaluation of Algorithms for Measurement of QT and Other Waveform Intervals in the ECG." Computers in Cardiology. Vol. 24, 1997, págs. 673–676.

Ejemplos relacionados

Uso programático

expandir todo

signalLabeler abre la app Signal Labeler.

Historial de versiones

Introducido en R2019a

expandir todo