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 “(pyenvinit−)"eval"(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 文件结构

    • 配置环境和依赖

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

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

    打开Android Studio:

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

    点击Start a new Android Studio project:

    点击Open SDK Manager,手动配置SDK:

    点击Edit:

    按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)

    以下创建首个项目。

    配置如下:

    一路Apply->OK->Accept->Finish。

    点击Start a new Android Studio project:

  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

初始化将设置或更新 SNPEROOT、SNPE_ROOT、SNPER​OOT、PATH、LDLIBRARYPATH、LD_LIBRARY_PATH、LDL​IBRARYP​ATH、PYTHONPATH、CAFFEHOME、CAFFE_HOME、CAFFEH​OME、TENSORFLOW_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 解决方案了!

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

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

  1. 【Qualcomm高通音频】外部Codec调试流程_ES7243E

    一. 调试大纲 调试正式开始之前,想办法获取以下信息:硬件设计原理图/Codec参考驱动代码/FAE联系方式. 1. 从硬件设计原理图,我们要获取到Codec芯片和CPU通过什么接口连接,包括数据传输 ...

  2. 最新 android wifi芯片,世界首款WiFi6与蓝牙5.1 SOC:Qualcomm 高通 发布 QCA6390 网络芯片...

    世界首款WiFi6与蓝牙5.1 SOC:Qualcomm 高通 发布 QCA6390 网络芯片 2019-02-27 15:56:21 55点赞 99收藏 86评论 直达链接 除了近日MWC 2019 ...

  3. Qualcomm 高通芯片组与Android音频系统缺陷测评分析

    转自:http://www.soomal.com/doc/10100002164.htm Qualcomm高通公司是目前Android智能手机上最为知名的ARM架构的处理器和芯片方案硬件提供商,高通公 ...

  4. 高通平台msm8917蓝牙mac地址流程

    高通平台msm8917蓝牙mac地址流程 Where is the BD address? BD address can be saved in following places: modem NV ...

  5. 最高10万奖励!不限选题!高通AI应用创新大赛应用赛道详解

    由高通技术公司.高通创投主办,极视角.小米.中科创达.CSDN共同协办,TensorFlow Lite作为开源技术合作伙伴的"2021高通人工智能应用创新大赛"已于3月24日正式开 ...

  6. 高通驱动9008安装_高通snapdragon888的性能有多强大

    按照年底发布的传统,高通公司于2020年12月1日晚上正式发布了新一代旗舰5G手机平台小龙888.关于这一命名,高通公司总裁安孟说:" 8'代表Snapdragon系列的顶级平台,代表了旗舰 ...

  7. 高通 AI、5G 争夺战!

    在 5G 商用落地的这一年,关于它的争夺战显得尤其地玄妙. 作者 | 唐小引写于暴雨延误的深圳机场 封图 | CSDN 付费下载自东方IC 出品 | CSDN(ID:CSDNnews) 1985 年, ...

  8. 【Qualcomm高通音频】当内部Codec和外部Codec上都有麦克风输入,如何做到灵活切换内部外部Codec上的麦克风进行录音呢?

    最近遇到一个项目,既用到高通PMU芯片内置的Codec接了麦克风,也通过外部I2S总线外接了两个麦克风. 详细沟通后,了解到,在普通录音的使用场景中,客户要求可以通过安卓原生api任意切换内部Code ...

  9. 【Qualcomm高通音频】如何抓去各种音频日志?

    1.logcat Log     adb logcat -b main -b system -v threadtime > /data/logcat.txt 2.kernel Log     / ...

最新文章

  1. 单轴步进驱动模块SH-20403
  2. Python中的itertools.product
  3. 自动化测试基础之Python常见问题
  4. 问题之sqlyou的使用
  5. java虚拟机参数优化_JAVA虚拟机JVM参数优化(2):垃圾收集算法选择
  6. 数木桩的c语言编程,Vijos P1007 绕钉子的长绳子 C语言版
  7. php文字下划线,css如何设置字体下划线
  8. 人工智能目标检测模型(四)——ResNet
  9. maven(6)------maven坐标分析
  10. Django的Model上都有些什么
  11. HWIDGen 激活出错 解决:输入错误: 没有文件扩展“.vbs”的脚本引擎
  12. el-select如何自定义下拉选项框的宽度
  13. 判断四个点是否可以构成矩形(优雅的解法!!!)
  14. Android FileProvider详细解析和踩坑指南
  15. 【ACCV2022】论文阅读笔记Lightweight Alpha Matting Network Using Distillation-Based Channel Pruning
  16. c#构造函数 例子学习
  17. Java并发编程-Exchange
  18. java 实现图片截取功能
  19. 利用css做三线表格,如何快速制作三线表格式数据
  20. python中import as的浅显理解

热门文章

  1. Oracle定时调用存储过程
  2. Mysql for Linux安装配置之——二进制安装
  3. VMware中安装Centos 7
  4. 中文数字转换为阿拉伯数字
  5. JFace中TableViewer的使用
  6. 由浅至深 谈谈.NET混淆原理(三)-- 流程混淆
  7. 掌握SpringAOP
  8. 接口工具使用对比(apipost、jmeter、postman、swagger等)
  9. 软件测试—软件测试基础知识—(五)软件测试模型
  10. ajax 用户验证js,js ajax验证用户名