探索QCS6490目标检测AI应用开发(三):模型推理
作为《探索QCS6490目标检测AI应用开发》文章,紧接上一期,我们介绍如何在应用程序中介绍如何使用解码后的视频帧结合Yolov8n模型推理。 高通 Qualcomm® AI Engine Direct 是一套能够针对高通AI应用加速的软件SDK,更多的内容可以访问:Qualcomm Documentation
AI Engine Direct也称QNN,在本期文章的第一期中我们介绍了如何使用AI Engine Direct的工具链去转换ONNX模型,我们接下来讲介绍如何在应用中去推理转换好的Yolov8n模型
1.前置条件
1.1 环境搭建
确报你已经完成了以下准备工作
- 按照《探索QCS6490目标检测AI应用开发(一):Yolov8n模型转换及量化》中的指导,完成了Yolov8n模型的量化,得到序列化后的模型文件yolov8n_quant.bin
- 准备一块QCS6490开发板
- AI Engine Direct开发包已安装部署到QCS6490开发板
1.2 下载AI Engine Direct Helper
AI Engine Direct提供了丰富的API接口,可以非常接近硬件底层高效利用资源。为了简化模型推理过程,我们推荐使用AI Engine Direct Helper,它是在AI Engine Direct基础上封装的一个助手类,能够以极少的代码实现模型的推理。
下载 AI Engine Direct Helper
GitHub - quic/ai-engine-direct-helper
在QCS6490开发板上进行相应的编译工作,以生成可用的库文件。
2. 模型推理
在集成模型推理之前,请确保已经阅读并遵循了AI Engine Direct Helper User Guide中的环境设置指南。这包括设置必要的库文件路径、安装Python及其扩展等。
利用AI Engine Direct Helper ,只需要几行代码就可以完成模型的推理
https://github.com/quic/ai-engine-direct-helper/blob/main/Docs/User_Guide.md
#include "LibQNNHelper.hpp"int main() {// 初始化日志级别SetLogLevel(2);// 创建LibQNNHelper实例LibQNNHelper libQNNHelper;// 定义输入输出缓冲区std::vector<uint8_t*> inputBuffers;std::vector<uint8_t*> outputBuffers;std::vector<size_t> outputSize;// 模型初始化std::string model_name = "yolov8n";std::string model_path = "/path/to/yolov8n_quant.bin";std::string backend_lib_path = "/path/to/libQnnHtp.so";std::string system_lib_path = "/path/to/libQnnSystem.so";if (!libQNNHelper.ModelInitialize(model_name, model_path, backend_lib_path, system_lib_path)) {QNN_ERR("ModelInitialize failed\n");return -1;}// 填充输入缓冲区// ... 此处应填充解码后的视频帧数据到inputBuffers ...// 执行模型推理if (!libQNNHelper.ModelInference(model_name, inputBuffers, outputBuffers, outputSize)) {QNN_ERR("ModelInference failed\n");// 清理资源libQNNHelper.ModelDestroy(model_name);return -1;}// 使用outputBuffers中的数据进行后处理,如绘制检测框等// 释放输出缓冲区内存for (int j = 0; j < outputBuffers.size(); j++) {free(outputBuffers[j]);}outputBuffers.clear();outputSize.clear();// 销毁模型并释放资源libQNNHelper.ModelDestroy(model_name);return 0;
}
作者:Ricky Li
相关文章:
探索QCS6490目标检测AI应用开发(三):模型推理
作为《探索QCS6490目标检测AI应用开发》文章,紧接上一期,我们介绍如何在应用程序中介绍如何使用解码后的视频帧结合Yolov8n模型推理。 高通 Qualcomm AI Engine Direct 是一套能够针对高通AI应用加速的软件SDK,更多的内容可以访问:…...
C# 静态类中构造、字段和属性等的执行顺序,含有单例模式分析
C# 静态类时我们实战项目开发中用的非常多的。有些时候可能他的执行顺序并非如我们认为的那样,那就快速来看一下吧! 在C#中,静态类的构造函数是在第一次访问该类的任何成员时执行的。静态构造函数是不可继承的,并且在访问静态类的…...
c++设计模式之一创建型模式
1、创建型模式(常见的设计模式) Factory 模式(工厂模式,被实例化的子类) 在面向对象系统设计中经常可以遇到以下的两类问题: 下面是第一类问题和代码示例:我们经常会抽象出一些类的公共接口以…...
上古世纪台服注册账号+下载客户端全方位图文教程
又一款新的MMRPG游戏即将上线啦,游戏名称叫做《上古世纪》游戏采用传统MMO类型游戏的玩法,但是开发商采用了先进的游戏引擎,让玩家们可以享受到极致的视觉体验。同时游戏的背景是建立在大陆分崩离析的基础上。各个部落因为领地的原因纷纷开战…...
【Android】Android中继承Activity、Application和AppCompatActivity的区别
在 Android 开发中,Activity、Application 和 AppCompatActivity 是三个重要的类,它们各自有不同的作用和用途: 1. Activity Activity 是 Android 应用中的一个核心组件,代表了用户界面上的一个单一屏幕或交互界面。每个 Activi…...
SQLite 可以随可执行文件部署在用户机器吗
答案是:可以的。 sqlite 本身就是嵌入式的SQL数据库引擎,不需要单独的服务器进程。sqlite 直接读取和写入普通磁盘文件,sqlite 的整个数据库(所有表、索引、触发器等)都包含在单个磁盘文件中。所以 sqlite 很适合开发…...
大模型的开源不同于传统的开源软件
大模型的开源与传统的开源软件往往有一些不同之处,主要体现在以下几个方面: 数据和许可证的复杂性: 数据依赖性: 大模型通常需要大量的数据来进行训练,这些数据可能来自各种来源,包括公共数据集、专有数据集…...
基于PHP+MySql的留言管理系统的设计与实现
功能概述 网页留言板管理系统,用户层面分为普通用户和管理员,并设权限(即后台留言管理系统普通用户不能访问,别人的留言自己不可以修改删除,未登录不能使用留言功能),功能包括用户登录注册、留…...
单目标应用:基于吸血水蛭优化器(Blood-Sucking Leech Optimizer,BSLO)的微电网优化(MATLAB代码)
一、微电网模型介绍 微电网多目标优化调度模型简介_vmgpqv-CSDN博客 参考文献: [1]李兴莘,张靖,何宇,等.基于改进粒子群算法的微电网多目标优化调度[J].电力科学与工程, 2021, 37(3):7 二、吸血水蛭优化器求解微电网 2.1算法简介 吸血水蛭优化器(B…...
嵌入式工程师从0开始,到底该学什么,怎么学
在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」, 点个关注在评论区回复“666”之后私信回复“666”,全部无偿共享给大家!!!嵌入式是个大筐࿰…...
Redis-集群-环境搭建
文章目录 1、清空主从复制和哨兵模式留下的一些文件1.1、删除以rdb后缀名的文件1.2、删除主从复制的配置文件1.3、删除哨兵模式的配置文件 2、appendonly修改回no3、开启daemonize yes4、protect-mode no5、注释掉bind6、制作六个实例的配置文件6.1、制作配置文件redis6379.con…...
ITSG、COST-G、Tongji和WHU Level-2数据产品读取绘图(Matlab)
数据介绍: ICGEM International Center for Global Gravity Field Models (gfz-potsdam.de) ITSG 2018:Institute of Geodesy at Graz University of Technolog(格拉茨理工大学大地测量研究所) 2018版本,最高60阶球谐…...
linux(ubuntucentos)-安装libreoffice
因为需要在linux支持word文档和pdf之间的转换,调研验证后选择了libreoffice,在不同的服务器进行了安装,记录如下。 说明: 此处下载版本是7.6.7,如果网址不存在,可以访问http://mirrors.ustc.edu.cn/tdf/l…...
上海市计算机学会竞赛平台2023年9月月赛丙组点对之和(一)
题目描述 给定两个数列 𝑎1,𝑎2,…,𝑎𝑛a1,a2,…,an 与 𝑏1,𝑏2,…,𝑏𝑛b1,b2,…,bn,保证这些数字是 11 到 𝑛n 之间的整数,请计算 …...
maven-jar-plugin在springboot中打包成普通引用的jar
如果您想要创建一个不包含Spring Boot特定结构的普通jar包(例如,一个可以被其他项目作为依赖引用的库),您需要在pom.xml中添加maven-jar-plugin的配置。这里是一个示例配置,它将创建一个带有lib分类器的jar包ÿ…...
小型海外仓布局策略:高效利用有限空间,标准化3F流程
合理高效的仓库空间设计,不只是对大型海外仓很关键。对空间有限的小型海外仓来说或许价值更大。 本身仓储空间就有限,如果还没有科学规划,造成空间浪费,那将直接影响到核心业务的运转。 今天我们就给大家整理了对小型海外仓布局…...
【高考志愿】电气工程
目录 一、专业概述 二、专业特点 三、就业前景 四、选择学校 高考志愿选择电气工程是一个极具智慧和远见的决定,因为电气工程在当今社会中扮演着至关重要的角色。以下是对电气工程专业更为详细的解析: 一、专业概述 电气工程及其自动化专业…...
贪吃蛇项目:GameRun与GameEnd部分:游戏的主体运行与善后部分
准备工作:打印得分信息 在进行GameStart之前,我们需要在地图的右侧打印帮助信息,以及目前玩家的得分情况和一个食物在当前速度下的得分情况(加速的状态下按比例增加食物的分数,减速的状态下则相反)…...
mysql索引、事务以及存储引擎
目录 一、索引 1)索引定义 2)工作方式 3)创建索引的依据 4)索引类型 1、index普通索引 2、unique唯一索引 3、主键索引 4、多列组合索引 5、全文索引 5)删除索引 6)查看索引 7)索…...
idea添加文档注释
一、easy javadoc插件 在settings的plugins中下载easy javadoc插件。 安装完成后重启idea,再次打开settings界面。会出现easyDoc相关配置。 二、设置模版以及使用 类描述模版参考设置: /** * 类描述 -> * * Author: ywz * Date: $Date$ */ 方法描述…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...
android RelativeLayout布局
<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...
深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向
在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...
API网关Kong的鉴权与限流:高并发场景下的核心实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...
Linux安全加固:从攻防视角构建系统免疫
Linux安全加固:从攻防视角构建系统免疫 构建坚不可摧的数字堡垒 引言:攻防对抗的新纪元 在日益复杂的网络威胁环境中,Linux系统安全已从被动防御转向主动免疫。2023年全球网络安全报告显示,高级持续性威胁(APT)攻击同比增长65%,平均入侵停留时间缩短至48小时。本章将从…...
