Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

신호 레이블 지정기

관심 있는 신호 특성, 신호 영역, 신호 지점에 레이블 지정 및 특징 추출

설명

신호 레이블 지정기 앱은 분석을 위해 또는 머신러닝 및 딥러닝 응용 분야에서 사용하기 위해 신호에 레이블을 지정할 수 있는 대화형 방식 툴입니다. 신호 레이블 지정기를 사용하여 다음을 수행할 수 있습니다.

  • 관심 있는 신호 특성, 신호 영역 및 신호 지점에 레이블 지정하기

  • logical형, categorical형, 숫자형 또는 문자열 값 레이블 사용하기

  • 신호 피크 또는 신호 유계 영역에 자동으로 레이블 지정하기

  • 사용자 지정 레이블 지정 함수 적용하기

  • 오디오 신호 가져오기, 레이블 지정하기, 재생하기

  • 레이블 지정에 도움이 되도록 주파수 보기 및 시간-주파수 보기 사용하기

  • 신호 특징에서 특성 및 관심 영역(ROI) 레이블 생성하기

  • 레이블 또는 하위 레이블 추가, 편집, 삭제하기

  • 신호 및 레이블 중 일부를 선택하여 표시하기

신호 레이블 지정기는 데이터를 labeledSignalSet 객체로 저장합니다. labeledSignalSet 객체를 사용하여 신경망과 분류기를 훈련하거나 데이터를 분석하고 통계를 보고할 수 있습니다.

자세한 내용은 Using Signal Labeler App 항목을 참조하십시오.

  • 오디오 신호에 레이블을 지정하려면 Audio Toolbox™ 라이선스가 필요합니다.

Signal Labeler app

신호 레이블 지정기 앱 열기

  • MATLAB® 툴스트립: 탭의 신호 처리 및 통신에서 앱 아이콘을 클릭합니다.

  • MATLAB 명령 프롬프트: signalLabeler를 입력합니다.

예제

모두 확장

이 예제에서는 대시보드를 통해 레이블 지정 진행 상황을 추적하고 레이블의 품질을 평가하는 방법을 보여줍니다. 이 모드에서 레이블이 지정된 멤버의 개수를 빠르게 확인하고 데이터 세트의 레이블 값 및 지속 시간의 분포를 검사할 수 있습니다. 이 단계는 머신러닝을 위해 완전하고 정확한 데이터 세트를 얻는 과정을 용이하게 합니다.

데이터 다운로드 및 준비

QTdownload 함수를 사용하여 공개적으로 사용 가능한 QT 데이터베이스[1] [2]에서 심전도(ECG) 신호를 새 임시 디렉터리 folder로 다운로드합니다. 이 함수의 코드는 예제의 끝부분에 있습니다.

folder = QTdownload;

각 파일은 ECG 신호 ecgSignal, 영역 레이블로 구성된 테이블 signalRegionLabels, 샘플 레이트 변수 Fs를 포함합니다. 모든 신호의 샘플 레이트는 250Hz입니다. 영역 레이블은 다음 세 심박 모폴로지에 대응합니다.

  • P파

  • QRS 복합파

  • T파

folder를 가리키는 신호 데이터저장소를 만듭니다. 신호 변수 이름 ecgSignal과 샘플 레이트 변수 Fs를 지정합니다.

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

처음 20개 파일을 포함하는 데이터저장소의 서브셋을 만듭니다. 이 서브셋을 labeledSignalSet 객체의 소스로 사용합니다.

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

레이블 관심 영역

신호 레이블 지정기 앱을 열고 작업 공간에서 레이블이 지정된 신호 세트를 가져옵니다. 데이터 세트의 첫 번째 신호를 플로팅합니다. 시각적 효과를 높이기 위해 표시 탭에서 패너를 선택하고 신호의 더 작은 영역까지 확대합니다.

레이블 지정기 탭에서 P, QRS 및 T 범주를 사용하여 categorical형 관심 영역(ROI) 레이블을 정의합니다. 레이블의 이름을 BeatMorphologies로 지정합니다.

세 개의 다른 관심 영역을 찾아 레이블을 지정하는 사용자 지정 레이블 지정 함수 labelECGregions를 만듭니다. 이 사용자 지정 함수의 코드는 예제의 뒷부분에 있습니다. 이 함수를 MATLAB 경로의 현재 폴더에 저장하거나 값 자동화 갤러리에서 사용자 지정 함수 추가(Add Custom Function)를 선택하여 앱에 추가할 수 있습니다. 자세한 내용은 Custom Labeling Functions 항목을 참조하십시오.

레이블 정의 브라우저에서 BeatMorphologies를 선택하고 값 자동화 갤러리에서 labelECGregions 함수를 선택합니다. Auto-Label을 선택한 다음 Auto-Label and Inspect Plotted를 선택합니다. [실행]을 클릭합니다. 표시 탭에서 레이블이 지정된 신호 영역을 확대하고 패너를 사용하여 시간을 탐색합니다. 레이블 지정이 만족스러우면 레이블 저장을 클릭하여 레이블을 적용하고 자동 레이블 지정 탭을 닫습니다. 레이블이 지정된 신호 세트 브라우저에서 레이블과 레이블의 위치 값을 확인할 수 있습니다.

레이블 지정 진행 상황 및 통계량 시각화하기

레이블 지정기 탭의 툴스트립에서 대시보드를 선택합니다. 진행률 표시줄은 멤버의 5%가 적어도 하나의 ROI 레이블로 레이블이 지정되어 있음을 보여줍니다. 이는 데이터 세트에 있는 멤버의 1/20에 해당합니다. 레이블 분포 원형 차트에는 선택한 레이블 정의에 대한 각 범주의 인스턴스 개수가 표시됩니다.

대시보드를 닫고 레이블 지정을 계속하십시오. Auto-Label을 선택한 다음 Auto-Label All Signals를 선택하여 목록에 있는 다음 4개의 신호에 레이블을 지정합니다. 레이블을 지정하려는 신호 이름 옆의 체크박스를 선택한 다음 확인을 클릭합니다.

대시보드를 다시 선택합니다. 진행률 표시줄은 이제 멤버의 25%에 레이블이 지정되었음을 보여줍니다. 각 범주(P, QRS 또는 T)의 분포가 예상대로 나타나는지 확인합니다. 레이블 분포(Label Distribution) 원형 차트는 각 범주가 모든 레이블 인스턴스의 약 1/3을 차지함을 보여줍니다. 플롯 갤러리에서 시간 분포(Time Distribution) 히스토그램 차트를 선택하면 이상값을 포함한 P파, T파, QRS 복합파의 평균 길이(기간)를 볼 수 있습니다. T파는 P파와 QRS 복합파보다 길이가 더 깁니다.

멤버 개수(Member Count) 차트를 표시하여 멤버 간 레이블 분포와 인스턴스 개수를 더 효과적으로 시각화합니다. 데이터 세트에 있는 대부분의 멤버는 0~500개의 P, QRS 및 T 영역 인스턴스를 갖습니다.

진행률 표시줄 플롯을 클릭하고 툴스트립에서 임계값(Threshold)을 조정하여 레이블이 5000개 이상 있는 멤버의 개수만 셉니다. 이제 레이블이 지정된 5개의 멤버 중 3개만 개수에 포함됩니다. 레이블 지정 요구 사항에 따라 레이블이 지정된 멤버와 레이블이 지정되지 않은 멤버를 더 잘 구분할 수 있도록 개수 임계값을 조정합니다.

labelECGregions 함수

labelECGregions 함수는 사전 훈련된 딥러닝 신경망을 사용하여 ECG 신호에서 P, QRS 및 T 심박 모폴로지를 식별합니다.

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

QTdownload 함수

https://www.mathworks.com/supportfiles/SPT/data/QTDatabaseECGData.zip에서 데이터 파일을 다운로드하거나 unzip 함수를 사용하여 임시 디렉터리에 210개의 MAT 파일이 들어 있는 폴더를 만들 수 있습니다.

function folder = QTdownload

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

end

참고 문헌

[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, H. Eugene Stanley. "PhysioBank, PhysioToolkit, and PhysioNet: Components of a New Research Resource for Complex Physiologic Signals." Circulation. Vol. 101, No. 23, 2000, pp. e215–e220. [Circulation Electronic Pages, http://circ.ahajournals.org/content/101/23/e215.full].

[2] Laguna, Pablo, Roger G. Mark, Ary L. Goldberger, and 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, pp. 673–676.

관련 예제

프로그래밍 방식으로 사용

모두 확장

signalLabeler신호 레이블 지정기 앱을 엽니다.

버전 내역

R2019a에 개발됨

모두 확장