SNPE安装+Qualcomm高通AI神经网络处理SDK部署流程

Qualcomm高通AI神经网络处理SDK部署流程

系统要求

我们建议在专用机器上执行以下操作,以更好地了解 SDK 依赖关系:

  1. 安装 Ubuntu 18.04 (推荐),例如在虚拟机上。

  2. 安装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. 版本下载到本地,并解压文件。

    • SNPE SDK 文件结构
      SNPE安装+Qualcomm高通AI神经网络处理SDK部署流程_第1张图片

    • 配置环境和依赖

      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-'自己的版本号'
       
    
  3. 安装最新的Android Studio。

  4. 从 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

      显示如下,表明安装成功:

      img

    • 安装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
    

    显示如下,表明权限修改成功:
    SNPE安装+Qualcomm高通AI神经网络处理SDK部署流程_第2张图片
    配置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

    打开Android Studio:

    SNPE安装+Qualcomm高通AI神经网络处理SDK部署流程_第3张图片

    source activate py36  #这个环境是之前snpe sdk环境配置装了所有依赖的包的python环境,版本为3.6,请自行百度如何用anaconda创建虚拟环境;
    sudo studio.sh  #一定要给root权限否则后面运行sdk会有问题
    

    点击Start a new Android Studio project:
    SNPE安装+Qualcomm高通AI神经网络处理SDK部署流程_第4张图片

    点击Open SDK Manager,手动配置SDK:
    SNPE安装+Qualcomm高通AI神经网络处理SDK部署流程_第5张图片

    点击Edit:
    SNPE安装+Qualcomm高通AI神经网络处理SDK部署流程_第6张图片

    按ctrl+Alt+T打开一个新的terminal,输入

    sudo mkdir -p /opt/sdk
    sudo chmod -R 777 /opt/sdk
    

    在Android Studio的SDK Setup中,设置Android SDK Location为/opt/sdk:
    SNPE安装+Qualcomm高通AI神经网络处理SDK部署流程_第7张图片

    一路next,直到finish。

    至此,Android Studio安装完毕。(以上参考了64位Ubuntu 16.04下安装Android Studio)

    以下创建首个项目。

    配置如下:
    SNPE安装+Qualcomm高通AI神经网络处理SDK部署流程_第8张图片SNPE安装+Qualcomm高通AI神经网络处理SDK部署流程_第9张图片SNPE安装+Qualcomm高通AI神经网络处理SDK部署流程_第10张图片
    一路Apply->OK->Accept->Finish。

    点击Start a new Android Studio project:
    SNPE安装+Qualcomm高通AI神经网络处理SDK部署流程_第11张图片

SNPE安装+Qualcomm高通AI神经网络处理SDK部署流程_第12张图片

  1. 从 Android Studio SDK Manager 或独立安装最新的 Android NDK。

  2. 安装Caffe(安装说明,此 SDK 推荐使用 git 修订版 d8f79537)。(如果不跑官方demo不考虑装)

  3. # 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

  4. 可选:安装TensorFlow(安装说明,推荐1.0版)。(如果不跑官方demo不考虑装)

  5. # 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

  6. 这里tensorflow和caffe的安装均会出现bug暂时不能解决,推荐安装onnx环境进行自己模型的dlc转换,群里面已经有dlc模型故部署onnx环境可以略过;

设置 SDK

此步骤允许 Qualcomm 神经处理 SDK 通过 python API 与 Caffe 和 Tensorflow 框架通信。要在 Ubuntu 18.04 上设置 SDK,请执行以下操作:

  1. 在继续之前,请确保您已经安装了 Android NDK、Caffe(这里假设在*~/caffe 中*)和可选的 TensorFlow(这里假设在*~/tensorflow 中*)。

  2. 下载最新的高通神经处理 SDK。

  3. 将 .zip 文件解压到合适的位置(这里假设在 ~/snpe-sdk 文件夹中)。

  4. 安装缺少的系统包:

  5. # 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

  6. 在当前控制台初始化高通神经处理SDK环境;将来,对每个新控制台重复此操作:

  7. # 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、 SNPEROOTPATH、 L D L I B R A R Y P A T H 、 LD_LIBRARY_PATH、 LDLIBRARYPATHPYTHONPATH、 C A F F E H O M E 、 CAFFE_HOME、 CAFFEHOMETENSORFLOW_HOME,此外还会在本地复制 Android NDK  libgnustl_shared.so库,并更新 Android AAR 存档。

下载 ML 模型并将它们转换为 .DLC

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

Android APP 结合了Snapdragon NPE 运行时(由*/android/snpe-release.aar* Android 库提供)和上述Caffe Alexnet 示例生成的DLC 模型。

  1. 通过复制运行时和模型来准备 APP

  2. 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

  3. 使用android-studio打开示例项目:

    从 Android Studio 构建 Android APK:

    1. 启动 Android Studio。
    2. 在*~/snpe-sdk/examples/android/image-classifiers*文件夹中打开项目。
    3. 接受 Android Studio 建议以升级构建系统组件(如果提供)。
    4. 按“运行应用程序”按钮构建并运行 APK。

下一步是什么?

恭喜,您刚刚使用 Qualcomm 神经处理 SDK 制作了第一个应用程序。是时候开始创建自己的 AI 解决方案了!

SNPE安装+Qualcomm高通AI神经网络处理SDK部署流程_第13张图片

示例Android APP的源代码演示了如何正确使用SDK。ClassifyImageTask.java是开始学习的良好起点。API 文档、教程和架构详细信息可在 SDK 捆绑的文档中找到。将浏览器指向 /doc/html/index.html开始学习。常见问题的答案可以在论坛中找到,您还可以在论坛中与我们的专家讨论“API”。

你可能感兴趣的:(深度学习,竞赛,机器学习,java,linux,深度学习,python,tensorflow)