更新日志

  • 🔥 2023.1.23 :发布 OpenVinoSharp 2.0
    • 🗳 OpenVinoSharp 库:

      • 基于OpenVINO C# API 1.0 以及使用中所出现的问题,将一些问题进行了修改;
      • 增加数据处理方式。
    • 🔮 NuGet包:

      • 制作并发布NuGet包,包括OpenVinoSharp.winOpenVinoSharp.win.simplify 两个安装包。
    • 💡 技术文档:

简介

OpenVINO™是一个用于优化和部署深度学习模型的开源工具包,是英特尔基于自身现有的硬件平台开发的一种可以加快高性能计算机视觉和深度学习视觉应用开发速度工具套件,用于快速开发应用程序和解决方案,以解决各种任务(包括人类视觉模拟、自动语音识别、自然语言处理和推荐系统等)。

  官方发行的OpenVINO™未提供C#编程语言接口,因此在使用时无法实现在C#中利用OpenVINO™进行模型部署。在该项目中,利用动态链接库功能,调用官方依赖库,实现在C#中部署深度学习模型,为方便使用,在该项目中提供了NuGet包方便使用,为了方便大家再此基础上进行开发,该项目提供了详细的技术文档。

NuGet包

托管库

Package Description Link
OpenVinoSharp.win OpenVinoSharp core libraries,附带完整的OpenCV 4.5.5、OpenVINO 2022.3依赖库 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QKvN8a31-1675956837448)(null)]

安装

OpenVINO安装

 OpenVINO安装,请参考openvino_installation.md安装指导文档。

OpenVINO C# API NuGet包安装

(1)下载NuGet包

 使用Visual Studio自带的NuGet管理包,搜索OpenVinoSharp.win,找到对应的包,并将其安装到项目中。

(2)复制依赖项

 由于项目依赖较多的外部依赖项,因此为了方便使用,此处提供了所需的依赖。

 打开下载的NuGet下载路径,路径一般为C:\Users\(用户名)\.nuget\packages\,并找到openvinosharp.win,将external lib文件夹中的所有文件复制到程序运行目录中。

技术文档

 由于该项目是基于作者自身使用需求开发,结合常见模型部署方式封装的API函数,因此为了满足其他开发者的需求,此处公开详细的技术文档,如有需求,可以自行根据技术文档openvinosharp_documents修改。

应用案例

  • 基于C#和OpenVINO部署PP-Human

| GitHub代码库 | CSDN博客 | 微信推文 |

  • 基于C#和OpenVINOTM部署PP-TinyPose

| GitHub代码库 | CSDN博客 | 微信推文 |

  • 基于C#和OpenVINO部署PaddleOCR模型

| GitHub代码库 | CSDN博客 |

许可证书

本项目的发布受Apache 2.0 license许可认证。

API文档

命名空间

using OpenVinoSharp;

模型推理API

序号 API 参数解释 说明
1 方法 Core() 构造函数 初始化推理核心,读取本地模型,加载到设备,并创建推理通道
参数 string model 模型路径
string device 设备名称
string cache_dir 缓存路径
2 方法 void set_input_shape() 设置输入节点形状 根据节点维度设置
参数 string node_name 节点名称
int[] input_shape 形状数组
3 方法 void load_input_data() 设置图片/普通输入数据 方法重载
参数 string node_name 输入节点名称
float[] input_data 输入数据
参数 string node_name 输入节点名称
byte[] image_data 图片数据
int type 数据处理类型:
type = 0: 均值方差归一化、常规缩放
type = 1: 普通归一化(1/255)、常规缩放
type = 2: 不归一化、常规缩放
type = 0: 均值方差归一化、仿射变换
type = 1: 普通归一化(1/255)、仿射变换
type = 2: 不归一化、仿射变换
4 方法 void infer() 模型推理
5 方法 void T[] read_infer_result <T>() 读取推理结果数据 支持读取Float32、Int32、Int64格式数据
参数 string output_name 输出节点名
int data_size 输出数据长度
6 方法 void delet() 删除内存地址
Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐