심층 신경망 디자이너를 사용하여 간단한 영상 분류 신경망 만들기
이 예제에서는 심층 신경망 디자이너를 사용하여 딥러닝 분류용으로 간단한 컨벌루션 신경망을 만들고 훈련시키는 방법을 보여줍니다. 컨벌루션 신경망은 딥러닝 분야의 필수 툴로서, 특히 영상 인식에 적합합니다.
이 예제에서는 다음을 수행합니다.
영상 데이터를 가져옵니다.
신경망 아키텍처를 정의합니다.
훈련 옵션을 지정합니다.
신경망을 훈련시킵니다.
데이터 불러오기
샘플 숫자 데이터를 영상 데이터저장소로 불러옵니다. imageDatastore
함수는 폴더 이름을 기준으로 영상에 자동으로 레이블을 지정합니다. 데이터 세트는 10개의 클래스를 갖고 데이터 세트의 각 영상은 28×28×1 픽셀입니다.
digitDatasetPath = fullfile(matlabroot,'toolbox','nnet','nndemos', ... 'nndatasets','DigitDataset'); imds = imageDatastore(digitDatasetPath, ... 'IncludeSubfolders',true, ... 'LabelSource','foldernames');
심층 신경망 디자이너를 엽니다. 심층 신경망 디자이너를 사용하여 신경망을 만들고, 데이터를 가져와서 시각화하고, 신경망을 훈련시킵니다.
deepNetworkDesigner
빈 신경망을 만들기 위해 빈 신경망에서 잠시 멈추고 새로 만들기를 클릭합니다.
영상 데이터저장소를 가져오기 위해 데이터 탭을 선택하고 데이터 가져오기 > 영상 분류 데이터 가져오기를 클릭합니다. 데이터 소스로 imds
를 선택합니다. 검증 데이터로 사용하기 위해 훈련 데이터의 30%를 남겨 둡니다. 무작위 분할을 선택하여 훈련 세트와 검증 세트에 무작위로 관측값을 할당합니다.
가져오기를 클릭하여 데이터를 가져옵니다.
신경망 아키텍처 정의하기
디자이너 창에서 컨벌루션 신경망 아키텍처를 정의합니다. 계층 라이브러리에서 계층을 끌어서 연결합니다. 계층을 빠르게 검색하려면 계층 라이브러리 창의 계층 필터링 검색 상자를 사용하십시오. 계층의 속성을 편집하려면 계층을 클릭하고 속성 창에서 값을 편집하십시오.
다음과 같은 순서로 계층을 연결합니다.
imageInputLayer
(InputSize
속성을28,28,1
로 설정)convolution2dLayer
batchNormalizationLayer
reluLayer
fullyConnectedLayer
(OutputSize
속성을10
으로 설정)softmaxLayer
classificationLayer
딥러닝 계층에 대한 자세한 내용은 딥러닝 계층 목록 항목을 참조하십시오.
신경망 훈련시키기
훈련 옵션을 지정하고 신경망을 훈련시킵니다.
훈련 탭에서 훈련 옵션을 클릭합니다. 이 예제에서는 최대 Epoch 횟수를 5로 설정하고 나머지는 디폴트 설정으로 둡니다. 확인을 클릭하여 훈련 옵션을 설정합니다. 훈련 옵션에 대한 자세한 내용은 파라미터를 설정하고 컨벌루션 신경망 훈련시키기 항목을 참조하십시오.
훈련을 클릭하여 신경망을 훈련시킵니다.
정확도는 신경망이 올바르게 예측하는 레이블의 비율입니다. 여기서는 예측된 레이블의 97% 이상이 검증 세트의 참 레이블과 일치합니다.
훈련된 신경망을 작업 공간으로 내보내려면 훈련 탭에서 내보내기를 클릭하십시오.
딥러닝의 다음 단계로 넘어가서 다른 작업에도 사전 훈련된 신경망을 사용해 볼 수 있습니다. 전이 학습을 사용하여 영상 데이터를 대상으로 새로운 분류 문제를 풀어 보십시오. 예제는 전이 학습 시작하기 항목을 참조하십시오. 사전 훈련된 신경망에 대한 자세한 내용은 사전 훈련된 심층 신경망 항목을 참조하십시오.