• C# .NET ML.NET 机器学习 图像分类


    一、 准备工作

    IDE是 VS2019。
    先下载好“resnet_v2_50_299.meta”这个文件,放入“C:\Users\jk\AppData\Local\Temp\MLNET\”这个文件夹,目录不存在自己新建下。“jk”是WINDOWS登录名,注意换成你自己的。

    下载地址:https://download.csdn.net/download/runliuv/15724931

    新建一个“z机器学习样本1”目录,再建立“猫”和“狗”2个子目录。在网上下载“猫”和“狗”的图片各几十张,分别放到这2个子目录中。这2个子目录名也称为标签(Label)。


    二、 添加和使用
    新建一个“WindowsFormsApp1”的.NET FRAMEWORK 4.7 的WINFORM程序。


    在菜单-工具-选项-环境-预览功能中,选中“Enable ML.NET Model Builder”

    在“WindowsFormsApp1”上右键-添加机器学习。

    选择图像分类.

    选择本地.

    选择刚才收集好的图片文件夹(D:\z机器学习样本1)。

    开始训练。

    训练完成(可能要几分钟)。

    试用模型(随便选一张猫或狗的图片)。

    添加项目。

    如何调用ML.NET的提示


    可以把 WindowsFormsApp1ML.ConsoleApp 设置为启动项。F5运行试用下。
    其中predictionResult.Prediction 是识别出来的类别,predictionResult.Score 是相似度。

    把“WindowsFormsApp1”右键设置为启动项。
    Nuget 中安装:
    Microsoft.ML 1.5.0
    Microsoft.ML.ImageAnalytics 1.5.0
    Microsoft.ML.Vision 1.5.0
    SciSharp.TensorFlow.Redist 1.14.0

    ,这4个包尽量和“WindowsFormsApp1ML.ConsoleApp”中版本一致

    在WINFORM界面上添加按钮和文件对话框(openFileDialog).

    private void button1_Click(object sender, EventArgs e)
            {
                try
                {
                    if (openFileDialog1.ShowDialog() != DialogResult.OK)
                    {
                        return;
                    }
                    string fileName = openFileDialog1.FileName;
    
                    ModelInput sampleData = new ModelInput()
                    {
                        ImageSource = fileName,
                    };
                    // Make a single prediction on the sample data and print results
                    var predictionResult = ConsumeModel.Predict(sampleData);
                    MessageBox.Show(predictionResult.Prediction);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }


    运行起来。就可以了。

    三、简单解析
    查看 WindowsFormsApp1ML.ConsoleApp中的 ModelBuilder 类。
    这个类是用来训练的。
    TRAIN_DATA_FILEPATH 是训练文件索引(C:\Users\jk\AppData\Local\Temp\4233eca3-43b3-479f-97f8-50ac3124e9c7.tsv)。用记事本打开TRAIN_DATA_FILEPATH路径的文件。里面包含2列,Label和ImageSource。

    MODEL_FILEPATH 是训练后保存的模型。使用时要放到使用程序的根目录,微软自动生成的代码,路径是写死的。
    CreateModel() 是训练方法。相当于我们刚才的鼠标点击训练。
    如果要用代码来训练,就用代码生成 TRAIN_DATA_FILEPATH 中的 .tsv 文件 。再调用 CreateModel()。

    再看 WindowsFormsApp1ML.Model 中的 ConsumeModel类。
    这个类是使用。
    Predict() 就是调用主入口了,子方法中 CreatePredictionEngine(),modelPath 是写死的,有需要则替换。

    这个提示是正在下载resnet_v2_50_299.meta文件,从微软下载这个可能需要花很长时间:

    [Source=ImageClassificationTrainer; Ensuring meta files are present., Kind=Info] Downloading resnet_v2_50_299.meta from https://aka.ms/mlnet-resources/resnet_v2_50_299.meta to C:\Users\jk\AppData\Local\Temp\MLNET\resnet_v2_50_299.meta
    [Source=ImageClassificationTrainer; Ensuring meta files are present., Kind=Info] resnet_v2_50_299.meta: Downloaded 3596 bytes out of 102616931

    end

  • 相关阅读:
    满屏品字布局怎么设计
    Web前端面试题(二)
    Welcome-to-Swift-11方法(Methods)
    Welcome-to-Swift-10属性 (Properties)
    Welcome-to-Swift-09类和结构体(Classes and Structures)
    Welcome-to-Swift-08枚举 (Enumerations)
    Welcome-to-Swift-07闭包(Closures)
    Welcome-to-Swift-06函数(Functions)
    Welcome-to-Swift-05控制流(Control Flow )
    Welcome-to-Swift-04集合类型(Collection Types)
  • 原文地址:https://www.cnblogs.com/runliuv/p/16291819.html
Copyright © 2020-2023  润新知