Main Content

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

간단한 영상 분류 신경망 만들기

이 예제에서는 딥러닝 분류용으로 간단한 컨벌루션 신경망을 만들고 훈련시키는 방법을 보여줍니다. 컨벌루션 신경망은 딥러닝 분야의 필수 툴로서, 특히 영상 인식에 적합합니다.

이 예제에서는 다음을 수행하는 방법을 보여줍니다.

  • 영상 데이터를 불러옵니다.

  • 신경망 아키텍처를 정의합니다.

  • 훈련 옵션을 지정합니다.

  • 신경망을 훈련시킵니다.

  • 새로운 데이터의 레이블을 예측하고 분류 정확도를 계산합니다.

간단한 영상 분류 신경망을 대화형 방식으로 만들고 훈련시키는 방법을 보여주는 예제는 심층 신경망 디자이너를 사용하여 간단한 영상 분류 신경망 만들기 항목을 참조하십시오.

데이터 불러오기

샘플 숫자 데이터를 영상 데이터저장소로 불러옵니다. imageDatastore 함수는 폴더 이름을 기준으로 영상에 자동으로 레이블을 지정합니다.

digitDatasetPath = fullfile(matlabroot,'toolbox','nnet','nndemos', ...
    'nndatasets','DigitDataset');

imds = imageDatastore(digitDatasetPath, ...
    'IncludeSubfolders',true, ...
    'LabelSource','foldernames');

훈련 세트의 각 범주에 750개 영상이 포함되고 검증 세트에 각 레이블의 나머지 영상이 포함되도록 데이터를 훈련 데이터 세트와 검증 데이터 세트로 나눕니다. splitEachLabel은 영상 데이터저장소를 훈련 및 검증을 위한 2개의 새로운 데이터저장소로 분할합니다.

numTrainFiles = 750;
[imdsTrain,imdsValidation] = splitEachLabel(imds,numTrainFiles,'randomize');

신경망 아키텍처 정의하기

컨벌루션 신경망 아키텍처를 정의합니다. 신경망 입력 계층의 영상 크기와 분류 계층 앞에 있는 완전 연결 계층의 클래스 개수를 지정합니다. 각 영상은 28×28×1 픽셀이고 클래스는 10개가 있습니다.

inputSize = [28 28 1];
numClasses = 10;

layers = [
    imageInputLayer(inputSize)
    convolution2dLayer(5,20)
    batchNormalizationLayer
    reluLayer
    fullyConnectedLayer(numClasses)
    softmaxLayer
    classificationLayer];

딥러닝 계층에 대한 자세한 내용은 딥러닝 계층 목록 항목을 참조하십시오.

신경망 훈련시키기

훈련 옵션을 지정하고 신경망을 훈련시킵니다.

기본적으로 trainNetwork는 GPU를 사용할 수 있으면 GPU를 사용하고 그렇지 않은 경우에는 CPU를 사용합니다. GPU에서 훈련시키려면 Parallel Computing Toolbox™와 지원되는 GPU 장치가 필요합니다. 지원되는 장치에 대한 자세한 내용은 릴리스별 GPU 지원 (Parallel Computing Toolbox) 항목을 참조하십시오. trainingOptions'ExecutionEnvironment' 이름-값 쌍 인수를 사용하여 실행 환경을 지정할 수도 있습니다.

options = trainingOptions('sgdm', ...
    'MaxEpochs',4, ...
    'ValidationData',imdsValidation, ...
    'ValidationFrequency',30, ...
    'Verbose',false, ...
    'Plots','training-progress');

net = trainNetwork(imdsTrain,layers,options);

훈련 옵션에 대한 자세한 내용은 파라미터를 설정하고 컨벌루션 신경망 훈련시키기 항목을 참조하십시오.

신경망 테스트하기

검증 데이터를 분류하고 분류 정확도를 계산합니다.

YPred = classify(net,imdsValidation);
YValidation = imdsValidation.Labels;
accuracy = mean(YPred == YValidation)
accuracy = 0.9892

딥러닝의 다음 단계로 넘어가서 다른 작업에도 사전 훈련된 신경망을 사용해 볼 수 있습니다. 전이 학습이나 특징 추출을 사용하여 영상 데이터를 대상으로 새로운 분류 문제를 풀어 보십시오. 예제는 전이 학습을 사용하여 더 빠르게 딥러닝 시작하기사전 훈련된 신경망에서 추출한 특징을 사용하여 분류기 훈련시키기 항목을 참조하십시오. 사전 훈련된 신경망에 대한 자세한 내용은 사전 훈련된 심층 신경망 항목을 참조하십시오.

참고 항목

|

관련 항목