You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提升ASP.NET Core中CustomVision的物体识别准确率?代码排查

代码问题排查及修复

核心代码问题

  1. 项目ID不匹配
    你的RunTrainingAsync方法每次执行都会调用CreateProject创建新的项目,但预测时使用的是硬编码的projectId(b933984e-1c7f-4ef6-8a25-5726b3c846f7),这意味着你预测的模型根本不是刚训练的那个,而是之前创建的某个未充分训练的项目,直接导致结果无意义。

修复方式:修改训练逻辑,先检查是否存在同名项目,存在则复用,不存在再创建,确保训练和预测使用同一个项目ID:

// 替换RunTrainingAsync里的项目创建代码
var existingProject = trainer.GetProjects().FirstOrDefault(p => p.Name == "CatsVsDogsProject");
var project = existingProject ?? trainer.CreateProject("CatsVsDogsProject");
// 同时更新全局的projectId为当前项目的ID,或者在训练完成后输出ID用于预测
Console.WriteLine($"当前项目ID: {project.Id}");
  1. 图片上传无校验
    调用CreateImagesFromData上传图片时,没有检查返回结果是否成功。如果部分图片上传失败(比如格式错误、重复上传),实际参与训练的图片数量会更少,模型训练效果极差。

修复方式:添加上传结果校验:

foreach (var file in Directory.GetFiles(Path.Combine(imagesFolder, "Cat")))
{
    using var stream = File.OpenRead(file);
    var result = trainer.CreateImagesFromData(project.Id, stream, new[] { catTag.Id });
    if (result.IsBatchSuccessful == false)
    {
        foreach (var error in result.Images.Where(i => i.Status != "OK"))
        {
            Console.WriteLine($"图片 {file} 上传失败: {error.Status}");
        }
    }
}
  1. 训练结果无验证
    训练完成后没有查看迭代的性能指标(如精确率、召回率),无法确认模型本身是否训练有效。

修复方式:训练完成后输出性能数据:

iteration = trainer.GetIteration(project.Id, iteration.Id);
Console.WriteLine($"训练完成,精确率: {iteration.Precision:P1}, 召回率: {iteration.Recall:P1}");
模型准确率提升方案

数据层面

  • 扩充训练数据:20张图片远不足以训练出有效模型,每个类别至少需要100张以上,最好200+。图片要覆盖不同场景:不同品种的猫狗、不同光照条件、不同背景、不同角度姿态。
  • 保证类别平衡:猫狗两类的图片数量尽量接近,避免数量差距过大导致模型偏向数量多的类别。
  • 数据增强:在CustomVision门户或训练代码中开启自动增强功能(翻转、旋转、亮度调整、裁剪等),可以在有限数据下提升模型泛化能力。代码中创建项目时可设置:
var project = trainer.CreateProject("CatsVsDogsProject", domainId: Guid.Parse("ee85a72c-405e-4adc-bb47-ffa8ca0c9f31"), // 通用分类领域
    classificationType: ClassificationType.Multiclass,
    enableImageProcessing: true); // 开启自动增强
  • 分离测试集:单独准备10%-20%的图片作为测试集,不要用训练过的图片测试,才能真实反映模型效果。

训练层面

  • 选择合适的领域:如果是猫狗分类,选择“通用(Compact)”或“动物”领域(如果有),比通用领域更贴合场景,训练效率更高。
  • 多次迭代训练:单次训练可能效果不足,可以在训练完成后,基于现有迭代继续训练(使用TrainProject再次调用),或者在门户中使用“高级训练”(如果是付费资源)。
  • 检查标注准确性:确保所有训练图片的标注完全正确,没有把猫标成狗或反之,错误标注会严重误导模型。

内容的提问来源于stack exchange,提问作者max ray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 21:20:54