当前位置: 首页 > news >正文

06-OpenCV + ONNX Runtime 嵌入式通用推理方案

OpenCV + ONNX Runtime 嵌入式通用推理方案

为什么需要通用推理方案

前面几篇我们一直在聊 RKNN,RKNN 确实好,但有个现实问题:不是所有嵌入式平台都有专用 NPU

你在瑞芯微 RK3588 上跑 RKNN 风生水起,换成全志 H616、树莓派 4B、甚至工控机上的 Intel N5105,RKNN 就歇菜了。更别提客户突然甩过来一块"没听过名字"的板子说"这个也能跑吧"。

这时候就需要一个通用推理方案:不管什么芯片、什么系统,只要能装上 Python,就能跑模型推理。ONNX Runtime 就是干这事的。

ONNX Runtime 是什么

ONNX(Open Neural Network Exchange)是微软和 Facebook 搞的一个开放模型格式,你可以把它理解成"模型界的普通话"——不管你用 PyTorch、TensorFlow 还是 PaddlePaddle 训练的模型,导出成.onnx文件后,大家都能读。

ONNX Runtime 就是用来加载和运行.onnx模型的推理引擎。它的核心优势:

  • 跨平台:Linux、Windows、macOS、Android 都能跑
  • 跨硬件:支持 CPU、GPU(CUDA)、各种加速器
  • 部署简单pip install onnxruntime一行搞定
  • 性能不错:CPU 端有算子级优化,比裸跑 PyTorch 快不少

Python 中使用 ONNX Runtime 推理

下面这段代码是在嵌入式 Linux 上实际用过的,以 YOLOv8 目标检测模型为例。

安装依赖

pipinstallonnxruntime opencv-python numpy

加载模型并推理

importcv2importnumpyasnpimportonnxruntimeasortclassYOLOv8ONNxDetector:def__init__(self,model_path,conf_thres=0.25,iou_thres=0.45):# 创建推理会话# providers参数指定推理后端,CPU用CPUExecutionProviderself.session=ort.InferenceSession(model_path,providers=['CPUExecutionProvider'])# 获取模型输入输出信息self.input_name=self.session.get_inputs()[0].name input_shape=self.session.get_inputs()[0].shape self.input_size=input_shape[2]# 输入尺寸,如640self.conf_thres=conf_thres self.iou_thres=iou_thresdefpreprocess(self,img):"""图像预处理:resize + 归一化 + 通道转换"""# 记录原始尺寸,后面还原坐标要用self.orig_h,self.orig_w=img.shape[:2]# letterbox方式resize,保持宽高比# 直接resize会导致图像拉伸变形,letterbox用灰色填充r=min(self.input_size/self.orig_h,self.input_size/self.orig_w)new_h,new_w=int(self.orig_h*r),int(self.orig_w*r)resized=cv2.resize(img,(</
http://www.cnnetsun.cn/news/3937404.html

相关文章:

  • AI Agent工程化实战:构建健壮智能体循环的架构设计与核心技巧
  • 吴忠网站建设公司如何选择?本地团队深度解析与避坑指南,助力中小企业数字化突围
  • Unity原生C#热更方案HybridCLR:原理、接入与性能实战
  • 微电网两阶段鲁棒调度:原理与实践
  • 钣金设计中的二维到三维转换原理与实践
  • 金球奖评选逻辑解析:个人英雄主义与集体荣誉的博弈
  • 告别网络依赖:用fanqienovel-downloader打造你的永久小说图书馆
  • AI自动化文章转视频:从原理到工程实践的技术实现方案
  • UE5与Cesium构建数字孪生地形:从DEM到实时三维场景实战
  • Urho3D移动端开发实战:从环境搭建到性能优化的完整指南
  • Unity新手入门:从零搭建2D游戏开发环境与编辑器核心指南
  • 怎样高效使用FFXIV TexTools:专业人士的快速建模与贴图修改攻略
  • 电商搜索优化实战:提升流量与转化的核心策略
  • 移动应用主页刷新机制优化与性能提升实践
  • 同步电机与构网型变流器的频率稳定性仿真研究
  • 风光储直流微电网VSG控制Simulink仿真实践
  • C#动态编程与DLR核心技术解析及应用实践
  • AI项目部署实战:从环境搭建到功能验证的完整技术评估框架
  • 小尺寸二维码打印优化:Canvas与LODOP方案对比
  • 呼和浩特网站建设哪家最便宜-揭秘隐形消费与性价比真相的避坑指南
  • Unity AI智能体客户端架构实战:从分层设计到深度集成
  • 六轴EtherCAT总线伺服涂布收卷机核心技术解析
  • 国产时序数据库技术演进与应用实践
  • Gemini Agents如何革新测试工程师的工作方式
  • Unity性能优化利器:SimpleLOD插件自动化网格简化与LOD生成全解析
  • AI编程革命:从键盘输入到自然语言驱动的开发范式演进
  • WarcraftHelper完整指南:3步让魔兽争霸3重获新生
  • CCswitch与Claude Code本地配置全攻略:解决环境问题,打造稳定AI编程助手
  • 专注杭州网站建设公司 4000262263 一站式数字化转型服务指南 助力中小企业突破流量瓶颈
  • C++模板进阶:从基础语法到元编程实战指南