使用ort.js的create方法加载onnx模型报错:Fetch API cannot load file…… URL scheme “file“ is not supported.

本文介绍ORT.js在HTML及uniapp环境下加载ONNX模型时遇到的问题及其解决方案,通过使用XMLHttpRequest获取模型的ArrayBuffer来避免加载错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题

在html中使用ort.js通过路径的方式加载onnx模型时,如果项目不使用代理直接本地运行,会报以下错误;

Fetch API cannot load file:///storage/……/html/js/Onnxmodel/FSC.onnx. URL scheme "file" is not supported. at /html/js/ort.min.js:4502
11:46:39.103 Uncaught (in promise) TypeError: Failed to fetch at /html/js/ort.min.js:4502

另外,在uniapp中使用webview运行本地html项目并加载onnx模型时,也会出现此错误。

分析

由于使用代理的情况下,通过路径加载模型是没有问题的,初步分析是ort.js文件加载机制原因,具体不做深入探究;所以先通过ort.js文档查看create方法:InferenceSessionFactory Create

通过文档我们可以发现,create方法不仅支持通过路径加载模型,还可以通过buffer的形式

解决

由于create方法支持buffer,我们就可以通过获取模型的buffer值的方式来加载模型,具体代码如下

可以参考文档:Sending and Receiving Binary Data

 var session;
 var oReq = new XMLHttpRequest();
 oReq.open("GET", "../js/Onnxmodel/test.onnx", true);        // 加载模型,传入路径
 oReq.responseType = "arraybuffer";        // 设置加载的文件返回类型
 oReq.onload = function () {
     var arrayBuffer = oReq.response; // 加载完模型文件后获取到对应buffer
     ort.InferenceSession.create(arrayBuffer).then(function (model) {
         session = model;        // 加载模型后返回会话
     }).catch((err)=>{
         console.log("errrrrrrrrrrrrrrrrrrrr", err)
     });
 } 
 oReq.send(null);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值