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

news2024/9/24 9:04:04

目录

① 激活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-android

export 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/lib

adb push $SNPE_ROOT/lib/$SNPE_TARGET_DSPARCH/unsigned/*.so \

/data/local/tmp/snpeexample/dsp/lib

adb 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 shell

export SNPE_TARGET_ARCH=aarch64-android

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/local/tmp/snpeexample/$SNPE_TARGET_ARCH/lib

export PATH=$PATH:/data/local/tmp/snpeexample/$SNPE_TARGET_ARCH/bin

cd /data/local/tmp/inception_v3

snpe-net-run --container inception_v3_quantized.dlc --input_list target_raw_list.txt

exit

在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.coloradmin.cn/o/2159964.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何只用 CSS 制作网格?

来源:how-to-make-a-grid-like-graph-paper-grid-with-just-css 在看 用于打印到纸张的 CSS 这篇文章时,对其中的网格比较好奇,作者提供了 stackoverflow 的链接,就看到了来源的这个问题和众多回复。本文从里面挑选了一些个人比较…

面试知识点总结篇一

一、C语言和C有什么区别 C语言是面向过程,强调用函数将问题分解为多个子任务,按顺序逐步进行。数据和操作分开C则是面向对象,面向对象是一种基于对象和类的编程范式,关注如何利用对象来抽象和模拟现实世界的实体。因此引入了类&a…

计算机毕业设计 校园新闻管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

77、Python之函数式编程:一文搞懂functools模块的核心应用

引言 Python作为一种支持多范式的编程语言,除了在“一切皆对象”的理念支持下的,函数对象也是一等公民、各种高阶函数的自然实现、lambda表达式快速编写纯函数之外。还有一个内置的模块functools,能够更好地支持我们在Python中应用函数式编程…

[笔记]某视觉三维定位系统参数表

表中的参数是彼此关联的,其实是就是视频解算的速度。里面的1秒直接对应1FPS300m秒直接对应3FPS0-20m的识别范围,与摄像头分辨率、视在焦距与摄像头基线有明确的对应关系。它的矩阵非正方。怀疑一组用于远距,一组用于近距,属于固定…

从入门到精通:Spring Boot 100个技术关键词

Spring Boot 是一个基于Spring框架的快速开发框架,旨在简化Spring应用的初始搭建以及开发过程。通过掌握本指南中的100个关键技术关键词,你将逐步了解Spring Boot的核心概念、自动配置、依赖管理、Web开发、数据库操作、安全性、测试等方面的知识。每个关…

基于真实山地场景下的超多目标优化算法求解无人机三维路径规划,MATLAB代码

超多目标优化算法是一类专门用于解决存在三个以上目标函数的最优化问题的算法。这类问题在现实世界中非常常见,例如在工程设计、资源管理、机器学习等领域。由于目标之间的冲突性,很难找到一个单一的解来同时优化所有目标,因此超多目标优化算…

音视频入门基础:FLV专题(4)——使用flvAnalyser工具分析FLV文件

一、引言 有很多工具可以分析FLV格式,这里推荐flvAnalyser。其支持: 1.FLV 文件分析(Tag 列表、时间戳、码率、音视频同步等),HEVC(12)/AV1(13) or Enhanced RTMP v1 with fourCC(hvc1/av01); 2.RTMP/HTT…

全栈开发(二):springBoot3连接mysql数据库

spring.application.namedemo2 spring.datasource.urljdbc:mysql://localhost:3306/数据库名字?useUnicodetrue&characterEncodingUTF-8&serverTimezoneUTC spring.datasource.username账号 spring.datasource.password密码 spring.datasource.driver-class-namecom.m…

CentOS一键安装Mosquitto开源消息代理结合内网穿透实现远程连接

文章目录 前言1. Linux 搭建 Mosquitto2. Linux 安装Cpolar3. 创建MQTT服务公网连接地址4. 客户端远程连接MQTT服务5. 代码调用MQTT服务6. 固定连接TCP公网地址7. 固定地址连接测试 前言 今天和大家分享一下如何在Linux系统中搭建Mosquitto MQTT协议消息服务端,并结合Cpolar内…

IDEA 关闭自动补全功能(最新版本)

文章目录 一、前言二、关闭自动补全三、最终效果 一、前言 在最新的 IDEA 中发布了自动补全功能,当你输入代码时,IDEA 会自动显示你可能想输入的代码,减少手动输入的工作量,它会根据上下文提供正确的选项,提高代码的准…

计算机毕业设计 基于Python内蒙古旅游景点数据分析系统 Django+Vue 前后端分离 附源码 讲解 文档

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

Vue3教程 - 2 开发环境搭建

更好的阅读体验:点这里 ( www.foooor.com ) 2 开发环境搭建 要进行 Vue 开发,需要安装 Node.js,因为构建 Vue 项目的工具,例如 Webpack、Vite等,这些工具依赖于Node.js环境来运行。 Node.js…

谷歌网站收录查询,怎么查看网站在谷歌的收录情况

在进行谷歌网站收录查询时,我们需采取一种既专业又系统的方法,以确保能够准确评估网站在谷歌搜索引擎中的可见性和收录状态。这一过程不仅关乎技术细节,还涉及到对搜索引擎优化(SEO)策略的理解与应用。以下是一个基于专…

视频无损压缩工具+预览视频生成工具

视频无损压缩工具 功能与作用 :视频无损压缩工具是一种能够减少视频文件大小,但同时保持视频质量的工具。它通过先进的编码技术和算法,有效降低视频文件的存储空间,同时保证视频的清晰度和观感。这对于需要分享或存储大量视频内容…

仓颉编程语言4,遇到BUG求助

本来准备整仓颉链接Mysql数据库。参考:GitCode - 全球开发者的开源社区,开源代码托管平台 这种方式是拿mysql官方的dll,编译一下,然后再封装成仓颉数据库驱动。这种方式不够逼格,所以准备解析mysql网络协议,从0开始写…

c++9月23日

1.My_string 头文件 #ifndef MY_STRINGHEAD_H #define MY_STRINGHEAD_H#include <iostream> #include <cstring> using namespace std;class My_string { private:char *ptr;//指向字符数组的指针int size;//字符数组的最大容量int len ;//当前字符串的长度 publ…

SaaS 软件转型计划

目录 一、转型目标 1、背景与趋势分析 2、转型策略与实施路径 3、预期成果与展望 二、现状分析 1、产品评估&#xff1a;从传统到SaaS的华丽转身 2、客户群体洞察&#xff1a;倾听需求&#xff0c;引领变革 3、销售渠道优化&#xff1a;拓宽路径&#xff0c;触达更多客…

python request库的使用

安装和使用 requests库支持python3.8&#xff0c;注意版本 pip install requests 在项目中引用时如下&#xff1a; import requests访问网站 request访问网站一般用get和post两种方式 get requests库提供了get方法&#xff0c;可以用get方式访问网站&#xff0c;相当于在浏览…

如何检测并阻止机器人活动

恶意机器人流量逐年增加&#xff0c;占 2023 年所有互联网流量的近三分之一。恶意机器人会访问敏感数据、实施欺诈、窃取专有信息并降低网站性能。新技术使欺诈者能够更快地发动攻击并造成更大的破坏。机器人的无差别和大规模攻击对所有行业各种规模的企业都构成风险。 但您的…