当前位置: 首页 > news >正文

【Qualcomm】高通SNPE框架的使用 | 原始模型转换为量化的DLC文件 | 在Android的DSP端运行模型

目录

① 激活snpe环境

② 设置环境变量

③ 模型转换

④ run


首先,默认SNPE工具已经下载并且Setup相关工作均已完成。同时,拥有原始模型文件,本文使用的模型文件为SNPE 框架示例的inception_v3_2016_08_28_frozen.pb文件。image_file_list.txt文件的内容为raw图片数据的路径。 target_raw_list.txt文件的内容是raw图片数据Android设备的实际路径

激活snpe环境

conda activate snpe

② 设置环境变量

source ${SNPE_ROOT}/bin/envsetup.sh

这将设置/更新以下环境变量:

  1. SNPE_ROOT
  2. PYTHONPATH
  3. PATH
  4. LD_LIBRARY_PATH

模型转换

# snpe-tensorflow-to-dlc工具将TensorFlow模型转换为等效的Qualcomm® Neural Processing SDK DLC文件。
# 下面的命令将一个Inception v3 TensorFlow模型转换为Qualcomm®Neural Processing SDK DLC文件。
snpe-tensorflow-to-dlc --input_network $SNPE_ROOT/examples/Models/InceptionV3/tensorflow/inception_v3_2016_08_28_frozen.pb \--input_dim input "1,299,299,3" --out_node "InceptionV3/Predictions/Reshape_1" \--output_path inception_v3.dlc

量化需要另一个步骤。snpe-dlc-quantize工具用于将模型量化为支持的定点格式之一。

# 例如,下面的命令将把一个Inception v3 DLC文件转换成一个量化的Inception v3 DLC文件。snpe-dlc-quantize --input_dlc inception_v3.dlc --input_list image_file_list.txt--output_dlc inception_v3_quantized.dlc

④ run

Run on Android Platform

设置SNPE_TARGET_ARCH

export SNPE_TARGET_ARCH=aarch64-android

PUSH库和二进制文件

将Qualcomm®Neural Processing SDK库和snpe-net-run可执行文件推送到Android目标上的/data/local/tmp/snpeexample。“SNPE_TARGET_DSPARCH”设置为目标Android设备的DSP架构

export SNPE_TARGET_ARCH=aarch64-androidexport SNPE_TARGET_DSPARCH=hexagon-v73
adb shell "mkdir -p /data/local/tmp/snpeexample/$SNPE_TARGET_ARCH/bin"adb shell "mkdir -p /data/local/tmp/snpeexample/$SNPE_TARGET_ARCH/lib"adb shell "mkdir -p /data/local/tmp/snpeexample/dsp/lib"
adb push $SNPE_ROOT/lib/$SNPE_TARGET_ARCH/*.so \/data/local/tmp/snpeexample/$SNPE_TARGET_ARCH/libadb push $SNPE_ROOT/lib/$SNPE_TARGET_DSPARCH/unsigned/*.so \/data/local/tmp/snpeexample/dsp/libadb push $SNPE_ROOT/bin/$SNPE_TARGET_ARCH/snpe-net-run \/data/local/tmp/snpeexample/$SNPE_TARGET_ARCH/bin

PUSH模型相关数据Android

cd $SNPE_ROOT/examples/Models/InceptionV3
mkdir data/rawfiles && cp data/cropped/*.raw data/rawfiles/
adb shell "mkdir -p /data/local/tmp/inception_v3"
adb push data/rawfiles /data/local/tmp/inception_v3/cropped
adb push data/target_raw_list.txt /data/local/tmp/inception_v3
adb push dlc/inception_v3_quantized.dlc /data/local/tmp/inception_v3
rm -rf data/rawfiles

RUN模型使用DSP Runtime

需要--use_dsp选项

注意,额外的环境变量ADSP_LIBRARY_PATH必须设置为使用DSP。

adb shellexport SNPE_TARGET_ARCH=aarch64-androidexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/local/tmp/snpeexample/$SNPE_TARGET_ARCH/libexport PATH=$PATH:/data/local/tmp/snpeexample/$SNPE_TARGET_ARCH/binexport ADSP_LIBRARY_PATH="/data/local/tmp/snpeexample/dsp/lib;/system/lib/rfsa/adsp;/system/vendor/lib/rfsa/adsp;/dsp"cd /data/local/tmp/inception_v3snpe-net-run --container inception_v3_quantized.dlc --input_list target_raw_list.txt --use_dspexit

在run完模型后将结果pull到本地host。

adb pull /data/local/tmp/inception_v3/output output_android_dsp

运行以下python脚本检查分类结果:

python3 scripts/show_inceptionv3_classifications_snpe.py -i data/target_raw_list.txt \-o output_android_dsp/ \-l data/imagenet_slim_labels.txt

输出应该如下所示,显示所有图像的分类结果。

Classification results
cropped/notice_sign.raw 0.175781 459 brass
cropped/plastic_cup.raw 0.976562 648 measuring cup
cropped/chairs.raw      0.285156 832 studio couch
cropped/trash_bin.raw   0.773438 413 ashcan

至此,本文分享的内容就结束啦。


 

http://www.lryc.cn/news/445410.html

相关文章:

  • 爬虫的流程
  • Git之如何删除Untracked文件(六十八)
  • k8s集群自动化管理
  • yum库 docker的小白安装教程(附部分问题及其解决方案)
  • python如何实现日期加减
  • springboot实战学习笔记(4)(Spring Validation参数校验框架、全局异常处理器)
  • 网络七层协议
  • 从 Oracle 集群到单节点环境(详细记录一次数据迁移过程)之一:生产环境与目标服务器详情
  • 【软件测试】详解测试中常用的几种测试方法
  • 开始学习深度学习-前言
  • Liveweb视频汇聚平台支持GB28181转RTMP、HLS、RTSP、FLV格式播放方案
  • 详解c++:new和delete
  • 【深度学习】(5)--搭建卷积神经网络
  • 边学英语边学 Java|Synchronization in java
  • k8s StorageClass 存储类
  • 3D Slicer医学图像全自动AI分割组合拳-MONAIAuto3DSeg扩展
  • 分布式光伏的发电监控
  • 微信小程序----日期时间选择器(自定义时间精确到分秒)
  • 3D生成技术再创新高:VAST发布Tripo 2.0,提升AI 3D生成新高度
  • ONNX Runtime学习之InferenceSession模块
  • 【TS】TypeScript内置条件类型-ReturnType
  • 【c语言数据结构】超详细!模拟实现双向链表(初始化、销毁、头删、尾删、头插、尾插、指定位置插入与删除、查找数据、判断链表是否为空)
  • 第十四届蓝桥杯嵌入式国赛
  • (k8s)kubernetes集群基于Containerd部署
  • python内置模块pathlib.Path类操作目录和文件
  • react开发环境搭建
  • python 逻辑语句简记
  • 8.进销存系统(基于springboot的进销存系统)
  • 深入理解主键回显:提升数据操作效率与准确性
  • springboot+阿里云物联网教程