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

在树莓派上使用customvision.ai/.NET 5部署目标检测模型问题求助

树莓派ARM环境.NET 5调用Custom Vision ONNX模型解决方案

问题根因

ML.NET 1.6版本官方仅支持x86/x64架构,内置ONNX推理绑定未适配ARM架构,因此部署到树莓派时会抛出架构不兼容报错,和ONNX模型本身无关。

兼容方案(无需重写为Python/C++,无需跨进程调用)

步骤1:调整项目依赖

  • 卸载项目中Microsoft.ML、Microsoft.ML.OnnxTransformer等ML.NET推理相关包
  • 保留Microsoft.ML.OnnxRuntime 1.8.1,额外安装对应ARM架构的运行时包:
    • 32位Raspberry Pi OS安装Microsoft.ML.OnnxRuntime.Linux.arm
    • 64位Raspberry Pi OS安装Microsoft.ML.OnnxRuntime.Linux.arm64

步骤2:直接调用OnnxRuntime执行推理

Custom Vision导出的目标检测ONNX模型固定输入名为data,输出名为model_outputs0,无需调整模型结构即可直接调用,参考代码如下:

using Microsoft.ML.OnnxRuntime;
using Microsoft.ML.OnnxRuntime.Tensors;
using System.Drawing;

// 初始化推理会话,自动适配ARM架构
var sessionOpts = new SessionOptions
{
    EnableCpuMemArena = true,
    ExecutionMode = ExecutionMode.ORT_SEQUENTIAL
};
using var inferSession = new InferenceSession("你的模型文件路径.onnx", sessionOpts);

// 图片预处理:将输入图片缩放到模型要求尺寸(通常为416*416),转为NCHW格式并归一化
float[] PreprocessImage(Bitmap originImg)
{
    var resizedImg = new Bitmap(originImg, new Size(416, 416));
    var inputBuffer = new float[1 * 3 * 416 * 416];
    for (int y = 0; y < 416; y++)
    {
        for (int x = 0; x < 416; x++)
        {
            var pixel = resizedImg.GetPixel(x, y);
            inputBuffer[0 * 3 * 416 * 416 + 0 * 416 * 416 + y * 416 + x] = pixel.R / 255f;
            inputBuffer[0 * 3 * 416 * 416 + 1 * 416 * 416 + y * 416 + x] = pixel.G / 255f;
            inputBuffer[0 * 3 * 416 * 416 + 2 * 416 * 416 + y * 416 + x] = pixel.B / 255f;
        }
    }
    return inputBuffer;
}

// 执行推理
var inputTensor = new DenseTensor<float>(PreprocessImage(输入图片对象), new[] { 1, 3, 416, 416 });
var inputParams = new List<NamedOnnxValue> { NamedOnnxValue.CreateFromTensor("data", inputTensor) };
using var inferOutputs = inferSession.Run(inputParams);
var resultTensor = inferOutputs.First().AsTensor<float>();

// 后处理逻辑可直接复用原有ML.NET项目中的代码:按阈值过滤置信度、NMS去重、映射训练时的自定义标签即可

步骤3:发布配置

  • 发布时目标运行时选择对应架构:linux-arm(32位系统)/linux-arm64(64位系统)
  • 若使用System.Drawing.Common处理图片,需提前在树莓派中安装依赖:sudo apt install libgdiplus

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:09:04