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'}
              Resolution: '640x480'
                   Flash: 'off'
               Autofocus: 'on'

カメラのプロパティで、イメージの解像度、オートフォーカス、フラッシュの設定に関する情報が提供されます。

事前学習済みのネットワークの読み込みとイメージの取得

Deep Learning Toolbox™ を使用して、[コマンド] 画面から事前学習済みの GoogLeNet ネットワークを読み込みます。

nnet = googlenet;

手動シャッター モードで関数 snapshot を使用して、カメラから 1 つのイメージを取得します。カメラ プレビューが開いたら、モバイル デバイスを移動して、目的の視野をキャプチャできます。この例では、分類するオブジェクトのイメージをキャプチャします。準備ができたら、シャッター ボタンを押してイメージを取得します。

img = snapshot(cam,'manual');

Image of coffee cup

ネットワークの入力サイズに合わせてイメージのサイズを変更します。GoogLeNet の入力サイズは 224 x 224 です。image を使用して、MATLAB Mobile でイメージをプレビューします。

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

参考

| |