이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

사전 훈련된 심층 신경망

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

사전에 훈련된 네트워크는 다음과 같은 작업에서 사용할 수 있습니다.

목적설명
분류

분류 문제에 직접 사전 훈련된 네트워크를 적용합니다. 새로운 이미지를 분류하려면 classify를 사용하십시오. 사전 훈련된 네트워크를 분류에 사용하는 방법을 보여주는 예제는 GoogLeNet을 사용하여 이미지 분류하기 항목을 참조하십시오.

특징 추출

계층 활성화를 특징으로 사용하여 사전 훈련된 네트워크를 특징 추출기로 사용합니다. 활성화를 특징으로 사용하여 서포트 벡터 머신(SVM)과 같은 여타 기계 학습 모델을 훈련시킬 수 있습니다. 자세한 내용은 특징 추출 항목을 참조하십시오. 예제는 Extract Image Features Using Pretrained Network 항목을 참조하십시오.

전이 학습

대규모 데이터 세트에서 훈련된 네트워크의 계층을 가져와 새로운 데이터 세트에 대해 미세 조정합니다. 자세한 내용은 전이 학습 항목을 참조하십시오. 간단한 예제는 Get Started with Transfer Learning 항목을 참조하십시오. 더 많은 사전 훈련된 네트워크를 사용해 보려면 새로운 이미지를 분류하도록 심층 학습 네트워크 훈련시키기 항목을 참조하십시오.

사전 훈련된 네트워크 불러오기

googlenet과 같은 함수를 사용하여 애드온 탐색기에서 사전 훈련된 네트워크를 다운로드하는 링크를 가져옵니다. 다음 표에는 ImageNet에서 사전 훈련된 네트워크와 그 속성 중 일부가 나열되어 있습니다. 네트워크 심도는 입력 계층에서 출력 계층까지 이르는 경로에 있는 순차 컨벌루션 계층 또는 완전 연결 계층의 가장 큰 개수로 정의됩니다. 모든 네트워크의 입력값은 RGB 이미지입니다.

네트워크심도크기파라미터(단위: 백만)이미지 입력 크기
alexnet8

227MB

61.0

227x227

vgg1616

515MB

138

224x224

vgg1919

535MB

144

224x224

squeezenet18

4.6MB

1.24

227x227

googlenet22

27MB

7.0

224x224

inceptionv348

89MB

23.9

299x299

densenet201201

77MB

20.0

224x224

mobilenetv254

13MB

3.5

224x224

resnet1818

44MB

11.7

224x224

resnet5050

96MB

25.6

224x224

resnet101101

167MB

44.6

224x224

xception71

85MB

22.9299x299
inceptionresnetv2164

209MB

55.9

299x299

Places365에서 훈련된 GoogLeNet

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

사전 훈련된 네트워크 비교하기

사전 훈련된 네트워크는 저마다 다른 특징을 갖습니다. 문제에 적용할 네트워크를 선택할 때 이러한 특징을 고려해야 합니다. 가장 중요한 특징은 네트워크의 정확도, 속도 및 크기입니다. 네트워크를 선택할 때는 일반적으로 이러한 특징 사이의 장단점을 절충하여 선택하게 됩니다.

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

아래 플롯에서 ImageNet 검증 정확도와 이 네트워크를 사용하여 예측을 수행하는 데 소요되는 시간과 비교해 보십시오. 양호한 네트워크는 정확도가 높고 속도가 빠릅니다. 다음 플롯에는 최신 GPU(NVIDIA® TITAN Xp)와 미니 배치 크기 64를 사용했을 때 예측 시간 대비 분류 정확도가 표시되어 있습니다. 예측 시간은 가장 빠른 네트워크를 기준으로 측정되었습니다. 각 마커의 면적은 디스크에 있는 네트워크의 크기에 비례합니다.

모든 비교 대상 측정값(여기서는 정확도와 예측 시간)에서 그것보다 더 나은 네트워크가 없는 네트워크를 파레토 효율적 네트워크라고 합니다. 파레토 효율적 네트워크의 모든 집합을 파레토 경계라고 합니다. 파레토 경계는 두 측정값 모두에 대해 다른 네트워크보다 나쁘지 않은 모든 네트워크를 포함합니다. 이 플롯에서는 정확도와 예측 시간 평면에서 파레토 경계에 포함된 네트워크들이 연결되어 있습니다. AlexNet, VGG-16, VGG-19, Xception, DenseNet-201을 제외한 모든 네트워크가 파레토 경계에 포함되는 것을 볼 수 있습니다.

참고

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

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

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

네트워크 정확도

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

특징 추출

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

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

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

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

효과적인 특징 추출기로 ResNet을 들 수 있습니다. 사전 훈련된 네트워크를 사용하여 특징을 추출하는 방법을 보여주는 예제는 Extract Image Features Using Pretrained Network 항목을 참조하십시오.

전이 학습

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

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

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

네트워크 가져오기 및 내보내기

TensorFlow®-Keras, Caffe 및 ONNX™(Open Neural Network Exchange) 모델 형식에서 네트워크와 네트워크 아키텍처를 가져올 수 있습니다. 훈련된 네트워크를 ONNX 모델 형식으로 내보낼 수도 있습니다.

Keras에서 가져오기

importKerasNetwork를 사용하여 TensorFlow-Keras에서 사전 훈련된 네트워크를 가져옵니다. 네트워크와 가중치는 하나의 HDF5(.h5) 파일에서 가져오거나 HDF5 파일과 JSON(.json) 파일에서 각각 따로 가져올 수 있습니다. 자세한 내용은 importKerasNetwork를 참조하십시오.

importKerasLayers를 사용하여 TensorFlow-Keras에서 네트워크 아키텍처를 가져옵니다. 가중치를 포함하거나 포함하지 않고 네트워크 아키텍처를 가져올 수 있습니다. 네트워크 아키텍처와 가중치는 하나의 HDF5(.h5) 파일에서 가져오거나 HDF5 파일과 JSON(.json) 파일에서 각각 따로 가져올 수 있습니다. 자세한 내용은 importKerasLayers를 참조하십시오.

Caffe에서 가져오기

importCaffeNetwork 함수를 사용하여 Caffe에서 사전 훈련된 네트워크를 가져옵니다. Caffe Model Zoo에는 훈련된 네트워크가 다수 있습니다[5]. 원하는 .prototxt.caffemodel 파일을 다운로드하고, importCaffeNetwork를 사용하여 MATLAB®으로 사전 훈련된 네트워크를 가져옵니다. 자세한 내용은 importCaffeNetwork를 참조하십시오.

Caffe 네트워크의 네트워크 아키텍처를 가져올 수 있습니다. 원하는 .prototxt 파일을 다운로드하고, importCaffeLayers를 사용하여 MATLAB으로 네트워크 계층을 가져옵니다. 자세한 내용은 importCaffeLayers를 참조하십시오.

ONNX에서 가져오고 내보내기

ONNX를 중간 형식으로 이용하면 ONNX 모델을 내보내거나 가져올 수 있는 다른 종류의 심층 학습 프레임워크를 함께 운용할 수 있습니다. 이러한 프레임워크에는 TensorFlow, PyTorch, Caffe2, Microsoft® Cognitive Toolkit(CNTK), Core ML, Apache MXNet™ 등이 포함됩니다.

훈련된 Deep Learning Toolbox 네트워크를 exportONNXNetwork 함수를 사용하여 ONNX로 내보내십시오. 그런 다음 ONXX 모델 가져오기를 지원하는 다른 심층 학습 프레임워크로 ONNX 모델을 가져올 수 있습니다.

importONNXNetwork를 사용하여 ONNX에서 사전 훈련된 네트워크를 가져오고, importONNXLayers를 사용하여 가중치를 포함하거나 포함하지 않고 네트워크 아키텍처를 가져옵니다.

참고 문헌

[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/

[5] Caffe Model Zoo. http://caffe.berkeleyvision.org/model_zoo.html

참고 항목

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

관련 항목