このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
ARM Mali GPU での深層学習の予測
この例では、関数 cnncodegen
を使用して、ARM® Mali GPU での深層学習を使用するイメージ分類アプリケーションのコードを生成する方法を説明します。この例では、MobileNet-v2
DAG ネットワークを使用してイメージ分類を実行します。生成コードはコンピューター ビジョンおよび機械学習用の ARM Compute Library を利用します。
必要条件
ARM Mali GPU ベースのハードウェア。たとえば、HiKey960 は Mali GPU を含むターゲット プラットフォームの 1 つです。
Mali GPU 向けにビルドされたターゲット ARM ハードウェアの ARM Compute Library。
ターゲット ARM ハードウェア上の Open Source Computer Vision Library (OpenCV v2.4.9)。
コンパイラおよびライブラリの環境変数。
ARM_COMPUTE
変数およびLD_LIBRARY_PATH
変数がターゲット プラットフォーム上で設定されていることを確認します。サポートされているコンパイラおよびライブラリのバージョンの詳細については、サードパーティ ハードウェア (GPU Coder)を参照してください。環境変数の設定は、前提条件となる製品の設定 (GPU Coder)を参照してください。
事前学習済みの DAGNetwork の取得
Deep Learning Toolbox Model for MobileNet-v2 Network
で入手できる事前学習済みの MobileNet-v2
ネットワークを読み込みます。
net = mobilenetv2
net = DAGNetwork with properties: Layers: [154×1 nnet.cnn.layer.Layer] Connections: [163×2 table] InputNames: {'input_1'} OutputNames: {'ClassificationLayer_Logits'}
このネットワークには、畳み込み層、バッチ正規化層、ソフトマックス層、分類出力層など、155 個の層が含まれています。関数 analyzeNetwork()
は、ネットワーク アーキテクチャの対話型プロット、およびネットワーク層についての情報が含まれる table を表示します。
analyzeNetwork(net);
コードの生成
ARM ターゲットでの深層学習のため、ホスト開発コンピューターでコードを生成します。実行可能プログラムをビルドして実行するには、生成されたコードを ARM ターゲット プラットフォームに移動します。ターゲット プラットフォームには ARM Mali GPU がなければなりません。たとえば、HiKey960 はこの例で生成されたコードを実行できるターゲット プラットフォームの 1 つです。
ターゲット ライブラリを arm-compute-mali
として指定して関数 cnncodegen
を呼び出します。
cnncodegen(net,'targetlib','arm-compute-mali');
生成されたファイルのターゲットへのコピー
推奨される SCP (Secure Copy Protocol) クライアントまたは Secure Shell File Transfer Protocol (SSH) クライアントを使用して、生成された codegen フォルダーとその他の必要なファイルをホスト開発コンピューターからターゲット プラットフォームに移動します。
たとえば、Linux® プラットフォームでは、HiKey960 にファイルを転送するには、次の形式の scp コマンドを使用します。
system('sshpass -p [password] scp (sourcefile) [username]@[targetname]:~/');
system('sshpass -p password scp main_mobilenet_arm_generic.cpp username@targetname:~/'); system('sshpass -p password scp peppers_mobilenet.png username@targetname:~/'); system('sshpass -p password scp makefile_mobilenet_arm_generic.mk username@targetname:~/'); system('sshpass -p password scp synsetWords.txt username@targetname:~/'); system('sshpass -p password scp -r codegen username@targetname:~/');
Windows® プラットフォームでは、PuTTY インストールに付属する pscp
ツールを使用できます。次に例を示します。
system('pscp -pw password-r codegen username@targetname:/home/username');
PSCP ユーティリティは PATH 上、または現在のフォルダーになければなりません。
実行可能ファイルのビルド
ターゲット プラットフォームでライブラリをビルドするには、生成された makefile cnnbuild_rtw.mk
を使用します。
たとえば、HiKey960 でライブラリをビルドするには次のようにします。
system('sshpass -p password ssh username@targetname' ... ' "make -C /home/username/codegen -f cnnbuild_rtw.mk"');
Windows プラットフォームでは、引数 -ssh
を指定した putty
コマンドを使用して、ログインして make コマンドを実行できます。次に例を示します。
system('putty -ssh username@targetname -pw password');
ターゲット プラットフォームで実行可能ファイルをビルドして実行するには、次の形式でコマンドを使用します。make -C /home/$(username)
および ./execfile -f makefile_mobilenet_arm_generic.mk
たとえば、HiKey960 では次のようになります。
make -C /home/usrname arm_mobilenet -f makefile_mobilenet_arm_generic.mk
入力イメージ ファイルを指定して ARM プラットフォームで実行可能ファイルを実行します。
./mobilenet_exe peppers_mobilenet.png
入力イメージ ファイルに対する上位 5 つの予測は次のようになります。