写点什么

ML.NET:一个.NET 开源、免费、跨平台的机器学习框架

作者:追逐时光者
  • 2025-10-20
    广东
  • 本文字数:1766 字

    阅读完需:约 6 分钟

前言

今天大姚给大家分享一个.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 官方提供的使用示例

  • https://github.com/dotnet/machinelearning-samples

ML.NET 使用环境安装

安装本机.NET 环境

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

  • https://dotnet.microsoft.com/zh-cn/download

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;                }            }        }
复制代码

运行效果展示



项目源码地址

更多项目实用功能和特性欢迎前往项目开源地址查看👀,别忘了给项目一个 Star 支持💖。

  • GitHub 开源地址:https://github.com/dotnet/machinelearning

  • 本文示例源码地址:https://github.com/YSGStudyHards/DotNetExercises/tree/master/MLNETExercise

优秀项目和框架精选

该项目已收录到 C#/.NET/.NET Core 优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解 C#、.NET 和.NET Core 领域的最新动态和最佳实践,提高开发工作效率和质量。坑已挖,欢迎大家踊跃提交 PR 推荐或自荐(让优秀的项目和框架不被埋没🤞)。

  • https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.md

发布于: 刚刚阅读数: 3
用户头像

不积跬步无以至千里,不积小流无以成江海! 2020-01-14 加入

微软MVP、华为云HCDE、华为云云享专家、51CTO专家博主、阿里云专家博主、博客园推荐博客、CSDN博客专家、腾讯云创作之星、掘金优秀创作者,一个热爱开源的全栈软件工程师,擅长C#、.NET、Vue等相关技术开发。

评论

发布
暂无评论
ML.NET:一个.NET开源、免费、跨平台的机器学习框架_.net_追逐时光者_InfoQ写作社区