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'입니다.

디자이너 탭에서, 계층 라이브러리에서 캔버스로 새 fullyConnectedLayer를 끌어서 놓습니다. OutputSize를 새 데이터의 클래스 개수(이 예제에서는 5)로 설정합니다.

전이된 계층보다 새 계층에서 학습이 더 빨리 이루어지도록 학습률을 편집합니다. WeightLearnRateFactorBiasLearnRateFactor10으로 설정합니다. 마지막 완전 연결 계층을 삭제하고 새로 추가한 계층을 대신 연결합니다.

출력 계층을 교체합니다. 계층 라이브러리의 끝으로 스크롤한 다음, 캔버스로 새 classificationLayer를 끌어서 놓습니다. 원래 output 계층을 삭제하고 대신 새 계층을 연결합니다.

신경망 확인하기

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

신경망 훈련시키기

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

훈련을 보다 세부적으로 제어하려면 훈련 옵션을 클릭하고 훈련에 사용할 설정을 선택합니다. 디폴트 훈련 옵션은 대규모 데이터 세트에 더 적합합니다. 소규모 데이터 세트의 경우 미니 배치 크기와 검증 빈도에 더 작은 값을 사용하십시오. 훈련 옵션 선택에 대한 자세한 내용은 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) + "%");

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

참고 항목

관련 항목