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

升级Microsoft.ML至2.0版本后遇System.ArgumentOutOfRangeException异常求助

解决ML.NET 2.0中Bitmap类型的SchemaDefinition异常

ML.NET 2.0对自定义类型的处理逻辑做了调整,不再隐式支持System.Drawing.Bitmap这类非原生数据类型,这是导致你遇到ArgumentOutOfRangeException的核心原因。以下是几种可行的解决方案:

方案一:改用ML.NET原生Image类型

替换数据类中的Bitmap属性为ML.NET提供的Microsoft.ML.Data.Image类型,搭配官方图像加载API处理图像,让框架自动识别类型:

using Microsoft.ML.Data;

public class ObjectDetectionData
{
    [LoadColumn(0)]
    public string ImagePath;

    // 用ML.NET原生Image类型替代Bitmap
    [LoadColumn(1)]
    public Image Image;
}

// 构建加载图像的管道
var mlContext = new MLContext();
var imageLoaderPipeline = mlContext.Transforms.LoadImage(
    outputColumnName: nameof(ObjectDetectionData.Image),
    imageFolder: "你的图像目录路径",
    inputColumnName: nameof(ObjectDetectionData.ImagePath));

方案二:显式注册Bitmap类型转换器

如果必须保留Bitmap类型,需实现自定义类型转换器并注册到MLContext,让框架能识别Bitmap与原生数据类型的映射:

using System.Drawing;
using System.IO;
using Microsoft.ML;
using Microsoft.ML.Data;

// 实现Bitmap与ML.NET Image的转换器
public class BitmapToImageConverter : ITypeConverter<Bitmap, Image>
{
    public Image Convert(Bitmap input)
    {
        using var ms = new MemoryStream();
        input.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
        return Image.CreateFromBytes(ms.ToArray());
    }

    public Bitmap ConvertBack(Image output)
    {
        using var ms = new MemoryStream(output.GetBytes());
        return new Bitmap(ms);
    }
}

// 注册转换器到MLContext
var mlContext = new MLContext();
mlContext.Model.RegisterTypeConverter(new BitmapToImageConverter());

// 后续构建SchemaDefinition时即可识别Bitmap类型
var schemaDef = SchemaDefinition.Create<你的数据类>();

方案三:直接使用字节数组存储图像数据

另一种方式是将Bitmap转换为字节数组,用byte[]类型作为数据类属性,ML.NET原生支持该类型,无需额外注册:

public class ObjectDetectionData
{
    public byte[] ImageBytes;
    // 其他检测相关字段
}

// 将Bitmap转为字节数组的示例代码
public byte[] BitmapToBytes(Bitmap bitmap)
{
    using var ms = new MemoryStream();
    bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
    return ms.ToArray();
}

内容的提问来源于stack exchange,提问作者Adrián Fontal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 20:40:55