1.[推理部署]🔥🔥🔥 全网最详细 ONNXRuntime C++/Java/Python 资料!
2.[推理部署]🍅🍅超准确人脸检测(带关键点)YOLO5Face C++工程详细记录
3.ONNX一本通:综述&使用&源码分析(持续更新)
[推理部署]🔥🔥🔥 全网最详细 ONNXRuntime C++/Java/Python 资料!
全网最详尽ONNXRuntime C++/Java/Python资料概览
近期,我计划整理一系列关于TNN、MNN、NCNN和ONNXRuntime的物流调岗协议网站源码笔记,用以记录实践中的经验和学习成果,方便日后快速解决问题(目前已有超过个C++推理示例,形成了可复用的库)。本文档详尽收录了ONNXRuntime的相关资源,包括官方文档、C++、Java和Python接口,以及我在使用中的实用技巧。1. 官方文档和API参考
2. C++ API深度解析与案例
3. Java接口使用指南
4. Docker镜像安装与配置
5. 源代码编译与理解
6. 与ONNX Opset兼容性探讨
7. 与其他转换工具兼容性
8. Ort::Value获取值方法:At()、裸指针与引用
9. 源码实战案例:目标检测、人脸识别等
. 动态维度推理与高级应用
. 学习ONNXRuntime源码
. 推荐阅读与持续更新
这份内容将持续更新,欢迎关注并收藏,以便获取最新的模型案例和功能介绍。Markdown版本可在我的仓库获取:[仓库链接][推理部署]🍅🍅超准确人脸检测(带关键点)YOLO5Face C++工程详细记录
YOLO5Face是深圳神目科技&LinkSprite Technologies开源的高精度人脸检测器,基于YOLOv5,gostring源码针对人脸检测进行了优化,具有优秀的性能和速度。它在骨干网络上进行了改造,增加了预测5个关键点的回归头,并使用Wing loss作为损失函数。YOLO5Face的mAP和速度性能在论文中与当前SOTA算法进行了详细对比,包括SCRFD(CVPR )和RetinaFace(CVPR )等。文章介绍了YOLO5Face的C++实现,包括源码下载链接和使用方法。在MacOS下,硅谷源码可以直接编译运行项目,而其他系统用户需要从开源仓库下载源码并编译。文章还提供了模型文件的下载链接,包括ONNX、MNN、TNN和NCNN版本。接口文档展示了YOLO5Face C++版本的公共接口detect用于目标检测,并提供了详细的输入参数说明。使用案例展示了nano版本模型的检测结果,非常准确且自带5个人脸关键点,liveplayerjs源码适用于人脸对齐。文章最后分享了模型转换过程,包括Detect模块的推理源码分析,以及将模型文件转换为ONNX、MNN、TNN和NCNN的步骤。针对NCNN模型转换的定制化处理是为了解决NCNN不支持5维张量的问题,通过修改模型输出和处理逻辑,成功将模型转换为NCNN文件。文章还提供了开源仓库链接,voipapp源码鼓励用户关注、点赞和收藏。
ONNX一本通:综述&使用&源码分析(持续更新)
ONNX详解:功能概述、Python API应用与源码解析
ONNX的核心功能集中在模型定义、算子操作、序列化与反序列化,以及模型验证上。它主要通过onnx-runtime实现运行时支持,包括图优化和平台特定的算子库。模型转换工具如tf、pytorch和mindspore的FMK工具包负责各自框架模型至ONNX的转换。ONNX Python API实战
场景一:构建线性回归模型,基础操作演示了API的使用。
场景二至四:包括为op添加常量参数、属性以及控制流(尽管控制流在正式模型中应尽量避免)。
场景五和后续:涉及for循环和自定义算子的添加,如Cos算子,涉及算子定义、添加到算子集、Python实现等步骤。
源码分析
onnx.checker:负责模型和元素的检查,cpp代码中实现具体检查逻辑。
onnx.compose、onnx.defs、onnx.helper等:提供模型构建、算子定义和辅助函数。
onnx.numpy_helper:处理numpy数组与onnx tensor的转换。
onnx.reference:提供Python实现的op推理功能。
onnx.shape_inference:进行模型的形状推断。
onnx.version_converter:处理不同op_set_version的转换。
转换实践
ONNX支持将tf、pytorch和mindspore的模型转换为ONNX格式,同时也有ONNX到TensorRT、MNN和MS-Lite等其他格式的转换选项。总结
ONNX提供了一个统一的IR(中间表示)框架,通过Python API构建模型,支持算子定义的检查和模型的序列化。同时,它利用numpy实现基础算子,便于模型的正确性验证,并支持不同框架模型之间的转换。