Main Content

사전 훈련된 심층 신경망

자연 영상으로부터 강력하고 정보가 많은 특징을 추출하도록 학습된 사전 훈련된 영상 분류 신경망을 새로운 작업을 학습하기 위한 출발점으로 사용할 수 있습니다. 대부분의 사전 훈련된 신경망은 ILSVRC(ImageNet Large-Scale Visual Recognition Challenge)[2]에서 사용되는 ImageNet 데이터베이스[1]의 서브셋에서 훈련되었습니다. 이러한 신경망은 1백만 개가 넘는 영상에 대해 훈련되었으며 영상을 키보드, 커피 머그잔, 연필, 각종 동물 등 1,000가지 사물 범주로 분류할 수 있습니다. 전이 학습을 통해 사전 훈련된 신경망을 사용하는 것이 일반적으로 신경망을 처음부터 훈련시키는 것보다 훨씬 더 빠르고 쉽습니다.

사전에 훈련된 신경망은 다음과 같은 작업에서 사용할 수 있습니다.

목적설명
분류

분류 문제에 직접 사전 훈련된 신경망을 적용합니다. 새로운 영상을 분류하려면 classify를 사용하십시오. 사전 훈련된 신경망을 분류에 사용하는 방법을 보여주는 예제는 GoogLeNet을 사용하여 영상 분류하기 항목을 참조하십시오.

특징 추출

계층 활성화를 특징으로 사용하여 사전 훈련된 신경망을 특징 추출기로 사용합니다. 활성화를 특징으로 사용하여 서포트 벡터 머신(SVM)과 같은 여타 머신러닝 모델을 훈련시킬 수 있습니다. 자세한 내용은 특징 추출 항목을 참조하십시오. 예제는 사전 훈련된 신경망을 사용하여 영상 특징 추출하기 항목을 참조하십시오.

전이 학습

대규모 데이터 세트에서 훈련된 신경망의 계층을 가져와 새로운 데이터 세트에 대해 미세 조정합니다. 자세한 내용은 전이 학습 항목을 참조하십시오. 간단한 예제는 전이 학습 시작하기 항목을 참조하십시오. 더 많은 사전 훈련된 신경망을 사용해 보려면 새로운 영상을 분류하도록 딥러닝 신경망 훈련시키기 항목을 참조하십시오.

사전 훈련된 신경망 비교하기

사전 훈련된 신경망은 저마다 다른 특징을 갖습니다. 문제에 적용할 신경망을 선택할 때 이러한 특징을 고려해야 합니다. 가장 중요한 특징은 신경망의 정확도, 속도 및 크기입니다. 신경망을 선택할 때는 일반적으로 이러한 특징 사이의 장단점을 절충하여 선택하게 됩니다. 아래 플롯에서 ImageNet 검증 정확도와 이 신경망을 사용하여 예측을 수행하는 데 소요되는 시간과 비교해 보십시오.

전이 학습을 시작하려면 SqueezeNet이나 GoogLeNet과 같이 상대적으로 속도가 빠른 신경망을 선택해 보십시오. 그런 다음 빠르게 반복하며 데이터 전처리 단계와 훈련 옵션과 같은 다양한 설정을 사용해 볼 수 있습니다. 어느 설정이 적절한지 파악했으면 Inception-v3이나 ResNet과 같이 보다 정확한 신경망을 사용해 보며 결과가 개선되는지 살펴봅니다.

Comparison of the accuracy and relative prediction time of the pretrained neural networks. As the accuracy of the pretrained neural networks increases, so does the relative prediction time.

참고

위 플롯은 여러 신경망의 상대적인 속도를 대략적으로만 보여줍니다. 정확한 예측 및 훈련 반복 시간은 사용하는 하드웨어와 미니 배치 크기에 따라 달라집니다.

양호한 신경망은 정확도가 높고 속도가 빠릅니다. 다음 플롯에는 최신 GPU(NVIDIA® Tesla® P100)와 미니 배치 크기 128을 사용했을 때 예측 시간 대비 분류 정확도가 표시되어 있습니다. 예측 시간은 가장 빠른 신경망을 기준으로 측정되었습니다. 각 마커의 면적은 디스크에 있는 신경망의 크기에 비례합니다.

ImageNet 검증 세트에 대한 분류 정확도는 ImageNet에서 훈련된 신경망의 정확도를 측정하는 가장 일반적인 방법입니다. ImageNet에서 정확한 신경망은 보통 전이 학습이나 특징 추출을 사용하여 다른 자연 영상 데이터 세트에 적용할 때도 정확합니다. 이러한 일반화는 이들 신경망이 다른 비슷한 데이터 세트로 일반화되는 자연 영상으로부터 강력하고 정보가 많은 특징을 추출하도록 학습되었기 때문에 가능합니다. 그러나 ImageNet에서의 높은 정확도가 항상 다른 작업으로 곧바로 전이되는 것은 아니므로 여러 신경망을 시도해 보는 것이 좋습니다.

한정된 하드웨어나 인터넷을 통해 분산 신경망을 사용하여 예측을 수행하려는 경우에는 디스크와 메모리에 있는 신경망의 크기도 고려하십시오.

신경망 정확도

ImageNet 검증 세트에 대해 분류 정확도를 계산하는 방법에는 여러 가지가 있으며, 소스마다 서로 다른 방법을 사용합니다. 여러 모델의 앙상블이 사용되는 경우도 있고, 각 영상을 여러 번 잘라서 여러 번 평가하는 경우도 있습니다. 표준(top-1) 정확도 대신 top-5 정확도를 사용하는 경우도 있습니다. 이러한 차이 때문에 서로 다른 소스 간에는 정확도를 직접 비교하는 것이 불가능한 경우가 종종 있습니다. Deep Learning Toolbox™의 사전 훈련된 신경망의 정확도는 단일 모델과 단일 중앙 영상 자르기를 사용하는 표준(top-1) 정확도입니다.

사전 훈련된 신경망 불러오기

SqueezeNet 신경망을 불러오려면 명령줄에 squeezenet을 입력하십시오.

net = squeezenet;

다른 신경망을 불러오려면 googlenet과 같은 함수를 사용하여 애드온 탐색기에서 사전 훈련된 신경망을 다운로드하는 링크를 가져옵니다.

다음 표에는 ImageNet에서 사전 훈련된 신경망과 그 속성 중 일부가 나열되어 있습니다. 신경망 심도는 입력 계층에서 출력 계층까지 이르는 경로에 있는 순차 컨벌루션 계층 또는 완전 연결 계층의 가장 큰 개수로 정의됩니다. 모든 신경망의 입력값은 RGB 영상입니다.

신경망심도크기파라미터(단위: 백만)영상 입력 크기
squeezenet18

5.2MB

1.24

227×227

googlenet22

27MB

7.0

224×224

inceptionv348

89MB

23.9

299×299

densenet201201

77MB

20.0

224×224

mobilenetv253

13MB

3.5

224×224

resnet1818

44MB

11.7

224×224

resnet5050

96MB

25.6

224×224

resnet101101

167MB

44.6

224×224

xception71

85MB

22.9299×299
inceptionresnetv2164

209MB

55.9

299×299

shufflenet505.4MB1.4224×224
nasnetmobile*20MB 5.3224×224
nasnetlarge*332MB88.9331×331
darknet191978MB20.8256×256
darknet5353155MB41.6256×256
efficientnetb08220MB5.3

224×224

alexnet8

227MB

61.0

227×227

vgg1616

515MB

138

224×224

vgg1919

535MB

144

224×224

*NASNet-Mobile 신경망과 NASNet-Large 신경망은 모듈로 구성된 선형 시퀀스로 이루어지지 않습니다.

Places365에서 훈련된 GoogLeNet

표준 GoogLeNet 신경망은 ImageNet 데이터 세트에서 훈련되었지만, 원하는 경우 Places365 데이터 세트에서 훈련된 신경망도 불러올 수 있습니다[3] [4]. Places365에서 훈련된 신경망은 영상을 들판, 공원, 활주로, 로비 등 365가지 장소 범주로 분류합니다. Places365 데이터 세트에서 훈련된 사전 훈련된 GoogLeNet 신경망을 불러오려면 googlenet('Weights','places365')를 사용하십시오. 전이 학습을 수행하여 새로운 작업을 수행할 때 가장 일반적인 방법은 ImageNet에서 사전 훈련된 신경망을 사용하는 것입니다. 새로운 작업이 장면 분류와 비슷한 경우, Places365에서 훈련된 신경망을 사용하면 더 높은 정확도를 얻을 수 있습니다.

오디오 작업에 적합한 사전 훈련된 신경망에 대한 자세한 내용은 오디오 응용 분야에 대한 사전 훈련된 신경망 항목을 참조하십시오.

사전 훈련된 신경망 시각화하기

심층 신경망 디자이너를 사용하여 사전 훈련된 신경망을 불러오고 시각화할 수 있습니다.

deepNetworkDesigner(squeezenet)

Deep Network Designer displaying a pretrained SqueezeNet neural network

계층 속성을 보고 편집하려면 계층을 선택하십시오. 계층 속성에 대한 자세한 정보를 보려면 계층 이름 옆에 있는 도움말 아이콘을 클릭하십시오.

Cross channel normalization layer selected in Deep Network Designer. The PROPERTIES pane shows the properties of the layer.

새로 만들기를 클릭하여 심층 신경망 디자이너에서 사전 훈련된 다른 신경망을 살펴봅니다.

Deep Network Designer start page showing available pretrained neural networks

신경망을 다운로드해야 할 경우에는 원하는 신경망에서 잠시 멈추고 설치를 클릭하여 애드온 탐색기를 엽니다.

특징 추출

특징 추출은 전체 신경망을 훈련시키는 데 시간과 노력을 투입하지 않고도 딥러닝의 강력한 기능을 사용할 수 있는 쉽고 빠른 방법입니다. 특징 추출은 훈련 영상을 한 번만 통과하면 되기 때문에 GPU가 없을 때 특히 유용합니다. 사전 훈련된 신경망을 사용하여 학습된 영상 특징을 추출한 다음 그러한 특징을 사용하여 분류기를 훈련시킵니다. 예를 들어 fitcsvm (Statistics and Machine Learning Toolbox)을 사용하여 서포트 벡터 머신 분류기를 훈련시킬 수 있습니다.

새로운 데이터 세트의 크기가 매우 작을 때 특징 추출을 사용해 보십시오. 추출된 특징에 대해 간단한 분류기를 훈련시키는 것이기 때문에 훈련 속도가 매우 빠릅니다. 또한, 학습할 데이터가 적기 때문에 신경망의 더 깊은 계층을 미세 조정한다고 해서 정확도가 높아질 확률도 낮습니다.

  • 데이터가 원본 데이터와 매우 비슷하다면 신경망의 더 깊은 계층으로부터 추출된 보다 구체적인 특징이 새로운 작업에 유용할 수 있습니다.

  • 데이터가 원본 데이터와 매우 다르면 신경망의 더 깊은 계층으로부터 추출된 특징이 작업에 덜 유용할 수 있습니다. 신경망의 앞쪽 계층에서 추출한 보다 일반적인 특징에 대해 최종 분류기를 훈련시켜 보십시오. 새로운 데이터 세트의 크기가 매우 크다면 신경망을 처음부터 훈련시켜 볼 수도 있습니다.

효과적인 특징 추출기로 ResNet을 들 수 있습니다. 사전 훈련된 신경망을 사용하여 특징을 추출하는 방법을 보여주는 예제는 사전 훈련된 신경망을 사용하여 영상 특징 추출하기 항목을 참조하십시오.

전이 학습

사전 훈련된 신경망을 출발점으로 사용하여 새로운 데이터 세트에서 신경망을 훈련시킴으로써 신경망의 더 깊은 계층을 미세 조정할 수 있습니다. 전이 학습을 통해 신경망을 미세 조정하는 것이 신경망을 새로 만들어 훈련시키는 것보다 더 빠르고 간편한 경우가 종종 있습니다. 신경망은 이미 다양한 영상 특징을 학습한 상태지만, 이 신경망을 미세 조정하면 사용자만의 새로운 데이터 세트에 특화된 특징을 학습할 수 있습니다. 데이터 세트의 크기가 매우 크다면 전이 학습이 처음부터 훈련시키는 것보다 빠르지 못할 수 있습니다.

신경망을 미세 조정하면 가장 높은 정확도를 갖게 되는 경우가 많습니다. 데이터 세트의 크기가 매우 작은 경우에는(클래스당 영상 20개 미만) 대신 특징 추출을 사용해 보십시오.

신경망을 미세 조정하는 것은 간단한 특징 추출에 비해 상대적으로 속도가 느리고 더 많은 노력이 필요하지만, 신경망에서 여러 다른 특징이 추출되도록 학습시킬 수 있으므로 최종 신경망이 종종 더 정확합니다. 새로운 데이터 세트의 크기가 매우 작지만 않다면 신경망이 새로운 특징을 학습할 데이터가 있는 것이기 때문에 일반적으로 미세 조정이 특징 추출보다 더 효과적입니다. 전이 학습을 수행하는 방법을 보여주는 예제는 심층 신경망 디자이너를 사용한 전이 학습새로운 영상을 분류하도록 딥러닝 신경망 훈련시키기 항목을 참조하십시오.

Transfer learning workflow

신경망 가져오기 및 내보내기

TensorFlow™ 2, TensorFlow-Keras, PyTorch®, ONNX™(Open Neural Network Exchange) 모델 형식에서 신경망과 계층 그래프를 가져올 수 있습니다. Deep Learning Toolbox 신경망과 계층 그래프를 TensorFlow 2 및 ONNX 모델 형식으로 내보낼 수도 있습니다.

가져오기 함수

외부 딥러닝 플랫폼과 모델 형식dlnetwork 형태로 모델 가져오기
SavedModel 형식의 TensorFlow 신경망 또는 TensorFlow-Keras 신경망importNetworkFromTensorFlow
.pt 파일의 추적 PyTorch 모델importNetworkFromPyTorch
ONNX 모델 형식의 신경망importNetworkFromONNX

importNetworkFromTensorFlow, importNetworkFromPyTorch, importNetworkFromONNX 함수는 TensorFlow 계층, PyTorch 계층, 또는 함수가 내장 MATLAB® 계층으로 변환할 수 없는 ONNX 연산자가 있는 모델을 가져올 때 자동으로 생성된 사용자 지정 계층을 생성합니다. 이 함수들은 자동으로 생성된 사용자 지정 계층을 현재 폴더의 패키지에 저장합니다. 자세한 내용은 Autogenerated Custom Layers 항목을 참조하십시오.

내보내기 함수

신경망 또는 계층 그래프 내보내기외부 딥러닝 플랫폼과 모델 형식
exportNetworkToTensorFlowPython® 패키지의 TensorFlow 2 모델
exportONNXNetworkONNX 모델 형식

exportNetworkToTensorFlow 함수는 Deep Learning Toolbox 신경망 또는 계층 그래프를 Python 패키지의 TensorFlow 모델로 저장합니다. 내보낸 모델을 불러오고 표준 TensorFlow 형식으로 저장하는 방법에 대한 자세한 내용은 Load Exported TensorFlow ModelSave Exported TensorFlow Model in Standard Format 항목을 참조하십시오.

ONNX를 중간 형식으로 이용하면 ONNX 모델을 내보내거나 가져올 수 있는 다른 종류의 딥러닝 프레임워크를 함께 운용할 수 있습니다.

Import neural networks from and export neural networks to external deep learning platforms.

오디오 응용 분야에 대한 사전 훈련된 신경망

Audio Toolbox™는 사전 훈련된 VGGish, YAMNet, OpenL3, CREPE 신경망을 제공합니다. MATLAB의 vggish (Audio Toolbox), yamnet (Audio Toolbox), openl3 (Audio Toolbox), crepe (Audio Toolbox) 함수를 사용하거나 Simulink®VGGish (Audio Toolbox) 블록과 YAMNet (Audio Toolbox) 블록을 사용하여 사전 훈련된 신경망과 직접 상호작용합니다. 심층 신경망 디자이너를 사용하여 사전 훈련된 오디오 신경망을 가져오고 시각화할 수도 있습니다.

다음 표에는 사용할 수 있는 사전 훈련된 오디오 신경망과 그 속성 중 일부가 나열되어 있습니다.

신경망심도크기파라미터(단위: 백만)입력 크기
crepe (Audio Toolbox)7

89.1MB

22.2

1024×1×1

openl3 (Audio Toolbox)8

18.8MB

4.68

128×199×1

vggish (Audio Toolbox)9

289MB

72.1

96×64×1

yamnet (Audio Toolbox)28

15.5MB

3.75

96×64×1

VGGish와 YAMNet을 사용하여 전이 학습과 특징 추출을 수행합니다. VGGish 또는 OpenL3 특징 임베딩을 추출하여 머신러닝 및 딥러닝 시스템에 입력합니다. classifySound (Audio Toolbox) 함수와 Sound Classifier (Audio Toolbox) 블록은 YAMNet을 사용하여 소리를 찾아서 521개 범주 중 하나로 분류합니다. pitchnn (Audio Toolbox) 함수는 CREPE를 사용하여 딥러닝 피치 추정을 수행합니다.

사전 훈련된 오디오 신경망을 새로운 작업에 적합하게 조정하는 방법을 보여주는 예제는 Transfer Learning with Pretrained Audio Networks (Audio Toolbox)Transfer Learning with Pretrained Audio Networks in Deep Network Designer 항목을 참조하십시오.

오디오 응용 분야에 대해 딥러닝을 사용하는 것에 대한 자세한 내용은 Deep Learning for Audio Applications (Audio Toolbox) 항목을 참조하십시오.

GitHub의 사전 훈련된 모델

최근에 사전 훈련된 모델을 보려면 MATLAB Deep Learning Model Hub를 참조하십시오.

예를 들면 다음과 같습니다.

참고 문헌

[1] ImageNet. http://www.image-net.org

[2] Russakovsky, O., Deng, J., Su, H., et al. “ImageNet Large Scale Visual Recognition Challenge.” International Journal of Computer Vision (IJCV). Vol 115, Issue 3, 2015, pp. 211–252

[3] Zhou, Bolei, Aditya Khosla, Agata Lapedriza, Antonio Torralba, and Aude Oliva. "Places: An image database for deep scene understanding." arXiv preprint arXiv:1610.02055 (2016).

[4] Places. http://places2.csail.mit.edu/

참고 항목

| | | | | | | | | | | | | | | | | | | | | | |

관련 항목

외부 웹사이트