Signal Labeler
Etiquete atributos de señal, regiones y puntos de interés y extraiga características
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.
Más
Necesita una licencia de Audio Toolbox™ para etiquetar señales de audio.
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
Etiquetar señales de un ECG y hacer un seguimiento del progreso
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
signalLabeler
signalLabeler
abre la app Signal Labeler.
Historial de versiones
Introducido en R2019aR2023b: Clasificar sonidos y etiquetar regiones de señal acotadas
Clasifique y etiquete sonidos en señales de audio utilizando la red preentrenada YAMNet. Debe tener Audio Toolbox y Deep Learning Toolbox™ para usar esta función.
Localice y etiquete las regiones de señal con valores superiores o inferiores a un umbral dado o dentro o fuera de un conjunto determinado de intervalos.
Consulte también
Apps
Funciones
Temas
- Using Signal Labeler App
- Import Data into Signal Labeler
- Import and Play Audio File Data in Signal Labeler
- Create or Import Signal Label Definitions
- Label Signals Interactively or Automatically
- Custom Labeling Functions
- Customize Labeling View
- Feature Extraction Using Signal Labeler
- Dashboard
- Export Labeled Signal Sets and Signal Label Definitions
- Signal Labeler Usage Tips
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)