首页 > 其他分享 >使用ML.NET训练一个属于自己的图像分类模型

使用ML.NET训练一个属于自己的图像分类模型

时间:2024-07-15 10:07:40浏览次数:11  
标签:框架 训练 ML 模型 openFileDialog 图像 NET

思维导航

前言

今天大姚给大家分享一个.NET开源、免费、跨平台(支持Windows、Linux、macOS多个操作系统)的机器学习框架:ML.NET。并且本文将会带你快速使用ML.NET训练一个属于自己的图像分类模型,对图像进行分类。

ML.NET框架介绍

ML.NET 允许开发人员在其 .NET 应用程序中轻松构建、训练、部署和使用自定义模型,而无需具备开发机器学习模型的专业知识或使用 Python 或 R 等其他编程语言的经验。该框架提供从文件和数据加载的数据。数据库,支持数据转换,并包含许多机器学习算法。

AI和机器学习有什么区别?

AI 是一个计算分支,涉及训练计算机执行通常需要人类智能的操作。机器学习是 AI 的一部分,它涉及计算机从数据中学习和在数据中发现模式,以便能够自行对新数据进行预测。

ML.NET支持的.NET框架

目前ML.NET支持.NET、.NET Core (版本 2.0 及更高版本)和 .NET Framework (版本 4.6.1 及更高版本)。

框架源代码

ML.NET官方提供的使用示例

ML.NET使用环境安装

安装本机.NET环境

首先需要准备好本机的.NET开发环境:

Visual Studio环境配置

选择.NET 桌面开发工作负荷以及可选的 ML.NET Model Builder 组件。

ML.NET Model Builder 组件介绍:提供易于理解的可视界面,用于在 Visual Studio 内生成、训练和部署自定义机器学习模型。

创建一个WinForms应用

创建一个名为:MLNETExercise的.NET8 WinForms应用。

准备好需要训练的图片

训练图像分类模型

测试训练模型的分析效果

在WinForms中调用图像分类模型

调用完整代码

        private void Btn_SelectImage_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog openFileDialog = new OpenFileDialog())
            {
                openFileDialog.Title = "Select Image";
                openFileDialog.Filter = "Image Files (*.jpg, *.png, *.bmp)|*.jpg;*.png;*.bmp|All Files (*.*)|*.*";

                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    // 获取用户选择的文件路径
                    string selectedImagePath = openFileDialog.FileName;

                    // 从文件加载图片
                    Image img = Image.FromFile(openFileDialog.FileName);
                    this.pictureBox.Image = img;

                    var imageBytes = File.ReadAllBytes(selectedImagePath);
                    MLImageAnalysis.ModelInput sampleData = new MLImageAnalysis.ModelInput()
                    {
                        ImageSource = imageBytes,
                    };

                    //Load model and predict output
                    var result = MLImageAnalysis.Predict(sampleData);
                    this.txt_Box.Text = result.PredictedLabel;
                }
            }
        }

运行效果展示

项目源码地址

更多项目实用功能和特性欢迎前往项目开源地址查看

标签:框架,训练,ML,模型,openFileDialog,图像,NET
From: https://www.cnblogs.com/mq0036/p/18302572

相关文章

  • 高频面试题-HTML
    严格模式head,body,Doctype他们的作用是什么?head标签中的元素主要用于描述文档的元信息,如文档的标题、字符集编码、外部资源的链接等。这些信息虽然不直接显示在页面上,但对于文档的结构、样式、行为等方面都有重要的影响。body标签里的内容构成了网页的主体,是用户浏览网页......
  • OpenCV——实现视频图像抖动的效果
    #Jitterimportcv2importnumpyasnp#视频路径和输出路径input_video_path=r'D:\desk\20240713_test\Ori_Videos\ori_videos\IR\ir_shake_20240713.mp4'output_video_path=r'D:\desk\20240713_test\Ori_Videos\enhance\IR\jitter\jitter_20.......
  • OpenCV——实现视频图像的来回摆动的效果
    #Swingimportcv2defrotate_img(image,angle):#Readingtheimage#dividingheightandwidthby2togetthecenteroftheimageheight,width=image.shape[:2]#getthecentercoordinatesoftheimagetocreatethe2Drotationmatr......
  • 算法金 | 深度学习图像增强方法总结
    图像增强方法在数字图像处理中占有重要地位,它能够有效提高图像的视觉效果,增强图像的细节信息,从而在医学、遥感、工业检测等多个领域发挥重要作用1.空间域增强方法空间域增强方法是通过直接对图像像素进行操作来实现图像增强的技术。以下是几种常见的空间域增强方法:1.1直方图......
  • ResNet —— 李沐老师论文跟读
    论文地址:https://arxiv.org/pdf/1512.03385v1.pdf引言作为一篇发表于2015年的文章,至今我们仍在深度卷积神经网络中用到ResNet,作为一个神经网络初学者,我觉得很有必要去阅读一下这篇文章。在ResNet发表之前,深层神经网络的训练非常困难,而且会遇到当网络层级超过一定界限之后,神经......
  • Datawhale2024年AI夏令营第二期:CV图像--学习笔记
       Deepfake攻防--图像赛道是该夏令营第二期的学习活动(“CV图像”方向),是于蚂蚁集团举办的“外滩大会-全球Deepfake攻防挑战赛”开展的实践学习——适合想入门、了解并实践,关于深度学习和计算机视觉方向的学习者参与。此次学习活动的速通手册如下:从零入门CV图像竞赛(Deepf......
  • omnet6.0.1安装补充
    版本要求很严格,目前该文档使用version6.0.1根据官网的对应版本的安装操作步骤(官网有安装手册,下载的压缩包里也有文档)一般没问题,需要注意以下几点:对于gcc编译器用户,需要在configure.user中配置默认编译器和连接器,文档推荐的是clang,但是因为我电脑的工具链不齐全,因此存......
  • OpenCV图像处理——霍夫圆检测与最小二乘法拟合圆
    HoughCircles:霍夫圆检测voidHoughCircles(InputArrayimage,OutputArraycircles,intmethod,doubledp,doubleminDist,doubleparam1=100,doubleparam2=100,intminRadius=0,intmaxRadius=0);image:输入,8-bit单通道灰度图circles:输出,vector,含有3或......
  • OpenCV图像处理——判断轮廓是否在圆环内
    要判断一个轮廓是否在圆环内,可以将问题分解为两个步骤:确保轮廓的所有点都在外圆内。确保轮廓的所有点都在内圆外。下面是一个完整的示例代码,展示如何实现这一点:#include<opencv2/opencv.hpp>#include<iostream>#include<vector>#include<cmath>usingnamespace......
  • C++使用gnuplot-cpp库绘制图像
    最近想要对一些时变的变量进行可视化,搜索来搜索去选择了使用gnuplot这个工具。sudoapt-getinstallgnuplotsudoapt-getinstallgnuplot-x11#使其支持linux终端这样就安装完gnuplot了。接着可以在命令行中键入gnuplot命令打开gnuplot的交互式环境。由于这里着目于使用c++......