我们建议在专用机器上执行以下操作,以更好地了解 SDK 依赖关系:
安装 Ubuntu 18.04 (推荐),例如在虚拟机上。
安装pyenv
执行以下命令进行自动安装
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
重启shell生效: exec $SHELL
查看~/.bashrc中是否有以下三行,若没有则手动添加进去
export PATH="$HOME/.pyenv/bin:$PATH"
eval “ ( p y e n v i n i t − ) " e v a l " (pyenv init -)" eval " (pyenvinit−)"eval"(pyenv virtualenv-init -)”
安装 python 版本查看已安装 : pyenv versions
查看可安装列表 : pyenv install --list
安装 python3.5.5 : pyenv install 3.5.5
安装 python2.7.17 : pyenv install 2.7.17
查看已安装 : pyenv versions
切换版本: pyenv global xxx (版本) —> 全局切换,会影响整个系统
pyenv local xxx (版本) ----> 局部切换,只影响当前命令行
安装Anaconda
访问网址: https://www.anaconda.com/distribution/#download-section
选择 “Linux”–> “64-Bit (x86) Installer” ,下载安装脚本: Anaconda3-2020.02-Linux-x86_64.sh (下载最新的即可,无特定版本要求)
运行脚本安装:号
$ bash Anaconda3-2020.02-Linux-x86_64.sh
当安装⻚面提示 “Do you wish the installer to initialize Anaconda3 by running conda init?” 时,推荐选 “yes” 。
当安装⻚面显示 “Thank you for installing Anaconda3!” 时,说明安装成功。
重新打开终端或者执行下面的命令,使安装立即生效:
source ~/.bashrc
SNPE SDK Setup
3.1 下载 SDK
访问 Qualcomm 网站:(注册、登录 Qualcomm 账号)
https://developer.qualcomm.com/software/qualcomm-neural-processing-sdk
在 ‘Neural Processing SDK for AI -> Tools & Resources’ ⻚面,
选择 Qualcomm Neural Processing SDK for AI v1.52. 版本下载到本地,并解压文件。
配置环境和依赖
1.运行依赖项脚本以检查系统中的Ubuntu软件包依赖项。 它会要求安装缺少的那些。 安装缺少的软件包。
source snpe-X.Y.Z/bin/dependencies.sh
2.运行python依赖项检查器以检查系统中python软件包的依赖项,安装缺少的软件包。
source snpe-X.Y.Z/bin/check_python_depends.sh
经SNPE SDK测试的Python软件包版本为:
numpy v1.16.5
sphinx v2.2.1
scipy v1.3.1
matplotlib v3.0.3
skimage v0.15.0
protobuf v3.6.0
pyyaml v5.1
3.Define $SNPE_ROOT in .bashrc file.
export SNPE_ROOT=/home/user/SNPE-envri/snpe-'自己的版本号'
安装最新的Android Studio。
从 Android Studio 或独立安装最新的 Android SDK。(这一步坑比较多)
自行下载最新版android-studio 4.2.2 以及java8的sdk: Java SE Development Kit: jdk-8u221-linux-x64.tar.gz 提取码:17xx
安装JDK
解压JDK:
sudo tar -zxvf jdk-8u221-linux-x64.tar.gz -C /opt
配置环境变量:
sudo gedit /etc/profile
文末添加
#jdk path
export JAVA_HOME=/opt/jdk1.8.0_221
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=.:${JAVA_HOME}/bin:$PATH
同步:
source /etc/profile
测试jdk是否安装成功:
java -version
显示如下,表明安装成功:
安装Android Studio
解压压缩包到/opt:
sudo unzip android-studio-ide-‘你自己的版本号’-linux.zip -d /opt
更改 /opt/android-studio/bin/idea.porperties:
sudo gedit /opt/android-studio/bin/idea.properties
文末添加
disable.android.first.run=true
此操作防止第一次打开Android Studio时卡在”Fetching Android SDK component information” 。
更改/opt/android-studio/bin目录权限:
sudo chmod 777 /opt/android-studio/bin
ls -l
显示如下,表明权限修改成功:
配置android studio环境变量,以便在任何目录下打开android studio:
sudo gedit /etc/profile
文末添加
#android stdio
export ANDROID_HOME=/opt/android-studio/bin
export PATH=$PATH:$ANDROID_HOME
同步:
source /etc/profile
打开Android Studio:
source activate py36 #这个环境是之前snpe sdk环境配置装了所有依赖的包的python环境,版本为3.6,请自行百度如何用anaconda创建虚拟环境;
sudo studio.sh #一定要给root权限否则后面运行sdk会有问题
点击Start a new Android Studio project:
按ctrl+Alt+T打开一个新的terminal,输入
sudo mkdir -p /opt/sdk
sudo chmod -R 777 /opt/sdk
在Android Studio的SDK Setup中,设置Android SDK Location为/opt/sdk:
一路next,直到finish。
至此,Android Studio安装完毕。(以上参考了64位Ubuntu 16.04下安装Android Studio)
以下创建首个项目。
从 Android Studio SDK Manager 或独立安装最新的 Android NDK。
安装Caffe(安装说明,此 SDK 推荐使用 git 修订版 d8f79537)。(如果不跑官方demo不考虑装)
# this will build Caffe (and the pycaffe bindings) from source - see the official instructions for more informationsudo apt-get install cmake git libatlas-base-dev libboost-all-dev libgflags-dev libgoogle-glog-dev libhdf5-serial-dev libleveldb-dev liblmdb-dev libopencv-dev libprotobuf-dev libsnappy-dev protobuf-compiler python-dev python-numpygit clone https://github.com/BVLC/caffe.git ~/caffe; cd ~/caffe; git reset --hard d8f79537mkdir build; cd build; cmake ..; make all -j4; make install
可选:安装TensorFlow(安装说明,推荐1.0版)。(如果不跑官方demo不考虑装)
# this will download and install TensorFlow in a virtual environment - see the official instructions for more informationsudo apt-get install python-pip python-dev python-virtualenvmkdir ~/tensorflow; virtualenv --system-site-packages ~/tensorflow; source ~/tensorflow/bin/activatepip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0-cp27-none-linux_x86_64.whl
这里tensorflow和caffe的安装均会出现bug暂时不能解决,推荐安装onnx环境进行自己模型的dlc转换,群里面已经有dlc模型故部署onnx环境可以略过;
此步骤允许 Qualcomm 神经处理 SDK 通过 python API 与 Caffe 和 Tensorflow 框架通信。要在 Ubuntu 18.04 上设置 SDK,请执行以下操作:
在继续之前,请确保您已经安装了 Android NDK、Caffe(这里假设在*~/caffe 中*)和可选的 TensorFlow(这里假设在*~/tensorflow 中*)。
下载最新的高通神经处理 SDK。
将 .zip 文件解压到合适的位置(这里假设在 ~/snpe-sdk 文件夹中)。
安装缺少的系统包:
# install a few more SDK dependencies, then perform a comprehensive checksudo apt-get install python-dev python-matplotlib python-numpy python-protobuf python-scipy python-skimage python-sphinx wget zipsource ~/snpe-sdk/bin/dependencies.sh # verifies that all dependencies are installedsource ~/snpe-sdk/bin/check_python_depends.sh # verifies that the python dependencies are installed
在当前控制台初始化高通神经处理SDK环境;将来,对每个新控制台重复此操作:
# initialize the environment on the current consolecd ~/snpe-sdk/export ANDROID_NDK_ROOT=~/Android/Sdk/ndk-bundle # default location for Android Studio, replace with yourssource ./bin/envsetup.sh -c ~/caffesource ./bin/envsetup.sh -t ~/tensorflow # optional for this guide
初始化将设置或更新 S N P E R O O T 、 SNPE_ROOT、 SNPEROOT、PATH、 L D L I B R A R Y P A T H 、 LD_LIBRARY_PATH、 LDLIBRARYPATH、PYTHONPATH、 C A F F E H O M E 、 CAFFE_HOME、 CAFFEHOME、TENSORFLOW_HOME,此外还会在本地复制 Android NDK libgnustl_shared.so库,并更新 Android AAR 存档。
Qualcomm 神经处理 SDK 不捆绑公开可用的模型文件,但包含用于下载一些流行模型并将其转换为深度学习容器(“DLC”)格式的脚本。脚本位于*/models*文件夹中,该文件夹也将包含 DLC 模型。
下载并转换 Caffe 格式的预训练 Alexnet 示例:(如果不跑官方demo跳过)
cd $SNPE_ROOTpython ./models/alexnet/scripts/setup_alexnet.py -a ./temp-assets-cache -d
**提示:**查看 setup_alexnet.py 脚本,它执行到 DLC 的转换。您可能会对 Caffe 模型转换执行相同的操作。
可选:以 Tensorflow 格式下载并转换预训练的“inception_v3”示例:(如果不跑官方demo跳过)
cd $SNPE_ROOTpython ./models/inception_v3/scripts/setup_inceptionv3.py -a ./temp-assets-cache -d
**提示:**查看 setup_inceptionv3.py 脚本,它也对模型执行量化,大小减少了 75%(91MB → 23MB)。
这里仍旧是上述两种模型转换存在bug(bug yellow)这一步我们直接使用没有执行最后一步量化的dlc模型,model.dlc,同时需要准备的文件还有初赛测试代码文件夹中的file_list.txt重命名为raw_list.text放入./models/alexnet/model/data中;还需要初赛使用的类别字典class.txt重命名为ilsvrc_2012_labels.txt放入./models/alexnet/model/data中,最后一个是目前尚未解决的图片预处理文件的编写ilsvrc_2012_mean_cropped.bin这个暂时考虑的方法在./models/alexnet/data/下使用$sudo touch ilsvrc_2012_mean_cropped.bin 创建一个空的预处理文件,什么都不写暂时,花点时间高清楚./models/alexnet/scripts中的setup_alexnet.py;或者直接将预处理后的图片放入…/…/…/…/models/alexnet/data/cropped/。
Android APP 结合了Snapdragon NPE 运行时(由*/android/snpe-release.aar* Android 库提供)和上述Caffe Alexnet 示例生成的DLC 模型。
通过复制运行时和模型来准备 APP
cd $SNPE_ROOT/examples/android/image-classifierscp ../../../android/snpe-release.aar ./app/libs # copies the NPE runtime librarybash ./setup_models.sh # packages the Alexnet example (DLC, labels, imputs) as an Android resource file
使用android-studio打开示例项目:
从 Android Studio 构建 Android APK:
恭喜,您刚刚使用 Qualcomm 神经处理 SDK 制作了第一个应用程序。是时候开始创建自己的 AI 解决方案了!
示例Android APP的源代码演示了如何正确使用SDK。ClassifyImageTask.java是开始学习的良好起点。API 文档、教程和架构详细信息可在 SDK 捆绑的文档中找到。将浏览器指向 /doc/html/index.html开始学习。常见问题的答案可以在论坛中找到,您还可以在论坛中与我们的专家讨论“API”。