Main Content

使用 MATLAB Coder 进行深度学习的前提条件

MathWorks 产品

要使用 MATLAB® Coder™ 为深度学习网络生成代码,您还必须安装:

  • Deep Learning Toolbox™

  • MATLAB Coder Interface for Deep Learning Libraries

MATLAB Online™ 不支持 MATLAB Coder Interface for Deep Learning Libraries

第三方硬件和软件

您可以使用 MATLAB Coder 为部署到 Intel® 或 ARM® 处理器的深度学习网络生成 C++ 代码。生成的代码利用针对目标 CPU 进行了优化的深度学习库。硬件和软件要求取决于目标平台。

您还可以使用 MATLAB Coder 为深度学习网络生成泛型 C 或 C++ 代码。这种 C 或 C++ 代码不依赖于任何第三方库。有关详细信息,请参阅Generate Generic C/C++ Code for Deep Learning Networks

注意

所需软件库的路径不能包含空格或特殊字符,如括号。在 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://01.org/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 函数时,建议您使用 MKL-DNN 目标,而不是生成泛型 C/C++ 代码。使用 MKL-DNN 库的生成代码可能比泛型代码具有更好的性能。

针对计算机视觉和机器学习的 ARM Compute Library,版本 19.05 和 20.02.1。请参阅 https://developer.arm.com/ip-products/processors/machine-learning/compute-library

coder.ARMNEONConfig 配置对象中指定版本号。默认版本号是 v20.02.1。

不要使用预置库,因为它可能与 ARM 硬件上的编译器不兼容。请从源代码编译库。请在您的主机上或直接在目标硬件上编译库。请参阅 GitHub 上的编译库的说明

包含库文件(如 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

要在 ARM 处理器上部署量化网络,您必须使用 ARM Compute Library 版本 20.02.1。

CMSIS-NN 库版本 5.7.0。请参阅 https://developer.arm.com/tools-and-software/embedded/cmsis

使用 MATLAB Answers https://www.mathworks.com/matlabcentral/answers/1631260 中提供的编译步骤在您的主机上编译库

操作系统支持

Windows、Linux®macOS

仅限 Windows 和 Linux。

仅限 Windows 和 Linux。

C++ 编译器

MATLAB Coder 将查找并使用支持的已安装编译器。有关受支持编译器的列表,请参阅 MathWorks® 网站上的支持和兼容的编译器

可以使用 mex -setup 更改默认编译器。请参阅更改默认编译器

C++ 编译器必须支持 C++11。

在 Windows 上,要使用 codegen 命令生成使用 Intel MKL-DNN 库的代码,请使用 Microsoft® Visual Studio® 2015 或更高版本。

在 Windows 上,要生成不使用任何第三方库的泛型 C 或 C++ 代码,请使用 Microsoft Visual Studio 或 MinGW® 编译器。有关详细信息,请参阅Generate Generic C/C++ Code for Deep Learning Networks

注意

生成使用 Intel MKL-DNN 库的 MEX 函数时,不支持使用 MinGW 编译器。

其他

开源计算机视觉库 (OpenCV),基于 ARM Cortex-A 的深度学习示例需要的版本为 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® 的操作系统OPENCV_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 的其他平台,也许可以设置类似的环境变量来提高生成代码的性能。

相关主题