1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 移动端机器学习框架SNPE的使用

移动端机器学习框架SNPE的使用

时间:2019-03-12 06:00:00

相关推荐

移动端机器学习框架SNPE的使用

NPE SDK能够帮助开发者做什么事情?

Qualcomm骁龙神经处理引擎(Neural Processing Engine, NPE)SDK 能够帮助有意创建人工智能(AI)解决方案的开发者,在骁龙移动平台上(无论是CPU、GPU还是DSP)运行通过Caffe/Caffe2或TensorFlow训练一个或多个神经网络模型,且无需连接到云端,实现边缘计算。

NPE SDK能帮助开发者在骁龙设备上运行受过训练的神经网络并优化其性能。NPE SDK提供了模型转换和执行工具,以及针对核的API,利用功率和性能配置文件匹配所需的用户体验,优化和节约开发者的时间和精力。

NPE SDK支持卷积神经网络、长短期记忆网络(LSTM)和定制层,处理在骁龙移动平台上运行神经网络所需的大量繁重工作,为开发人员留出更多的时间和资源来专注于AI的创新应用体验。

SDK主要特性有哪些?

支持Android和Linux运行环境,供执行神经网络模型支持利用Qualcomm Hexagon DSP、Qualcomm Adreno GPU和 Qualcomm Kryo、CPU(NPE SDK支持Qualcomm Snapdragon 820、835、625、626、650、652、653、660、630、636和450)设备必须有libOpenCL.so,以支持Qualcomm Adreno GPU),为应用提供加速支持Caffe、Caffe2和TensorFlow模型提供控制运行时加载、执行和调度的多个API用于模型转换的桌面工具用于识别性能瓶颈的性能基准测试示例代码和教程HTML文档

NPE SDK适合哪些开发者?

使用骁龙NPE SDK开发AI需要满足以下几个前提,然后才可以开始创建解决方案。

你在一个或多个垂直领域需要运行卷积/LSTM模型,包括移动、汽车、IoT、AI、AR、无人机和机器人等你了解如何设计和训练模型,或者已经有一个预训练的模型文件你选择的框架是Caffe/Caffe2或TensorFlow你可以使用Android编写Java应用,或者基于Android或Linux系统编写原生应用你有Ubuntu 14.04开发环境你有可用于测试应用程序的设备

NPE SDK使用开发流程

为了让AI开发者更轻松,骁龙NPE SDK没有另行定义网络层库;发布时就支持Caffe/Caffe2和TensorFlow,开发人员可以选择使用自己熟悉的框架设计和训练网络。开发工作流程如下:

完成模型的设计和训练后,模型文件需要转换成“.dlc”(Deep Learning Container)文件,供骁龙 NPE运行时使用。转换工具将输出转换信息,包括有关不受支持或非加速层的信息,开发者可以使用这些信息调整初始模型的设计。

搭建NPE SDK工作环境

系统环境搭建

建议在专门机器上执行以下操作,以便更好地了解SDK依赖项:

安装Ubuntu 14.04(官网推荐使用) 如果使用虚拟机安装,可以使用VirtualBox工具。虚拟机磁盘空间需要分配大些,建议分配30G,后续Android Studio需要比较大的磁盘空间。

安装最新版Android Studio,地址:https://developer./studio/index.html 通过Android Studio或独立安装最新版Android SDK。

安装最新版Android NDK 通过Android Studio SDK Manager或独立安装。

安装Caffe,GitHub:/BVLC/caffe 安装说明:/installation.html

# 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 /BVLC/caffe.git ~/caffecd ~/caffegit reset --hard d8f79537mkdir buildcd buildcmake ..make all -j4make install

安装TensorFlow(推荐版本1.0,GitHub:/tensorflow/tensorflow)(可选)

安装说明:/install/

# 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 ~/tensorflowvirtualenv -- system-site-packages ~/tensorflowsource ~/tensorflow/bin/activatepip install --upgrade /tensorflow/linux/cpu/tensorflow-1.0.0-cp27-none- linux_x86_64.whl

安装NPE SDK

本步骤允许NPE SDK通过python API与Caffe和TensorFlow框架进行通信。在Ubuntu 14.04上安装SDK,请执行以下操作:

下载最新的骁龙NPE SDK。

地址:/software/snapdragon-neural-processing-engine

将.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 zip# verifies that all dependencies are installedsource ~/snpe- sdk/bin/dependencies.sh # verifies that the python dependencies are installedsource ~/snpe- sdk/bin/check_python_depends.sh

在当前控制台窗口初始化Snapdragon NPE SDK环境。以后,每个新控制台需重复此操作:

# initialize the environment on the current consolecd ~/snpe-sdk/# default location for Android Studio, replace with yoursexport ANDROID_NDK_ROOT=~/Android/Sdk/ndk-bundle source ./bin/envsetup.sh -c ~/caffe# optional for this guidesource ./bin/envsetup.sh -t ~/tensorflow

初始化过程将设置或更新 $SNPE_ROOT,?$PATH, $LD_LIBRARY_PATH, $PYTHONPATH, $CAFFE_HOME, $TENSORFLOW_HOME,此外,还在本地复制 Android NDK libgnustl_shared.so 库,更新 Android AAR 存档文件。

下载ML Models并转换为.DLC

NPE SDK没有绑定公开的模型文件,但包含一些脚本,可用于下载一些主流模型,并将其转换为Deep Learning Container(DLC)格式。脚本位于/models文件夹中,文件夹中还包含DLC模型。

下载并转换经预先训练的Alexnet示例(Caffe格式):

cd $SNPE_ROOTpython ./models/alexnet/scripts/setup_alexnet.py -a ./temp-assets-cache -d

提示:查看执行DLC转换的setup_alexnet.py脚本。您可能需要针对Caffe模型转换执行相同的操作。

可选:下载并转换经预先训练的“inception_v3”示例(TensorFlow格式):

cd $SNPE_ROOTpython ./models/inception_v3/scripts/setup_inceptionv3.py -a ./temp-assets-cache - d

提示:查看setup_inceptionv3.py脚本,此脚本还对模型进行了量化,大小缩减了75%(91MB→23MB)。

构建示例Android APP

示例Android App的源代码演示了如何正确使用SDK。可以从ClassifyImageTask.java开始。示例Android App结合了Snapdragon NPE运行环境(/android/snpe-release.aar Android库提供)和上述Caffe Alexnet示例生成的DLC模型。

复制运行环境和模型,为构建App作好准备

cd $SNPE_ROOT/examples/android/image-classifiers# copies the NPE runtime librarycp ../../../android/snpe- release.aar ./app/libs # packages the Alexnet example (DLC, labels, imputs) as an Android resource filebash ./setup_models.sh

可选方法一:从Android studio构建Android APK:

启动Android Studio。打开~/snpe-sdk/examples/android/image- classifiers文件夹中的项目。如有的话,接受Android Studio建议,升级 构建系统组件。按下“运行应用”按钮,构建并运行APK。

可选方法二:从命令行构建Android APK:

# Android SDK build dependencies on ubuntusudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386 # build the APK./gradlew assembleDebug

上述命令需要将ANDROID_HOME和JAVA_HOME 设置为系统中的Android SDK和JRE/JDK所在位置。

执行到这里完成后,示例App已经build完成,安装后如下所示:

使用Snapdragon NPE SDK制作了第一款示例应用。那么现在,可以开始创建属于自己的AI解决方案了! SDK 随附文档中还有 API 文档、教程和架构详细资料。可以在浏览器中打开/doc/html/index.html开始学习。

总结

NPE SDK 目前做的还不是非常完美,有些需要定制化的神经网络层可能在原生NPE中没有提供。但还好SDK提供了用户定义层(UDL)功能,通过回调函数可以自定义算子,并通过重编译C++代码将自定义文件编译到可执行文件中。如果开发就是使用的C++,那比较容易实现用户定义层,但如果是运行在Android上,开发者需要将上层Java代码通过JNI方式来调用NPE原生的C++编译好的.so文件,因为用户定义层的代码是不可能预先编译到NPE原生.so文件中的,必须重新开发NPE的JNI。

转至http://voyagelab.github.io//12/27/mobile_ML_framework_SNPE/

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。