QNN:基于QNN+example重构之后的yolov8det部署

embedded/2024/9/18 12:16:42/ 标签: YOLO, QNN, QCOM, 深度学习, 人工智能

QNN是高通发布的神经网络推理引擎,是SNPE的升级版,其主要功能是:

完成从Pytorch/TensorFlow/Keras/Onnx等神经网络框架到高通计算平台的模型转换;
完成模型的低比特量化(int8),使其能够运行在高通神经网络芯片上;
提供测试工具(qnn-net-run),可以运行网络并保存输出;
提供测试工具(qnn-profile-viewer),可以进行FLOPS、参数量、每一层运行时间等分析;

Qualcomm® AI Engine Direct 架构采用模块化设计,可实现软件中的清晰分离 对于不同的硬件核心/加速器,例如 CPU、GPU 和 DSP,指定为 后端。了解有关 Qualcomm® 的更多信息AI Engine Direct后端此处。

针对不同硬件核心/加速器的 Qualcomm® AI Engine Direct 后端被编译为 与 SDK 一起打包的各个特定于核心的库。

跨 IP 核的统一 API

Qualcomm® 的主要亮点之一AI Engine Direct 是它提供了统一的 API 来委托操作 例如跨所有硬件加速器后端的图形创建和执行。这允许用户 将 Qualcomm® AI Engine Direct 视为硬件抽象 API,并将应用程序轻松移植到不同的内核。

正确的抽象级别

Qualcomm® AI Engine Direct API 旨在支持高效的执行模型 具有内部处理的图形优化等功能。 但与此同时,它遗漏了更广泛的功能,例如模型解析和 网络分区到更高级别的框架。

组合的灵活性

借助 Qualcomm® AI Engine Direct,用户可以在后端提供的功能之间进行适当的权衡 以及库大小和内存利用率方面的占用空间。这提供了以下能力: 构建 Qualcomm® AI Engine Direct 操作包,仅包含服务一组模型所需的操作 以用例为目标1。有了这个,用户可以创建灵活的应用程序 内存占用低,适合各种硬件产品。

可扩展的运营支持

Qualcomm® AI Engine Direct 还为客户集成自定义操作以无缝协作提供支持 内置操作。

提高执行性能

凭借优化的网络加载和异步执行支持 Qualcomm®AI Engine Direct 可提供高度 机器学习框架和应用程序加载和执行网络图的高效接口 他们想要的硬件加速器。。

我们主要将QNN重新封装一下完成合适与自己的代码结构与逻辑。因为本身的QNN demo看着太复杂了。

重构之后如下图所示:

输出结果:


http://www.ppmy.cn/embedded/105790.html

相关文章

【日常记录-Linux】.tar.xz、.tar.bz2、tar.gz解压

Author:赵志乾 Date:2024-08-30 Declaration:All Right Reserved!!! 1. 简介 Linux平台下,常见.tar.xz、.tar.bz2、.tar.gz等类型的压缩包。 2. 解压缩说明 2.1 .tar.xz解压缩 .tar.xz压缩包表…

Vue 组件自定义插槽:实现灵活的内容分发

在 Vue.js 中,插槽(Slot)是一种特殊的语法,允许你在组件内部预留一些位置,以便在使用组件时插入自定义内容。自定义插槽为组件的复用和扩展提供了极大的灵活性。本文将介绍 Vue 组件自定义插槽的概念、用法及实际应用案…

c++开源库安装

Linux常用库安装 本项目包含: (1)开源库:libboostlibcurlhiredisjsoncpplog4cplus (2)数据库:mysqlredis (3)应用:nginxgithub地址:https://git…

JavaScript面向对象小挑战

// 编码挑战 #4 /* 重新创建挑战 #3,但这次使用 ES6 类:为 “CarCl ”类创建一个 “EVCl ”子类将 “charge ”属性设为私有; 实现对该类的 “accelerate ”和 “chargeBattery ”方法进行链式处理的功能,同时更新 “CarCl ”类…

JAVA/PHP/Python下taobao/1688/京东商品详情数据SKU返回

商家们在经营店铺的时候,会对店铺中的产品进行上传,商家们在上传产品的时候就会发现,对一些相同属性但是规格又不同的产品会觉得很烦恼,那么下面我们就来看看淘宝SKU和商品级的区别是什么吧。 一、淘宝sku和商品级的区别是什么? …

C#面试题系列--动态更新

C#面试题系列 排版排了半天,也是不好看,那就不排版了,尽量由易到难 高级一些 什么是MVC模式C#中特性是什么?如何使用?C#中什么是反射?C#中的委托是什么 事件是不是一种委托C# 不安全代码C# 隐式类型 varC# linqC# 匿名…

通信算法之230: 5G随机接入PRACH及长度计算

在介绍超远覆盖特性之前,先需了解一下终端接入网络的基本过程。在任何情况下,终端同网络建立通信,都需通过RACH(随机接入信道)向网络发送一个报文来向系统申请一条信令信道,这就是随机接入的过程。根据3GPP 5G R15标准&#xff0c…

计算机网络(八股文)

这里写目录标题 计算机网络一、网络分层模型1. TCP/IP四层架构和OSI七层架构⭐️⭐️⭐️⭐️⭐️2. 为什么网络要分层?⭐️⭐️⭐️3. 各层都有那些协议?⭐️⭐️⭐️⭐️ 二、HTTP【重要】1. http状态码?⭐️⭐️⭐️2. 从输入URL到页面展示…

网络安全服务基础Windows--第8节-DHCP部署与安全

DHCP协议理解 定义:DHCP:Dynamic Host Configuration Protocol,动态主机配置协议,是⼀个应⽤在局域⽹中的⽹络协议,它使⽤UDP协议⼯作。 67(DHCP服务器)和68(DHCP客户端&#xff0…

Linux和Unix的区别及为什么鸿蒙系统不用Unix的原因

目录 Linux是什么? Unix是什么? 他们的区别: 鸿蒙系统介绍及鸿蒙系统不用Unix的原因 Linux是什么? Linux的历史可以追溯到1991年,由芬兰的计算机科学家林纳斯托瓦兹(Linus Torvalds)为了学习操作系统的工作原理而…

最新Python安装+PyCharm安装激活和使用教程(pycharm激活)

PyCharm激活 激活码: EUWT4EE9X2-eyJsaWNlbnNlSWQiOiJFVVdUNEVFOVgyIiwibGljZW5zZWVOYW1lIjoic2lnbnVwIHNjb290ZXIiLCJhc3NpZ25lZU5hbWUiOiIiLCJhc3NpZ25lZUVtYWlsIjoiIiwibGljZW5zZVJlc3RyaWN0aW9uIjoiIiwiY2hlY2tDb25jdXJyZW50VXNlIjpmYWxzZSwicHJvZHVjdHMiOlt7…

【CVPR‘24】DeCoTR:使用 2D 和 3D 注意力增强深度补全

DeCoTR: Enhancing Depth Completion with 2D and 3D Attentions DeCoTR: Enhancing Depth Completion with 2D and 3D Attentions 中文解析摘要介绍方法方法3.1 问题设置3.2 使用高效的 2D 注意力增强基线3.3 3D中的特征交叉注意力点云归一化位置嵌入3.4 捕捉 3D 中的全局上下…

为什么说 PowerJob 是新一代分布式任务调度框架?

大家好,我是君哥。 主流的任务调度框架并不少,比如 Quartz、Spring Batch、xxl-job、PowerJob 等。PowerJob 被称为是全新一代分布式任务调度与计算框架,今天来聊一聊这个框架。 1.使用简单 PowerJob 的使用非常简单,搭建 Powe…

按摩器置入NVH-FLASH语音芯片,实现语音提示功能

按摩器已经成为了现代人生活中必不可少的工具。在压力与疲劳不断累积的现代生活中,人们更加需要一个能够随时放松身体的工具。而在按摩器领域,有一种新兴的技术正在逐渐流行。这就是按摩器置入语音芯片,实现语音提示功能。 按摩器置入九芯NVH…

vue3使用-watch监听总结

watch watch(attr, (val1, val2) > {}, {deep: true, immediate: true, flush: post, once: true, onTrack / onTrigger }) attr: 基本类型可以直接监听,引用类型需要用函数返回监听(不能直接侦听响应式对象的属性值),可以监听多个 (newVal1, oldV…

JS中【普通函数中的this】vs【箭头函数中的this】

在 JavaScript 中,this 关键字是一个非常重要的概念,它通常指向函数执行时的上下文对象。然而,箭头函数(arrow functions)中的 this 行为与普通函数不同,它的 this 是在函数定义时绑定的,并且无…

备忘录模式 详解

备忘录模式 简介: 保存一个对象的某个状态,以便在适当的时候恢复对象, 允许在不破坏封装性的前提下,捕获和恢复对象的内部状态。 场景: 很多地方都用到了备忘录模式, 比如网络消息的序列化和反序列化, 数据的本地保存与加载等, 最简单的json的dump和loa…

python os获取当前git目录的git用户

要获取当前目录下的 Git 用户配置(即用户名称和电子邮件),你可以结合操作系统命令和 git 命令来完成这一任务。以下是使用 Python 的 os 模块和 subprocess 模块来获取当前 Git 目录的用户配置的示例代码: 使用 Python 脚本&…

给已有的.so库重新封装一个新的库,并能使用新旧库中的函数

要求如题,这里给出一个简单的例子,自己亲测可用之后才记录下来。 假设有一个名为 libold.so 的现有库,它包含函数 old_function(),而我们需要在它的基础上重新封装一个新的库 libnew.so。此外,这个库除了提供旧库中的…

Opencv中的直方图(4)局部直方图均衡技术函数createCLAHE()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 创建一个指向 cv::CLAHE 类的智能指针并初始化它。 函数原型 Ptr<CLAHE> cv::createCLAHE (double clipLimit 40.0,Size tileGridSize…