嵌入式 CPU 平台部署

简介: 现今的物联网技术正经历着日新月异的发展,物联智能的概念已经深入人心,人们的工作、学习和娱乐都离不开与物联智能设备的交互,而物联设备的基础是嵌入式技术。

     针对无法使用Tensor RT编译加速的嵌入式CPU平台,本文使用NCNN 框架对模型进行算法部署。NCNN为腾讯公司开源(https://github.com/Tencent/ncnn)的一个深度学习推理框架。由于其使用 C++语言开发,并且不依赖任何第三方库,因此可以很方便的进行跨平台的深度学习算法开发部署。同时其针对嵌入式设备做了专门的计算优化,除了上文介绍的GEMM、Winograd加速算法外,NCNN 还集成了 NEON指令集加速、多线程优化等极其细致有效的优化算法,为边缘 CPU 计算设备提供了有效的性能提升。

V~(M6M(%A}`{`SV$T[B{2{4.png

     Qcom865 嵌入式 CPU 端算法部署流程图如上图所示。整体部署流程与嵌入式GPU 大体相同。区别是从中转模型格式ONNX 转换完毕开始。完整的手机端 应用模型加载部署的具体流程如下:

(1)在转换到 ONNX 前的操作与嵌入式 GPU 方法相同,因此可以直接使用部署嵌入式 GPU模型时获得的ONNX模型文件进行NCNN 格式的转换。

(2)转换为NCNN文件后,由于需要部署至安卓设备,安卓设备运行应用是在Java虚拟机中进行的,对应的应用需要使用Java构建。由于NCNN是使用 C++语言编写的推理加速库,因此需要使用 Java的native接口JNI(Java Native Interface,JNI)对C++编译库进行调用。需要使用 CMake 将 模型的数据前处理以及后处理程序、Android端NCNN 的库文件进行打包,编译为库文件供 JNI 调用。

(3)构建 Android 应用界面,本文在安卓端部署需要用到的组件有一个选取图像用的 Button以及一个发送模型推理信号的Button,同时需要一个显示场景语义分割结果的 Image View,最后需要2 个显示推理时间与帧率的 Text View。

(4)编写各组件逻辑,通过图像选取Button将待分割的图像读入网络通过 JNI 传入编写的模型推理库,进行图像预处理后送入模型网络推理,计算推理开始与结束的时间差,利用Exactor提取输出结果,经过后处理后转换为 Android的Bitmap类后在Image View上对分割结果进行显示,在两个 Text View 上对推理时间以及帧率进行显示。

(5)将所有部分编译打包为APK 程序包,在搭载了Qcom865 的安卓手机上进行推理测试。

P`2MT[SWFQ[LR0EVSTD0)Z1.png

相关文章
|
人工智能 并行计算 openCL
魔搭+Xinference 平台:CPU,GPU,Mac-M1多端大模型部署
随着 Llama2 的开源,以及通义千问、百川、智谱等国内大模型的问世,很多用户有了本地部署去尝试大模型的需求,然而硬件的需求阻碍了很多人的尝试,并不是所有人都拥有一块英伟达显卡的,所以 Llama2 问世不久,大神 Andrej Karpathy 的一个 weekend project 爆火——llama2.c。
魔搭+Xinference 平台:CPU,GPU,Mac-M1多端大模型部署
|
Oracle 关系型数据库 Linux
解决在linux服务器上部署定时自动查找cpu,内存,磁盘使用量,并将查询结果写入数据库的脚本,只能手动运行实现插库操作
问题描述:将脚本名命名为mortior.sh(以下简称mo),手动执行脚本后查询数据库,表中有相应的信息,放入自动执行队列中,脚本被执行,但是查询数据库,并没有新增数据。
86 0
|
5月前
|
XML Ubuntu Linux
部署08---扩展-Win10配置WSL(Ubuntu)环境,WSL系统是什么意思,是Windows系统上的一个子系统, xml的一大特点是直链系统,直接链接你的CPU,硬盘和内存,如何用 WSL部署
部署08---扩展-Win10配置WSL(Ubuntu)环境,WSL系统是什么意思,是Windows系统上的一个子系统, xml的一大特点是直链系统,直接链接你的CPU,硬盘和内存,如何用 WSL部署
|
3月前
|
算法 测试技术 AI芯片
CPU反超NPU,llama.cpp生成速度翻5倍!LLM端侧部署新范式T-MAC开源
【9月更文挑战第7天】微软研究院提出了一种名为T-MAC的创新方法,旨在解决大型语言模型在资源受限的边缘设备上高效部署的问题。T-MAC通过查表法在CPU上实现低比特LLM的高效推理,支持混合精度矩阵乘法,无需解量化。其通过位级查表实现统一且可扩展的解决方案,优化数据布局和重用率,显著提升了单线程和多线程下的mpGEMV及mpGEMM性能,并在端到端推理吞吐量和能效方面表现出色。然而,表量化和快速聚合技术可能引入近似和数值误差,影响模型准确性。论文详见:[链接](https://www.arxiv.org/pdf/2407.00088)。
193 10
|
4月前
|
SQL 存储 缓存
什么?部署ClickHouse的服务器CPU利用率100%了?
什么?部署ClickHouse的服务器CPU利用率100%了?
|
4月前
|
人工智能 云计算 数据中心
云计算演进问题之阿里云自研CPU倚天710的部署如何解决
云计算演进问题之阿里云自研CPU倚天710的部署如何解决
|
4月前
|
人工智能 PyTorch 算法框架/工具
AI计算机视觉笔记二:基于YOLOV5的CPU版本部署openvino
本文档详细记录了YOLOv5模型在CPU环境下的部署流程及性能优化方法。首先,通过设置Python虚拟环境并安装PyTorch等依赖库,在CPU环境下成功运行YOLOv5模型的示例程序。随后,介绍了如何将PyTorch模型转换为ONNX格式,并进一步利用OpenVINO工具包进行优化,最终实现模型在CPU上的高效运行。通过OpenVINO的加速,即使是在没有GPU支持的情况下,模型的推理速度也从约20帧每秒提高到了50多帧每秒,显著提升了性能。此文档对希望在资源受限设备上部署高性能计算机视觉模型的研究人员和工程师具有较高的参考价值。
|
6月前
|
监控 Serverless 应用服务中间件
Serverless 应用引擎操作报错合集之使用自定义镜像部署GPU服务时,报错 "CPU is required but not provided",是什么导致的
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
5月前
|
Linux 调度
部署02-我们一般接触的是Mos和Wimdows这两款操作系统,很少接触到Linux,操作系统的概述,硬件是由计算机系统中由电子和机械,光电元件所组成的,CPU,内存,硬盘,软件是用户与计算机接口之间
部署02-我们一般接触的是Mos和Wimdows这两款操作系统,很少接触到Linux,操作系统的概述,硬件是由计算机系统中由电子和机械,光电元件所组成的,CPU,内存,硬盘,软件是用户与计算机接口之间
|
7月前
|
存储 人工智能 搜索推荐
社区供稿 | YuanChat全面升级:知识库、网络检索、适配CPU,手把手个人主机部署使用教程
在当下大语言模型飞速发展的背景下,以大模型为核心的AI助手成为了广大企业和个人用户最急切需求的AI产品。然而在复杂的现实办公场景下,简单的对话功能并不能满足用户的全部办公需求,为此我们发布了最新版的YuanChat应用