骁龙神经处理引擎SDK参考指南(2)
3 设置
3.1 SNPE 设置
3.1.1 安装
本章介绍了 SNPE 所需工具的设置和 SDK 安装。
3.1.2先决条件
-
目前SNPE SDK开发环境仅限于Ubuntu,具体为18.04版本。
我们还验证了 SDK 可以在 Linux 的 Windows 子系统 (WSL2) 环境版本 1.1.3.0 上无缝运行。
如果您想设置自己的 WSL2 环境,可以按照 Microsoft 在
https://learn.microsoft.com/en-us/windows/wsl/install提供的说明进行操作。 -
SDK 需要 Caffe、Caffe2、ONNX、PyTorch、TensorFlow 或 TFLite。
Caffe 说明:Caffe 和 Caffe2 设置
TensorFlow 说明:TensorFlow 设置
ONNX 说明:ONNX 设置
TFLite 说明:TFLite 设置
PyTorch 说明:PyTorch 设置 -
Python 3.6
“/usr/bin/python”和“python”应该指向 Python 3。可以使用以下步骤实现:
为 python 创建替代列表
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2
检查 python 列表
$ 更新选项 --list python
更新备选方案以选择所需的 python 版本
$ sudo update-alternatives --config python
- Android NDK (android-ndk-r17c-linux-x86) 是可选的,只需要构建 SDK 附带的本机 CPP 示例
使用clang构建的 SDK Android 二进制文件需要随 SDK 一起提供的libc++_shared.so 。(请参阅下面的平台运行时库)。 - Android SDK(SDK 版本 23 和构建工具版本 23.0.2)是可选的,只需要构建 SDK 附带的 Android APK。
3.1.3 设置SDK环境和依赖
SDK环境搭建说明如下。
将 SDK 解压到一个目录。SDK 解压缩到的目录称为 $SNPE_ROOT。请注意本节中使用的“XYZ”。它指的是正在使用的发布 zip(例如 snpe-1.0.0.zip)。
解压-X snpe-XYZzip
运行 dependencies 脚本以检查系统是否存在 Ubuntu 包依赖项。它会要求安装缺少的。安装缺少的包。
来源 snpe-XYZ/bin/dependencies.sh
运行 python 依赖项检查程序以检查系统是否存在 python 包依赖项。安装缺少的包。
来源 snpe-XYZ/bin/check_python_depends.sh
使用 SNPE SDK 测试的 Python 包版本是:
- numpy v1.16.5
- 斯芬克斯 v2.2.1
- scipy v1.3.1
- matplotlib v3.0.3
- skimage v0.15.0
- protobuf v3.6.0
- pyyaml v5.1
平台运行时库
$SNPE_ROOT 指安装SNPE SDK的目录路径。
- Aarch64 Linux 运行时库要求Aarch64 Linux 目标需要
libatomic.so.1 。在较新的目标设备上,这在库路径中的平台 SW 中可用。对于这些平台(例如使用 aarch64-oe-linux-gcc8.2 工具链),该库在设备上不可用,需要从 SNPE SDK 明确复制。
3.1.4 设置环境
在 Android 上构建本机 C++ 示例(构建您的第一个 SNPE 本机应用程序)需要安装 Android NDK,并按照以下命令导出 ANDROID_NDK_ROOT。
导出 ANDROID_NDK_ROOT=<path_to_ndk>
如果未设置 ANDROID_NDK_ROOT,环境设置脚本将尝试通过搜索 ndk-build 来查找 NDK 路径。
3.1.5 Caffe 的环境设置
- 将 SNPE SDK 与 Caffe 模型一起使用需要有效的 Caffe 安装(请参阅Caffe 和 Caffe2 设置。)
- 转到 $SNPE_ROOT 并运行以下脚本来设置 SNPE SDK 环境。必须提供 Caffe 目录的位置。
源 bin/envsetup.sh -c $CAFFE_DIR
其中 $CAFFE_DIR 是 Caffe 安装的路径。
- 该脚本可能会显示有关 Caffe SHA 不匹配的警告。脚本检查的 SHA 是 SDK 测试过的 SHA。可以使用不同版本的 Caffe,包括从源代码构建的版本。可以忽略此警告。
- 该脚本设置以下环境变量:
SNPE_ROOT:SNPE SDK安装根目录
CAFFE_HOME:您提供的 Caffe 安装的根目录($CAFFE_DIR)
- 该脚本还更新 PATH、LD_LIBRARY_PATH 和 PYTHONPATH。
3.1.5 Caffe2的环境设置
- 使用带有 Caffe2 模型的 SNPE SDK 需要有效的 Caffe2 安装。(请参阅Caffe 和 Caffe2 设置。)
转到 $SNPE_ROOT 并运行以下脚本来设置 SNPE SDK 环境。必须提供 Caffe2 目录的位置。
源 bin/envsetup.sh -f $CAFFE2_DIR
其中 $CAFFE2_DIR 是 Caffe2 安装的路径。
- 该脚本设置以下环境变量:
SNPE_ROOT:SNPE SDK安装根目录
CAFFE2_HOME:您提供的 Caffe2 安装的根目录($CAFFE2_DIR)
- 该脚本还更新 PATH、LD_LIBRARY_PATH 和 PYTHONPATH。
3.1.6 TensorFlow 的环境设置
- 将 SNPE SDK 与 TensorFlow 模型一起使用需要有效的 TensorFlow 安装(请参阅TensorFlow 设置。)
- 转到 $SNPE_ROOT 并运行以下脚本来设置 SNPE SDK 环境。必须提供 TensorFlow 目录的位置。
源 bin/envsetup.sh -t $TENSORFLOW_DIR
其中 $TENSORFLOW_DIR 是 TensorFlow 安装的路径。
- 该脚本设置以下环境变量。
SNPE_ROOT:SNPE SDK安装根目录
TENSORFLOW_HOME:提供的TensorFlow安装根目录
- 该脚本还更新 PATH、LD_LIBRARY_PATH 和 PYTHONPATH。
3.1.7 ONNX 的环境设置
- 将 SNPE SDK 与 ONNX 模型一起使用需要有效的 ONNX 安装(请参阅ONNX 设置。)
- 转到 $SNPE_ROOT 并运行以下脚本来设置 SNPE SDK 环境。必须提供 ONNX 目录的位置。
源 bin/envsetup.sh -o $ONNX_DIR
其中 $ONNX_DIR 是 ONNX 安装的路径。
- 该脚本设置以下环境变量。
SNPE_ROOT:SNPE SDK安装根目录
ONNX_HOME:提供的TensorFlow安装根目录
- 该脚本还更新 PATH、LD_LIBRARY_PATH 和 PYTHONPATH。
3.1.8 TFLite 的环境设置
- 将 SNPE SDK 与 TFLite 模型一起使用需要有效的 TFLite 安装(请参阅TFLite 设置。)
- 转到 $SNPE_ROOT 并运行以下脚本来设置 SNPE SDK 环境。
源 bin/envsetup.sh
- 该脚本设置以下环境变量。
SNPE_ROOT:SNPE SDK安装根目录
- 该脚本还更新 PATH、LD_LIBRARY_PATH 和 PYTHONPATH。
3.1.9 PyTorch 的环境设置
- 将 SNPE SDK 与 PyTorch 模型一起使用需要有效的 PyTorch 安装(请参阅PyTorch 设置。)
- 转到 $SNPE_ROOT 并运行以下脚本来设置 SNPE SDK 环境。
源 bin/envsetup.sh
- 该脚本设置以下环境变量。
SNPE_ROOT:SNPE SDK安装根目录
- 该脚本还更新 PATH、LD_LIBRARY_PATH 和 PYTHONPATH。
3.2 Caffe 和 Caffe2 设置
3.2.1 获取 Caffe
如果 SNPE SDK 将与 Caffe 一起使用,则需要安装 Caffe。
- 要从开源 ( https://github.com/BVLC/caffe ) 克隆和构建 Caffe,请使用 git commit SHA 18b09e807a6e146750d84e89a961ba8e678830b4,因为此 SHA 已使用 SNPE SDK 进行了测试。其他 SHA 也可能有效,但尚未经过测试。
cd <path_to_caffe>
git reset --hard 18b09e807a6e146750d84e89a961ba8e678830b4
- 在 ubuntu 16.04 上构建 Caffe 的说明可在此处获得:http 😕/caffe.berkeleyvision.org/install_apt.html
- 此处提供编译和安装 Caffe 所需的命令列表: http: //caffe.berkeleyvision.org/installation.html#compilation。下面提供了必要步骤的摘要。
cp Makefile.config.example Makefile.config
make all
make test
make runtest
make distribute
make pycaffe <---- 这是重要的一步,因为
snpe-caffe-to-dlc 转换脚本
依赖于 Caffe python 绑定
- 现在继续SNPE 设置的 其余部分
3.2.2 获取 Caffe2
Caffe2 是一个快速发展的项目。您可以从 Ubuntu 的预构建二进制文件安装 Caffe2 或从源代码构建。
此链接 ( Caffe2 ) 提供了有关设置 Caffe2 的最新说明。
3.3 TensorFlow 设置
如果 SNPE SDK 将与 TensorFlow 一起使用,则需要安装 TensorFlow。
3.3.1 获取 TensorFlow
-
TensorFlow 设置说明位于https://www.tensorflow.org/install。按照说明在 Ubuntu Linux 上安装 TensorFlow。
SNPE SDK 已通过 TensorFlow v1.6 和 Tensorflow v2.3 测试 -
注意:snpe-tensorflow-to-dlc 已更新,支持转换 Tensorflow 2.3 模型。虽然某些 TF 1.x 模型可能会使用 Tensorflow 2.3 作为转换框架成功转换,但通常建议使用与训练模型相同的 TF 版本进行转换。一些较旧的 1.x 模型可能根本无法使用 TF 2.3 进行转换,并且可能需要 TF 1.x 实例才能成功转换。
-
继续SNPE 设置 的其余部分
3.4 TFLite 设置
如果 SNPE SDK 将与 TFlite 模型一起使用,则需要安装 TFLite。
获取 TFlite
- SNPE SDK 已通过 TFLite v2.3.0 测试
- 请使用https://pypi.org/project/tflite/2.3.0/ 将 TFLite 安装为独立的 Python 模块,并使用以下测试代码确保 TFLite 在您的 PYTHONPATH 中:
$ python -c “导入 tflite”
- 继续SNPE 设置 的其余部分
3.5 PyTorch 设置
如果 SNPE SDK 将与 PyTorch 模型一起使用,则需要安装 PyTorch。
获取 PyTorch
- SNPE SDK 已通过 PyTorch v1.8.1 测试
- 请使用https://pytorch.org/get-started/locally 将 PyTorch 安装为独立的 Python 模块,并使用以下测试代码确保 PyTorch 在您的 PYTHONPATH 中:
$ python -c "导入手电筒"
- 继续SNPE 设置 的其余部分
3.6 ONNX 设置
为了将 SNPE SDK 与 ONNX 一起使用,系统上必须安装 ONNX。
按照https://github.com/onnx/onnx#installation上的说明在 Ubuntu Linux 上安装 ONNX,然后继续SNPE 设置的其余部分。
下面提到了内部测试的 Onnx 及其依赖项的版本。
- onnx v1.3.0
- onnx v1.6.0
- numpy v1.16.5
- protobuf v3.6.0