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

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

目录

① 激活snpe环境

② 设置环境变量

③ 模型转换

④ run on Android


首先,默认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 on Android

设置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模型使用CPU Runtime

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/bincd /data/local/tmp/inception_v3snpe-net-run --container inception_v3_quantized.dlc --input_list target_raw_list.txtexit

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

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

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

python3 scripts/show_inceptionv3_classifications_snpe.py -i data/target_raw_list.txt \-o output_android/ \-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/447816.html

相关文章:

  • C++map与set
  • 随手记:前端一些定位bug的方法
  • 【深度学习】03-神经网络2-1损失函数
  • Python爬虫APP程序:构建智能化数据抓取工具
  • 第五部分:2---中断与信号
  • 梧桐数据库(WuTongDB):SQL Server Query Optimizer 简介
  • Scrapy框架介绍
  • Facebook对现代社交互动的影响
  • Java项目运维有哪些内容?
  • 【学习笔记】MIPI
  • QMake 脚本知识点记录
  • Kubernetes配置管理(kubernetes)
  • macOS与Ubuntu虚拟机使用SSH文件互传
  • defineExpose 显式导出子组件方法
  • vue 解决列表界面进入明细返回查询条件不变
  • 华为NAT ALG技术的实现
  • 【移植】轻量系统STM32F407芯片移植案例
  • k8s 修炼手册
  • 重回1899元,小米这新机太猛了
  • jmeter本身常用性能优化方法
  • Vue3中el-table组件实现分页,多选以及回显
  • 柯桥韩语学校|韩语每日一词打卡:회갑연[회가변]【名词】花甲宴
  • python概述
  • 使用celery+Redis+flask-mail发送邮箱验证码
  • 【第十四章:Sentosa_DSML社区版-机器学习之时间序列】
  • Vue3.X + SpringBoot小程序 | AI大模型项目 | 饮食陪伴官
  • 【C++】检测TCP链接超时——时间轮组件设计
  • 中国新媒体联盟与中运律师事务所 建立战略合作伙伴关系
  • 【ArcGIS微课1000例】0121:面状数据共享边的修改方法
  • 图论(dfs系列) 9/27