使用Tools for AI封装onnx模型并推理

这篇具有很好参考价值的文章主要介绍了使用Tools for AI封装onnx模型并推理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

进行这一步之前,请确保已正确安装配置了Visual Studio 2017 和 Microsoft Visual Studio Tools for AI环境。

项目的代码也可以在这里找到,下面的步骤是带着大家从头到尾做一遍。

界面设计

创建Windows窗体应用(.NET Framework)项目,这里给项目起名ClassifyBear。

注意,项目路径不要包含中文。

在解决方案资源管理器中找到Form1.cs,双击,打开界面设计器。从工具箱中向Form中依次拖入控件并调整,最终效果如下图所示:

使用Tools for AI封装onnx模型并推理,人工智能,机器学习,深度学习

左侧从上下到依次是:

  • Label控件,将内容改为“输入要识别的图片地址:”
  • TextBox控件,可以将控件拉长一些,方便输入URL
  • Button控件,将内容改为“识别”
  • Lable控件,将label的内容清空,用来显示识别后的结果。因为label也没有边框,所以在界面看不出来。可以将此控件的字体调大一些,能更清楚的显示推理结果。

右侧的控件是一个PictureBox,用来预览输入的图片,同时,我们也从这个控件中取出对应的图片数据,传给我们的模型推理类库去推理。建议将控件属性的SizeMode更改为StretchImage,并将控件长和宽设置为同样的值,保持一个正方形的形状,这样可以方便我们直观的了解模型的输入,因为在前面查看模型信息的时候也看到了,该模型的输入图片应是正方形。

封装模型推理类库

由于目前模型推理用到的库只支持x64,所以这里需要将解决方案平台设置为x64。打开解决方案资源管理器,在解决方案上点右键,选择配置管理器。
使用Tools for AI封装onnx模型并推理,人工智能,机器学习,深度学习

在配置管理器对话框中,点开活动解决方案平台下拉框,选择新建

使用Tools for AI封装onnx模型并推理,人工智能,机器学习,深度学习

在新建解决方案平台对话框中,输入新平台名x64,点击确定即可

使用Tools for AI封装onnx模型并推理,人工智能,机器学习,深度学习

下面添加模型推理类库,再次打开解决方案资源管理器,在解决方案上点右键,选择添加,然后选择新建项目。

添加新项目对话框中,将左侧目录树切换到AI Tools下的Inference,右侧选择模型推理类库,下方填入项目名称,这里用Model作为名称。

使用Tools for AI封装onnx模型并推理,人工智能,机器学习,深度学习

确定以后会出现检查环境的进度条,耐心等待一会就可以出现模型推理类库创建向导对话框。

点击模型路径后面的浏览按钮,选择前面下载的BearModel.onnx模型文件。

注意,这里会出现几处错误提示,我们需要手动修复一下。首先会看到“发现不支持的张量的数据类型”提示,可以直接点确定。

使用Tools for AI封装onnx模型并推理,人工智能,机器学习,深度学习

确定后如果弹出“正在创建项目…”的进度条,一直不消失,这里只需要在类名后面的输入框内点一下,切换下焦点即可。

使用Tools for AI封装onnx模型并推理,人工智能,机器学习,深度学习

然后,我们来手动配置一下模型的相关信息。类名输入框中填入模型推理类的名字,这里用Bear。然后点击推理接口右侧的添加按钮,在弹出的编辑接口对话框中,随便起个方法名,这里用Infer。输入节点的变量名和张量名填入data,输出节点的变量名和张量名填入classLabel,字母拼写要和之前查看模型时看到的拼写一模一样。然后一路确定,再耐心等待一会,就可以在解决方案资源管理器看到新建的模型推理类库了。

使用Tools for AI封装onnx模型并推理,人工智能,机器学习,深度学习

至此,模型推理类库封装完成。

使用模型推理类库

首先添加对模型推理类库的引用,切换到解决方案资源管理器,在ClassifyBear项目的引用上点右键,选择添加引用。

使用Tools for AI封装onnx模型并推理,人工智能,机器学习,深度学习

在弹出的引用管理器对话框中,选择项目、解决方案,右侧可以看到刚刚创建的模型推理类库,勾选该项目,点击确定即可。

使用Tools for AI封装onnx模型并推理,人工智能,机器学习,深度学习

在Form1.cs上点右键,选择查看代码,打开Form1.cs的代码编辑窗口。

添加两个成员变量

// 使用Netron查看模型,得到模型的输入应为227*227大小的图片
private const int imageSize = 227;

// 模型推理类
private Model.Bear model;

回到Form1的设计界面,双击Form的标题栏,会自动跳转到代码页面并添加了Form1_Load方法,在其中初始化模型推理对象

private void Form1_Load(object sender, EventArgs e)
{
    // 初始化模型推理对象
    model = new Model.Bear();
}

回到Form1的设计界面,双击识别按钮,会自动跳转到代码页面并添加了button1_Click方法,在其中添加以下代码:

首先,每次点击识别按钮时都先将界面上显示的上一次的结果清除

// 识别之前先重置界面显示的内容
label1.Text = string.Empty;
pictureBox1.Image = null;
pictureBox1.Refresh();

然后,让图片控件加载图片

bool isSuccess = false;
try
{
    pictureBox1.Load(textBox1.Text);
    isSuccess = true;
}
catch (Exception ex)
{
    MessageBox.Show($"读取图片时出现错误:{ex.Message}");
    throw;
}

如果加载成功,将图片数据传给模型推理类库来推理。

if (isSuccess)
{
    // 图片加载成功后,从图片控件中取出227*227的位图对象
    Bitmap bitmap = new Bitmap(pictureBox1.Image, imageSize, imageSize);

    float[] imageArray = new float[imageSize * imageSize * 3];

    // 按照先行后列的方式依次取出图片的每个像素值
    for (int y = 0; y < imageSize; y++)
    {
        for (int x = 0; x < imageSize; x++)
        {
            var color = bitmap.GetPixel(x, y);

            // 使用Netron查看模型的输入发现
            // 需要依次放置227 *227的蓝色分量、227*227的绿色分量、227*227的红色分量
            imageArray[y * imageSize + x] = color.B;
            imageArray[y * imageSize + x + 1* imageSize * imageSize] = color.G;
            imageArray[y * imageSize + x + 2* imageSize * imageSize] = color.R;
        }
    }

    // 模型推理类库支持一次推理多张图片,这里只使用一张图片
    var inputImages = new List<float[]>();
    inputImages.Add(imageArray);

    // 推理结果的第一个First()是取第一张图片的结果
    // 之前定义的输出只有classLabel,所以第二个First()就是分类的名字
    label1.Text = model.Infer(inputImages).First().First();
}

注意,这里的数据转换一定要按照前面查看的模型的信息来转换,图片大小需要长宽都是227像素,并且要依次放置所有的蓝色分量、所有的绿色分量、所有的红色分量,如果顺序不正确,不能达到最佳的推理结果。

测试

编译运行,然后在网上找一张熊的图片,把地址填到输入框内,然后点击识别按钮,就可以看到识别的结果了。注意,这个URL应该是图片的URL,而不是包含该图片的网页的URL。

使用Tools for AI封装onnx模型并推理,人工智能,机器学习,深度学习

在线教程

  • 麻省理工学院人工智能视频教程 – 麻省理工人工智能课程
  • 人工智能入门 – 人工智能基础学习。Peter Norvig举办的课程
  • EdX 人工智能 – 此课程讲授人工智能计算机系统设计的基本概念和技术。
  • 人工智能中的计划 – 计划是人工智能系统的基础部分之一。在这个课程中,你将会学习到让机器人执行一系列动作所需要的基本算法。
  • 机器人人工智能 – 这个课程将会教授你实现人工智能的基本方法,包括:概率推算,计划和搜索,本地化,跟踪和控制,全部都是围绕有关机器人设计。
  • 机器学习 – 有指导和无指导情况下的基本机器学习算法
  • 机器学习中的神经网络 – 智能神经网络上的算法和实践经验
  • 斯坦福统计学习
    有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
    使用Tools for AI封装onnx模型并推理,人工智能,机器学习,深度学习

使用Tools for AI封装onnx模型并推理,人工智能,机器学习,深度学习

人工智能书籍

  • OpenCV(中文版).(布拉德斯基等)
  • OpenCV+3计算机视觉++Python语言实现+第二版
  • OpenCV3编程入门 毛星云编著
  • 数字图像处理_第三版
  • 人工智能:一种现代的方法
  • 深度学习面试宝典
  • 深度学习之PyTorch物体检测实战
  • 吴恩达DeepLearning.ai中文版笔记
  • 计算机视觉中的多视图几何
  • PyTorch-官方推荐教程-英文版
  • 《神经网络与深度学习》(邱锡鹏-20191121)

  • 使用Tools for AI封装onnx模型并推理,人工智能,机器学习,深度学习

第一阶段:零基础入门(3-6个月)

新手应首先通过少而精的学习,看到全景图,建立大局观。 通过完成小实验,建立信心,才能避免“从入门到放弃”的尴尬。因此,第一阶段只推荐4本最必要的书(而且这些书到了第二、三阶段也能继续用),入门以后,在后续学习中再“哪里不会补哪里”即可。

使用Tools for AI封装onnx模型并推理,人工智能,机器学习,深度学习

第二阶段:基础进阶(3-6个月)

熟读《机器学习算法的数学解析与Python实现》并动手实践后,你已经对机器学习有了基本的了解,不再是小白了。这时可以开始触类旁通,学习热门技术,加强实践水平。在深入学习的同时,也可以探索自己感兴趣的方向,为求职面试打好基础。

使用Tools for AI封装onnx模型并推理,人工智能,机器学习,深度学习

第三阶段:工作应用

使用Tools for AI封装onnx模型并推理,人工智能,机器学习,深度学习

这一阶段你已经不再需要引导,只需要一些推荐书目。如果你从入门时就确认了未来的工作方向,可以在第二阶段就提前阅读相关入门书籍(对应“商业落地五大方向”中的前两本),然后再“哪里不会补哪里”。

有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
使用Tools for AI封装onnx模型并推理,人工智能,机器学习,深度学习

使用Tools for AI封装onnx模型并推理,人工智能,机器学习,深度学习

使用Tools for AI封装onnx模型并推理,人工智能,机器学习,深度学习文章来源地址https://www.toymoban.com/news/detail-830717.html

到了这里,关于使用Tools for AI封装onnx模型并推理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于onnx模型和onnx runtime推理stable diffusion

    直接用diffusers的pipeline: 在pipeline_onnx_stable_diffusion的基础上修改得到的直接调用onnx模型版本,可以用于其他推理引擎推理参考: pipe_onnx_simple.py onnx_utils_simple.py 生成1张512x512图的shape信息

    2024年02月11日
    浏览(39)
  • VS c++ onnxruntime 环境配置、onnx教程、部署推理模型、sklearn pkl模型转onnx、问题汇总

    目录 一、初步认识ONNX 二、pkl转ONNX+可视化模型 三、ONNX Runtime运行时 3.1 相关介绍(了解此运行时): 3.2 VS、c++部署onnxruntime 3.3 头文件引用的一些问题 四、问题汇总: 1. 类没有成员 2. 版本兼容问题 3. 3.“GetInputName“: 不是 “Ort::Session“ 的成员 官网: ONNX Runtime | Home GitHub

    2024年04月09日
    浏览(44)
  • onnx模型转engine并进行推理全过程解析

    深度学习模型在训练好以后,下一步就是部署到不同的设备进行测试,不同设备之间的转换一般可以通过中间件ONNX进行转换,以达到不同平台的通用。本文以模型转为ONNX为起点,分析介绍ONNX转为TensorRT Engine并进行推理的整个流程链路。 ONNX序列化为TRT模型的整个流程可以用

    2024年02月06日
    浏览(42)
  • OpenCV DNN模块推理YOLOv5 ONNX模型方法

    本文档主要描述 python 平台,使用 opencv-python 深度神经网络模块 dnn ,推理 YOLOv5 模型的方法。 文档主要包含以下内容: opencv-python 模块的安装 YOLOv5 模型格式的说明 ONNX 格式模型的加载 图片数据的预处理 模型推理 推理结果后处理,包括 NMS , cxcywh 坐标转换为 xyxy 坐标等 关键方

    2024年02月16日
    浏览(54)
  • OpenMMlab导出mobilenet-v2的onnx模型并推理

    使用mmpretrain导出mobilenet-v2的onnx模型: 安装有mmdeploy的话可以通过如下方法导出: 通过onnxruntime进行推理: 使用mmdeploy推理: 或者 这里通过trtexec转换onnx文件,LZ的版本是TensorRT-8.2.1.8。 使用mmdeploy推理: 或者

    2024年02月05日
    浏览(51)
  • YOLOX目标检测实战:LabVIEW+YOLOX ONNX模型实现推理检测(含源码)

    目录 前言 一、什么是YOLOX 二、环境搭建 1、部署本项目时所用环境: 2、LabVIEW工具包下载及安装: 三、模型的获取与转化【推荐方式一】 1、方式一:直接在官网下载yolox的onnx模型 2、方式二:将标准模型pth转化为onnx(较为复杂) 3、获取onnx模型总结 四、LabVIEW实现YOLOX ONN

    2024年02月15日
    浏览(40)
  • .Net使用第三方onnx或ModelBuilder轻松接入AI模型

    ML.Net - 开源的跨平台机器学习框架 支持CPU/GPU训练 轻松简洁的预测代码 可扩展其他的机器学习平台 跨平台 Visual Studio默认安装了Model Builder插件,可以很快地进行一些通用模型类型的训练和部署,提高接入机器学习的开发效率 通过非常简单地 右键项目-添加-机器学习模型

    2024年02月06日
    浏览(71)
  • 【AI人工智能】用于代码生成的大型语言模型 Large Language Models for Code Generation

      目录 Large Language Models for Code Generation – Part 1用于代码生成的大型语言模型——第 1 部分 Introduction

    2024年02月08日
    浏览(72)
  • yolov7使用onnx推理(带&不带NMS)

    官方代码: GitHub - WongKinYiu/yolov7: Implementation of paper - YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors         上个月,官方放了个使用onnx推理的ipynb文件,过了几天上去看,官方又给删了,不知道是不是要更新波大的,还好手快保存了一份,这个可以

    2024年02月16日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包