【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
这将设置/更新以下环境变量:
- SNPE_ROOT
- PYTHONPATH
- PATH
- 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
至此,本文分享的内容就结束啦。
相关文章:
【Qualcomm】高通SNPE框架的使用 | 原始模型转换为量化的DLC文件 | 在Android的CPU端运行模型
目录 ① 激活snpe环境 ② 设置环境变量 ③ 模型转换 ④ run on Android 首先,默认SNPE工具已经下载并且Setup相关工作均已完成。同时,拥有原始模型文件,本文使用的模型文件为SNPE 框架示例的inception_v3_2016_08_28_frozen.pb文件。imag…...
C++map与set
文章目录 前言一、map和set基础知识二、set与map使用示例1.set去重操作2.map字典统计 总结 前言 本章主要介绍map和set的基本知识与用法。 一、map和set基础知识 map与set属于STL的一部分,他们底层都是是同红黑树来实现的。 ①set常见用途是去重 ,set不…...
随手记:前端一些定位bug的方法
有时候接到bug很烦躁,不管是任何环境的bug,看到都影响心情,随后记总结一下查看bug的思路,在摸不着头脑的时候或者焦虑的时候,可以静下心来顺着思路思考和排查bug可能产生的原因 1.接到bug,最重要的是&am…...
【深度学习】03-神经网络2-1损失函数
在神经网络中,不同任务类型(如多分类、二分类、回归)需要使用不同的损失函数来衡量模型预测和真实值之间的差异。选择合适的损失函数对于模型的性能至关重要。 这里的是API 的注意⚠️,但是在真实的公式中,目标值一定是…...
Python爬虫APP程序:构建智能化数据抓取工具
在信息爆炸的时代,数据的价值日益凸显。Python作为一种强大的编程语言,与其丰富的库一起,为爬虫程序的开发提供了得天独厚的优势。本文将探讨如何使用Python构建一个爬虫APP程序,以及其背后的思维逻辑。 什么是Python爬虫APP程序&…...
第五部分:2---中断与信号
目录 操作系统如何得知哪个外部资源就绪? 什么是中断机制? CPU引脚和中断号的关系: 中断向量表: 信号和中断的关系: 操作系统如何得知哪个外部资源就绪? 操作系统并不会主动轮询所有外设来查看哪些资源…...
梧桐数据库(WuTongDB):SQL Server Query Optimizer 简介
SQL Server Query Optimizer 是 SQL Server 数据库引擎的核心组件之一,负责生成查询执行计划,以优化 SQL 查询的执行性能。它的目标是根据查询的逻辑结构和底层数据的统计信息,选择出最优的查询执行方案。SQL Server Query Optimizer 采用基于…...
Scrapy框架介绍
一、什么是Scrapy 是一款快速而强大的web爬虫框架,基于Twusted的异步处理框架 Twisted是事件驱动的 Scrapy是由Python实现的爬虫框架 ① 架构清晰 ②可扩展性强 ③可以灵活完成需求 二、核心组件 Scrapy Engine(引擎):Scrapy框架…...
Facebook对现代社交互动的影响
自2004年成立以来,Facebook已经成为全球最大的社交媒体平台之一,改变了人们的交流方式和社交互动模式。作为一个数字平台,Facebook不仅为用户提供了分享生活点滴的空间,也深刻影响了现代社交互动的各个方面。本文将探讨Facebook如…...
Java项目运维有哪些内容?
Java项目运维的内容主要包括环境准备、部署Java应用、配置和优化、安全配置、以及数据安全保护措施,服务的运行和资源动态监控管理。 1,环境准备:这包括选择适合运行Java和Tomcat的操作系统,如Ubuntu、CentOS等Linux发行版…...
【学习笔记】MIPI
MIPI介绍 MIPI是由ARM、Nokia、ST、IT等公司成立的一个联盟,旨在把手机内部的接口如存储接口,显示接口,射频/基带接口等标准化,减少兼容性问题并简化设计。 MIPI联盟通过不同的工作组,分别定义一系列手机内部的接口标…...
QMake 脚本知识点记录
1. 简单工程配置 QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11CONFIG debug # debug/release HEADERS demo.h # 头文件 列表 SOURCES main.cpp demo.cpp # 源文件 列表 FORMS mainwin.ui # 窗体 列表…...
Kubernetes配置管理(kubernetes)
实验环境: 在所有节点上拉取镜像;然后把资源清单拉取到第一个master节点上; 同步会话,导入镜像: configmap/secret 配置文件的映射 变量: 基于valuefrom的方式 cm--》pod 特点:变量的名称可…...
macOS与Ubuntu虚拟机使用SSH文件互传
1.ubuntu配置: 安装openssh服务: sudo apt-get install openssh-server -y 查看服务启动状态: systemctl status ssh 2.macOS使用scp连接ubuntu并发送文件 查看ubuntu IP : ifconfigmacOS终端连接ubuntu : sc...
defineExpose 显式导出子组件方法
当父组件调用子组件的script setup中的方法时,必须显式导出该方法。因为 script setup 中定义的变量和方法默认是局部的,只有显式导出后,父组件才能访问这些方法。 //父组件-Parent <template><el-button type"primary" …...
vue 解决列表界面进入明细返回查询条件不变
在Vue中,如果你遇到了列表界面进入详情页面后返回查询条件不变的问题,可能是因为你没有正确地管理状态或者是使用了不合适的组件间通信方式。 解决方案通常涉及到以下几点: 使用Vuex来管理状态,确保查询条件保存在全局状态树中&…...
华为NAT ALG技术的实现
双向NAT技术:经过防火墙的2报文源IP地址和目的IP地址都同时被转换,外网发送报文给内网服务器,先转换目的IP地址,然后符合安全策略后,在替换源IP地址,然后将记录写入防火墙会话表,并发送出报文&a…...
【移植】轻量系统STM32F407芯片移植案例
往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~ 持续更新中…… 介绍基于 STM32F407IGT6 芯片在拓维信息 Niobe407 开发板上移植 Op…...
k8s 修炼手册
deployment apiVersion: apps/v1 kind: Deployment metadata:name: hello-deploy spec:replicas: 10selector:matchLabels:app: hello-world # Pod的label # 这个Label与Service的Label筛选器是匹配的revisionHistoryLimit: 5progressDeadlineSeconds: 300minReadySeconds: 10…...
重回1899元,小米这新机太猛了
如果不出意外,距离高通年度旗舰骁龙 8 Gen4 发布还剩下不到一个月时间。 对于以小米 15 为首即将到来的下半年各家旗舰机型厮杀画面,讲道理小忆早已是备好瓜子儿摆上果盘翘首以盼了。 不过在这之前,中端主流选手们表示有话要说:为…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
