Main Content

사전 훈련된 신경망을 사용하여 모바일 기기의 카메라에서 수집한 이미지 분류하기

모바일 기기 설정하기

이 예제에서는 딥러닝을 사용하여, 모바일 기기의 카메라에서 수집한 이미지를 분류하는 방법을 보여줍니다.

모바일 기기에 MATLAB® Mobile™을 설치하고 설정합니다. 그런 다음 MATLAB Mobile 설정에서 MathWorks® Cloud에 로그인합니다. 자세한 내용은 기기에 MATLAB Mobile 설치하기클라우드에 로그인하기 항목을 참조하십시오.

기기에서 MATLAB Mobile을 시작합니다.

모바일 기기의 카메라에 대한 연결 만들기

명령 화면에서 mobiledev 객체 m을 만듭니다.

m = mobiledev
m = 
mobiledev with properties:

                   Connected: 1
            AvailableCameras: {'back' 'front'}
                     Logging: 0
            InitialTimestamp: ''

   AccelerationSensorEnabled: 0
AngularVelocitySensorEnabled: 0
       MagneticSensorEnabled: 0
    OrientationSensorEnabled: 0
       PositionSensorEnabled: 0

Supported functions

AvailableCameras 속성은 이 기기에 'back' 카메라와 'front' 카메라가 있음을 나타냅니다. 'back' 카메라에 대한 연결을 만듭니다.

cam = camera(m,'back')
cam = 
  Camera with properties:

                    Name: 'back'
    AvailableResolutions: {'640x480'  '1280x720'}
               ZoomRange: [1 121.8750]
              Resolution: '640x480'
                    Zoom: 1
                   Flash: 'off'
               Autofocus: 'on'

카메라 속성은 이미지 해상도, 자동 초점, 플래시 설정에 대한 정보를 제공합니다.

사전 훈련된 신경망을 불러오고 이미지 수집하기

명령 화면에서 Deep Learning Toolbox™를 사용하여 사전 훈련된 GoogLeNet 신경망을 불러옵니다.

nnet = googlenet;

snapshot 함수를 사용하여 카메라에서 수동 셔터 모드로 이미지를 하나 수집합니다. 카메라 미리보기가 열리면 모바일 기기를 움직여 원하는 구도를 잡을 수 있습니다. 이 예제에서는 분류하려는 사물의 이미지를 캡처합니다. 준비가 되면 셔터 버튼을 눌러 이미지를 수집합니다.

img = snapshot(cam,'manual');

Image of coffee cup

신경망의 입력 크기와 일치하도록 이미지의 크기를 조정합니다. GoogLeNet의 입력 크기는 224x224입니다. MATLAB Mobile에서 image를 사용하여 이미지를 미리 봅니다.

img = imresize(img,[224,224]);
image(img)

수집한 이미지 분류 및 표시하기

Deep Learning Toolbox의 classify를 사용하여, 수집한 이미지에 있는 사물을 분류합니다.

label = classify(nnet,img)
label = 

  categorical

     coffee mug 

사물은 커피잔으로 분류됩니다. 레이블을 Figure 제목으로 사용하여 이미지를 미리 봅니다.

image(img)
title(char(label));

Image showing coffee mug in MATLAB with thumbnail

이미지를 분류하는 함수 작성하기

MATLAB Mobile에서 이미지를 분류하는 앞의 모든 단계를 수행하는 함수를 작성할 수 있습니다.

파일 화면에서 MATLAB Drive™ 폴더에 새 스크립트를 만듭니다. 파일의 이름을 camnet.m으로 지정합니다. camnet 함수를 다음과 같이 정의하고 파일을 저장합니다.

function value = camnet(cam,nnet)
    img = snapshot(cam,'manual');
    pic = imresize(img,[224,224]);
    value = classify(nnet,pic);
    image(pic)
    title(char(value))
end

명령 화면에서 mobiledev 객체를 만듭니다. 그런 다음 camera 객체를 만듭니다.

m = mobiledev;
cam = camera(m,'front');
사전 훈련된 GoogLeNet 신경망을 불러옵니다.

nnet = googlenet;

camnet 함수를 호출합니다.

label = camnet(cam,nnet)

모바일 기기에서 카메라 미리보기가 열립니다. 분류하려는 사물을 향하도록 모바일 기기 카메라를 움직입니다. 셔터 버튼을 눌러 이미지를 캡처합니다. 이미지를 캡처한 후에는 Figure를 볼 수 있습니다. Figure 제목에 사물의 예측된 레이블이 표시됩니다.

Image of a wallet displayed in MATLAB

참고 항목

| |