Main Content

深層学習に MATLAB Coder を使用するための前提条件

MathWorks 製品

MATLAB® Coder™ を使用して深層学習ネットワークのコードを生成するには、次もインストールしなければなりません。

  • Deep Learning Toolbox™

  • MATLAB Coder Interface for Deep Learning

サードパーティ ライブラリを使用しないコードの生成

MATLAB Coder を使用して、深層学習ネットワークの汎用 C または C++ コードを生成できます。このような C または C++ コードは、どのサードパーティ ライブラリにも依存しません。詳細については、深層学習ネットワーク向けの汎用 C/C++ コードの生成を参照してください。

MATLAB Coder では、サポートされているインストール済みのコンパイラが検索されて使用されます。サポートされているコンパイラのリストについては、MathWorks® Web サイトのサポートされるコンパイラを参照してください。

mex -setup を使用して既定のコンパイラを変更できます。既定のコンパイラの変更を参照してください。

C++ コンパイラで C++11 がサポートされていなければなりません。

Windows® で、どのサードパーティ ライブラリも使用しない汎用 C または C++ コードを生成するには、Microsoft® Visual Studio® または MinGW® コンパイラを使用します。

サードパーティ ライブラリを使用するコードの生成

MATLAB Coder を使用して、Intel® または ARM® プロセッサに展開する深層学習ネットワークの C++ コードを生成できます。生成されたコードは、ターゲット CPU 用に最適化された深層学習ライブラリを利用します。ハードウェアとソフトウェアの要件はターゲット プラットフォームによって決まります。

メモ

必要なソフトウェア ライブラリへのパスは、スペースや、かっこなどの特殊文字を含めてはなりません。Windows オペレーティング システムでは、特殊文字やスペースは 8.3 ファイル名が有効になっている場合にのみ使用できます。8.3 ファイル名の詳細については、Windows のドキュメントを参照してください。

ハードウェアとソフトウェアの要件

 Intel CPUARM Cortex-A CPUARM Cortex-M CPU
ハードウェア要件

Intel Advanced Vector Extensions 2 (Intel AVX2) の命令をサポートする Intel プロセッサ。

NEON 拡張子をサポートする ARM Cortex-A プロセッサ。

ARM Cortex-M プロセッサ。

ソフトウェア ライブラリ

Intel Math Kernel Library for Deep Neural Networks (MKL-DNN), v1.4。https://github.com/oneapi-src/oneDNNを参照してください。

一部の必要なファイルが不足しているため、プリビルド ライブラリは使用しないでください。代わりに、ソース コードからライブラリをビルドします。GitHub® でのライブラリのビルド手順を参照してください。

ビルドの詳細については、MATLAB Answers™: https://www.mathworks.com/matlabcentral/answers/447387-matlab-coder-how-do-i-build-the-intel-mkl-dnn-library-for-deep-learning-c-code-generation-and-depの投稿を参照してください。

使用に関するメモ:

  • MATLAB ホスト コンピューターで実行する MEX 関数を生成する場合は、汎用 C/C++ コードを生成するのではなく、MKL-DNN ターゲットを使用することをお勧めします。MKL-DNN ライブラリを使用する生成コードは、汎用コードよりもパフォーマンスが向上する可能性があります。

  • 一部のネットワークについて、AVX2 マシンでは MKL-DNN ライブラリのパフォーマンスが遅くなることがあります。生成コードでの MKL-DNN のパフォーマンスを最大限に高めるには、AVX512 マシンを使用してください。

コンピューター ビジョンと機械学習用の ARM Compute Library、Version 19.05 および 20.02.1。https://developer.arm.com/ip-products/processors/machine-learning/compute-libraryを参照してください。

バージョン番号を coder.ARMNEONConfig 構成オブジェクトで指定します。既定のバージョン番号は v20.02.1 です。

ARM ハードウェアではコンパイラとの互換性がない可能性があるため、プリビルド ライブラリは使用しないでください。代わりに、ソース コードからライブラリをビルドします。ホスト マシン上またはターゲット ハードウェア上で直接ライブラリをビルドします。GitHub の version 20.02.1 のライブラリのビルド手順を参照してください。

libarm_compute.so などのライブラリ ファイルを含むフォルダーは lib という名前にしなければなりません。フォルダーの名前が build である場合は、名前を lib に変更します。

ビルドの詳細については、MATLAB Answers: https://www.mathworks.com/matlabcentral/answers/455590-matlab-coder-how-do-i-build-the-arm-compute-library-for-deep-learning-c-code-generation-and-deploの投稿を参照してください。

8 ビット整数で推論の計算を実行する生成コードを ARM プロセッサに展開するには、ARM Compute Library version 20.02.1 を使用しなければなりません。

CMSIS-NN ライブラリ version 5.7.0。https://www.keil.arm.com/cmsisを参照してください。

以下に記載されているビルド ステップを使用してホスト マシン上でライブラリをビルドします。

オペレーティング システムのサポート

Windows、Linux® および macOS

Windows および Linux のみ。

Windows および Linux のみ。

サポートされるコンパイラ

MATLAB Coder では、サポートされているインストール済みのコンパイラが検索されて使用されます。サポートされているコンパイラのリストについては、MathWorks Web サイトのサポートされるコンパイラを参照してください。

mex -setup を使用して既定のコンパイラを変更できます。既定のコンパイラの変更を参照してください。

C++ コンパイラで C++11 がサポートされていなければなりません。

Windows で、codegen コマンドを使用して Intel MKL-DNN ライブラリを使用するコードを生成するには、Microsoft Visual Studio 2015 以降を使用します。

メモ

Windows では、Intel MKL-DNN ライブラリを使用する MEX 関数を生成する場合、MinGW コンパイラはサポートされません。

その他

ARM Cortex-A ベースの深層学習例には、Open Source Computer Vision Library (OpenCV) v3.1.0 が必要です。

メモ: 例には opencv_core.libopencv_video.lib などの個別のライブラリが必要です。Computer Vision Toolbox™ に同梱されている OpenCV ライブラリには必要なライブラリが含まれていないため、OpenCV インストーラーはそれらのライブラリをインストールしません。そのため、OpenCV ソースをダウンロードして、ライブラリをビルドしなければなりません。

詳細については、OpenCV のドキュメントを参照してください。

環境変数

MATLAB Coder は、環境変数を使用して深層学習ネットワークのコード生成に必要なライブラリを見つけます。

プラットフォーム変数名説明
WindowsINTEL_MKLDNN

Intel MKL-DNN ライブラリ インストールのルート フォルダーへのパス。

以下に例を示します。

C:\Program Files\mkl-dnn

ARM_COMPUTELIB

ARM ターゲット ハードウェアにインストールされる ARM Compute Library のルート フォルダーへのパス。

以下に例を示します。

/usr/local/arm_compute

ARM ターゲット ハードウェアで ARM_COMPUTELIB を設定します。

CMSISNN_PATH

ARM ターゲット ハードウェアにインストールされる CMSIS-NN ライブラリのルート フォルダーへのパス。

次に例を示します。

/usr/local/cmsis_nn

ARM ターゲット ハードウェアで CMSISNN_PATH を設定します。

PATH

Intel MKL-DNN ライブラリ フォルダーへのパス。

以下に例を示します。

C:\Program Files\mkl-dnn\lib

LinuxLD_LIBRARY_PATH

Intel MKL-DNN ライブラリ フォルダーへのパス。

以下に例を示します。

/usr/local/mkl-dnn/lib/

ターゲット ハードウェアの ARM Compute Library フォルダーへのパス。

以下に例を示します。

/usr/local/arm_compute/lib/

ARM ターゲット ハードウェアで LD_LIBRARY_PATH を設定します。

INTEL_MKLDNN

Intel MKL-DNN ライブラリ インストールのルート フォルダーへのパス。

以下に例を示します。

/usr/local/mkl-dnn/

ARM_COMPUTELIB

ARM ターゲット ハードウェアにインストールされる ARM Compute Library のルート フォルダーへのパス。

以下に例を示します。

/usr/local/arm_compute/

ARM ターゲット ハードウェアで ARM_COMPUTELIB を設定します。

CMSISNN_PATH

ARM ターゲット ハードウェアにインストールされる CMSIS-NN ライブラリのルート フォルダーへのパス。

次に例を示します。

/usr/local/cmsis_nn

ARM ターゲット ハードウェアで CMSISNN_PATH を設定します。

macOSINTEL_MKLDNN

Intel MKL-DNN ライブラリ インストールのルート フォルダーへのパス。

以下に例を示します。

/usr/local/mkl-dnn

ARM Cortex-A ターゲット上の UNIX® ベースの OSOPENCV_DIR

OpenCV のビルド フォルダーへのパス。OpenCV を使用する深層学習例のために、OpenCV をインストールします。

以下に例を示します。

/usr/local/opencv/build

メモ

MATLAB Support Package for Raspberry Pi® Hardware を使用して Raspberry Pi 向けのコードを生成するには、環境変数を非対話型で設定しなければなりません。詳細についてはhttps://www.mathworks.com/matlabcentral/answers/455591-matlab-coder-how-do-i-setup-the-environment-variables-on-arm-targets-to-point-to-the-arm-compute-liを参照してください。

メモ

OpenCV を使用する例を作成して実行するには、ターゲット ボードに OpenCV ライブラリをインストールしなければなりません。Linux に OpenCV をインストールする場合は、ライブラリ ファイルへのパスと、ヘッダー ファイルへのパスがシステム パスにあることを確認してください。既定では、ライブラリ ファイルとヘッダー ファイルは /usr/local/lib//usr/local/include/opencv などの標準の場所にそれぞれインストールされます。

ターゲット ボードに OpenCV をインストールする場合は、前の表で説明しているように環境変数 OPENCV_DIRPATH を設定します。

メモ

OpenMP スレッドのバインディングを制御する環境変数を物理処理装置に設定することで、Intel CPU 用に生成されたコードのパフォーマンスを改善できる場合があります。たとえば、Linux プラットフォームで、KMP_AFFINITY 環境変数を scatter に設定します。Intel CPU を使用する他のプラットフォームの場合は、同様の環境変数を使用して、生成されたコードのパフォーマンスを改善できる場合があります。

関連するトピック