Main Content

사전 훈련된 신경망을 사용하여 영상 분류하기

이 예제에서는 사전 훈련된 심층 컨벌루션 신경망 GoogLeNet을 사용하여 영상을 분류하는 방법을 보여줍니다.

1백만 개가 넘는 영상에 대해 훈련된 GoogLeNet은 영상을 키보드, 커피 머그잔, 연필, 각종 동물 등 1,000가지 사물 범주로 분류할 수 있습니다. 이 신경망은 다양한 영상을 대표하는 다양한 특징을 학습했습니다. 이 신경망은 영상을 입력값으로 받아서 영상에 있는 사물에 대한 레이블과 각 사물 범주의 확률을 출력합니다.

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

사전 훈련된 GoogLeNet 신경망과 해당 클래스 이름을 불러옵니다. 영상 분류를 위해 사전 훈련된 다른 신경망을 불러와도 됩니다. 이 단계에서는 Deep Learning Toolbox™ Model for GoogLeNet Network 지원 패키지가 필요합니다. 필요한 지원 패키지가 설치되어 있지 않으면 이를 다운로드할 수 있는 링크가 제공됩니다.

[net,classNames] = imagePretrainedNetwork("googlenet");

영상 읽기 및 크기 조정하기

분류하려는 영상의 크기는 신경망의 입력 크기와 같아야 합니다. GoogLeNet의 경우 영상 입력 계층의 InputSize 속성은 신경망의 입력 크기입니다.

분류하려는 영상을 읽어 들이고 신경망의 입력 크기에 맞게 영상의 크기를 조정합니다. 이렇게 크기를 조정하면 영상의 종횡비가 약간 변경됩니다.

I = imread("peppers.png");
inputSize = net.Layers(1).InputSize;
I = imresize(I,inputSize(1:2));

영상 분류 및 표시하기

영상을 분류하고 예측 레이블과 함께 표시합니다. 신경망을 사용하여 예측을 수행하기 위해 데이터를 single형으로 변환합니다.

scores = predict(net,single(I));
label = scores2label(scores,classNames);
figure
imshow(I)
title(string(label))

상위 예측과 그 확률도 함께 표시하는 방법을 보여주는 자세한 예제는 GoogLeNet을 사용하여 영상 분류하기 항목을 참조하십시오.

딥러닝의 다음 단계로 넘어가서 다른 작업에도 사전 훈련된 신경망을 사용해 볼 수 있습니다. 전이 학습이나 특징 추출을 사용하여 영상 데이터를 대상으로 새로운 분류 문제를 풀어 보십시오. 예제는 전이 학습을 사용하여 더 빠르게 딥러닝 시작하기사전 훈련된 신경망에서 추출한 특징을 사용하여 분류기 훈련시키기 항목을 참조하십시오. 다른 사전 훈련된 신경망을 사용해 보려면 사전 훈련된 심층 신경망 항목을 참조하십시오.

참고 문헌

  1. Szegedy, Christian, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott Reed, Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke, and Andrew Rabinovich. "Going deeper with convolutions." In Proceedings of the IEEE conference on computer vision and pattern recognition, pp. 1-9. 2015.

  2. BVLC GoogLeNet Model. https://github.com/BVLC/caffe/tree/master/models/bvlc_googlenet

참고 항목

| | | | |

관련 항목