当前位置: 首页 > 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

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


 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 如何设置一个拉风的PowerShell命令永久别名?
  • 黑龙江合规性与网络安全等级保护!确保信息系统安全的法律基础
  • 【react案例】实现评论列表
  • 108.游戏安全项目:信息显示二-剑侠情缘基址分析
  • 委托和事件
  • Qt 之自定义控件(开关按钮)
  • Django Web开发基础介绍
  • Milvus - 架构设计详解
  • java 解析excel (本地资源)
  • LeetCode 2535.数组元素和与数字和的绝对差:模拟
  • Halcon基础系列1-基础算子
  • 【C++算法】2.双指针_复写零
  • 深入理解 CompletableFuture 的底层原理
  • 计算机视觉硬件整理(四):相机与镜头参数介绍
  • 【Kubernetes】常见面试题汇总(三十四)
  • Android 架构优化~MVP 架构改造
  • Angular 响应式表单 基础例子
  • angular学习第一篇-----环境搭建
  • Java到底能干嘛?
  • 工程优化暨babel升级小记
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 跨域
  • 前端技术周刊 2019-02-11 Serverless
  • 手写双向链表LinkedList的几个常用功能
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • !$boo在php中什么意思,php前戏
  • # 安徽锐锋科技IDMS系统简介
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #APPINVENTOR学习记录
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #if和#ifdef区别
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • ****Linux下Mysql的安装和配置
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET C# 使用GDAL读取FileGDB要素类
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .NET 快速重构概要1
  • .net 提取注释生成API文档 帮助文档
  • .NET/C#⾯试题汇总系列:⾯向对象
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .NET轻量级ORM组件Dapper葵花宝典
  • @ModelAttribute 注解
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节
  • [ C++ ] STL---仿函数与priority_queue
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析
  • [1]从概念到实践:电商智能助手在AI Agent技术驱动下的落地实战案例深度剖析(AI Agent技术打造个性化、智能化的用户助手)
  • [20160902]rm -rf的惨案.txt
  • [AI 大模型] 百度 文心一言
  • [BZOJ3211]:花神游历各国(小清新线段树)
  • [C++] 从零实现一个ping服务