用VS022 modelBuild 训练模型-AI在作业设计中的应用1

   对我来说,AI一直是我的一个知识盲区。现在刚好有任务,准备用用一个小项目带着学习。先体验一下模型训练 ,正好平时用VS2022写c#程序 , 所以用VS2022傻瓜式的训练模型功能很方便,(注意要安装 ML.net ),我给自己的第一个任务是训练从学习作业中(选择题)答案的获得学生的选项,初步的想法是设计一种固定格式的选择题作业(末尾有图,随便做的,答案正确不正确不重要,选项答案用四个连续方框表示,让AI来读出这些答案。现在是暑假也没这个条件得到数据集,于是我就手工“编”了几百个试卷页,(还用了复制粘贴),数据集差点,但是主要是看流程能不能走完,标注花了我好多时间,累死。经过好几次失败,有一次训练了两天还死机了,大概是参数不对,所以这里提醒一下,有个自定义,它有用哦。

   最后一次训练了一晚上,终于训练好了我的第一个模型,呵呵。下面是一个简单调用以及使用效果:
 

// This file was auto-generated by ML.NET Model Builder. 

using MLModel1_ConsoleApp1;
using Microsoft.ML.Data;

// Create single instance of sample data from first line of dataset for model input.
var image = MLImage.CreateFromFile(@"F:\temp\vott_label5\source\101.jpg");//@"F:\temp\vott_label5\source\99.jpg"//准备一个图片文件
MLModel1.ModelInput sampleData = new MLModel1.ModelInput()//建立一个输入数据的实例
{
    Image = image,
};
// Make a single prediction on the sample data and print results.//生成一个预测结果
var predictionResult = MLModel1.Predict(sampleData);
Console.WriteLine("\n\nPredicted Boxes:\n");
if (predictionResult.PredictedBoundingBoxes == null) //如果没有预测到边界框
{
    Console.WriteLine("未检测到目标-No Predicted Bounding Boxes");
    return;
}
var boxes =
    predictionResult.PredictedBoundingBoxes.Chunk(4) //将预测的边界框分成四个一组
        .Select(x => new { XTop = x[0], YTop = x[1], XBottom = x[2], YBottom = x[3] }) //将每组边界框转换为一个匿名类型
        .Zip(predictionResult.Score, (a, b) => new { Box = a, Score = b })//将边界框和对应的分数配对
        .Zip(predictionResult.PredictedLabel, (ab,c) => new { ab.Box, ab.Score, Label = c }) //将标签添加到每个边界框 
        ;
//test
var g = predictionResult.Labels;
    //test
foreach (var item in boxes)
{
    Console.WriteLine($"成功检测到的BBox目标:\n XTop: {item.Box.XTop},YTop: {item.Box.YTop},XBottom: {item.Box.XBottom},YBottom: {item.Box.YBottom}, \n Score: {item.Score} 你选择了:{item.Label}");
}

======================
回显

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值