Main Content

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

심층 신경망 디자이너 시작하기

이 예제에서는 심층 신경망 디자이너를 사용하여, 사전 훈련된 GoogLeNet 신경망이 새로운 영상의 모음을 분류하도록 조정하는 방법을 보여줍니다. 이 절차는 전이 학습이라고 부르며, 학습된 특징을 적은 개수의 훈련 영상을 사용하여 새 작업에 적용할 수 있기 때문에 일반적으로 새로운 신경망을 훈련시키는 것보다 훨씬 빠르고 쉽습니다. 전이 학습을 위해 신경망을 대화형 방식으로 준비하려면 심층 신경망 디자이너를 사용하십시오.

훈련을 위해 데이터 추출하기

작업 공간에서 데이터의 압축을 풉니다.

unzip('MerchData.zip');

사전 훈련된 신경망 선택하기

심층 신경망 디자이너를 엽니다.

deepNetworkDesigner

심층 신경망 디자이너 시작 페이지에서 사전 훈련된 GoogLeNet 신경망을 선택하여 불러옵니다. 신경망을 다운로드해야 할 경우에는 설치를 클릭하여 애드온 탐색기를 엽니다.

심층 신경망 디자이너에 전체 신경망의 축소된 형태가 표시됩니다. 신경망 플롯을 살펴봅니다. 마우스를 사용하여 확대하려면 Ctrl+스크롤 휠을 사용하십시오.

데이터 세트 불러오기

심층 신경망 디자이너로 데이터를 불러오려면 데이터 탭에서 데이터 가져오기 > 영상 분류 데이터 가져오기를 클릭하십시오.

데이터 소스 목록에서 폴더를 선택합니다. 찾아보기를 클릭하고 추출된 MerchData 폴더를 선택합니다.

대화 상자를 사용하여 앱 내에서 검증 데이터를 분할할 수도 있습니다. 데이터를 70%의 훈련 데이터와 30%의 검증 데이터로 나눕니다.

훈련 영상에 대해 수행할 증대 연산을 지정합니다. 이 예제에서는 x축에서 무작위 반사를 적용하고, [-90,90]도에서 무작위 회전을 적용하고, [1,2] 범위에서 무작위 재스케일링을 적용합니다.

가져오기를 클릭하여 데이터를 심층 신경망 디자이너로 가져옵니다.

심층 신경망 디자이너를 사용하여 데이터 탭에서 훈련 데이터와 검증 데이터의 분포를 시각적으로 조사할 수 있습니다. 이 예제에는 데이터 세트에 5개의 클래스가 있는 것을 볼 수 있습니다. 각 클래스의 임의 관측값을 볼 수도 있습니다.

심층 신경망 디자이너가 신경망 입력 크기와 일치하도록 훈련 중에 영상의 크기를 조정합니다. 신경망 입력 크기를 보려면 디자이너 탭에서 imageInputLayer를 클릭하십시오. 이 신경망의 입력 크기는 224×224입니다.

전이 학습을 위해 신경망 편집하기

사전 훈련된 신경망이 새 영상을 분류하도록 다시 훈련시키려면 마지막 학습 가능한 계층과 마지막 분류 계층을 새로운 데이터 세트에 맞게 조정하십시오. GoogLeNet에서 이러한 계층의 이름은 각각 'loss3-classifier''output'입니다.

디자이너 탭에서 마지막 완전 연결 계층인 'loss3-classifier'를 클릭합니다. 속성 창 하단에서 계층 잠금 해제를 클릭합니다. 나타나는 경고 대화 상자에서 무시하고 잠금 해제를 클릭합니다. 이렇게 하면 계층 속성의 잠금이 해제되어 새 작업에 맞게 계층 속성을 조정할 수 있습니다.

R2023b 이전: 계층 속성을 편집하려면 계층을 잠금 해제하는 대신에 계층을 바꿔야 합니다.

OutputSize를 새 데이터의 클래스 개수(이 예제에서는 5)로 설정합니다.

전이된 계층보다 새 계층에서 학습이 더 빨리 이루어지도록 학습률을 편집합니다. WeightLearnRateFactorBiasLearnRateFactor10으로 설정합니다.

분류 계층 'output'을 선택하고 계층 잠금 해제를 클릭한 다음 무시하고 잠금 해제를 클릭합니다. 잠금 해제된 출력 계층에 대해 OutputSize를 설정할 필요는 없습니다. 심층 신경망 디자이너는 훈련 시점에 자동으로 데이터로부터 계층의 출력 클래스를 설정합니다.

신경망 확인하기

분석을 클릭하여 신경망을 확인합니다. 딥러닝 신경망 분석기에 보고되는 오류가 없으면 신경망이 훈련할 준비가 된 것입니다.

신경망 훈련시키기

디폴트 설정을 사용하여 신경망을 훈련시키려면 훈련 탭에서 훈련을 클릭하십시오.

훈련을 보다 세부적으로 제어하려면 훈련 옵션을 클릭하고 훈련에 사용할 설정을 선택합니다. 디폴트 훈련 옵션은 대규모 데이터 세트에 더 적합합니다. 소규모 데이터 세트의 경우 미니 배치 크기와 검증 빈도에 더 작은 값을 사용하십시오. 훈련 옵션 선택에 대한 자세한 내용은 trainingOptions 항목을 참조하십시오.

이 예제에서는 InitialLearnRate0.0001로, MaxEpochs8로, ValidationFrequency5로 설정합니다. 55개의 관측값이 있으므로 매 Epoch마다 데이터 세트 전체가 사용되도록 MiniBatchSize11로 설정하여 훈련 데이터를 균등하게 나눕니다.

지정된 훈련 옵션을 사용하여 신경망을 훈련시키려면 확인을 클릭하고 훈련을 클릭하십시오.

심층 신경망 디자이너에서는 훈련 진행 상황을 시각화하고 모니터링할 수 있습니다. 그런 다음 필요한 경우 훈련 옵션을 편집하여 신경망을 다시 훈련시킬 수 있습니다.

훈련 결과 내보내기

훈련 결과를 내보내려면 훈련 탭에서 내보내기 > 훈련된 신경망 및 결과 내보내기를 선택하십시오. 심층 신경망 디자이너가 훈련된 신경망을 변수 trainedNetwork_1로 내보내고 훈련 정보를 변수 trainInfoStruct_1로 내보냅니다.

신경망과 사용된 훈련 옵션을 다시 만들어 주는 MATLAB 코드를 생성할 수도 있습니다. 훈련 탭에서 내보내기 > 훈련에 사용할 코드 생성을 선택합니다.

훈련된 신경망 테스트하기

훈련된 신경망을 사용하여 분류할 새 영상을 선택합니다.

I = imread("MerchDataTest.jpg");

신경망 입력 크기와 일치하도록 테스트 영상의 크기를 조정합니다.

I = imresize(I, [224 224]);

훈련된 신경망을 사용하여 테스트 영상을 분류합니다.

[YPred,probs] = classify(trainedNetwork_1,I);
imshow(I)
label = YPred;
title(string(label) + ", " + num2str(100*max(probs),3) + "%");

다른 사전 훈련된 신경망에 대한 정보를 비롯한 자세한 내용은 심층 신경망 디자이너 항목을 참조하십시오.

참고 항목

관련 항목