事前学習済みのネットワークを使用したモバイル デバイスのカメラからのイメージの分類
モバイル デバイスの設定
この例では、モバイル デバイスのカメラで取得したイメージを、深層学習を使用して分類する方法を説明します。
モバイル デバイス上で 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');
ネットワークの入力サイズに合わせてイメージのサイズを変更します。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));
イメージを分類する関数の作成
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');
nnet = googlenet;
関数 camnet
を呼び出します。
label = camnet(cam,nnet)
モバイル デバイス上でカメラ プレビューが開きます。分類するオブジェクトに向けて、モバイル デバイスのカメラを移動します。シャッター ボタンを押してイメージをキャプチャします。イメージをキャプチャしたら、Figure を表示できます。Figure のタイトルには、オブジェクトの予測されたラベルが表示されます。