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

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

问题


在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的形式

image.png

解决


由于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);
目录
相关文章
|
9天前
|
JavaScript 前端开发 API
复习JavaScript中的数组API
这段代码介绍了JavaScript数组的几种实用方法:`fill`用于用固定值覆盖指定范围内的元素;`find`查找符合条件的第一个元素;`findIndex`获取该元素的索引;`sort`对数组排序,需提供比较函数以正确排序数字;结合`slice`与`sort`可在不改动原数组的情况下进行排序;`reverse`反转数组元素;利用`map`可创建新数组并替换其中的特定元素,同时保持原数组不变。
8 1
|
8天前
|
JavaScript 前端开发
js之DOM 文档对象模型
js之DOM 文档对象模型
8 1
js之DOM 文档对象模型
|
5天前
|
JavaScript 前端开发
JavaScript BOM 的概念(浏览器对象模型)
JavaScript BOM 的概念(浏览器对象模型)
12 1
|
6天前
|
存储 JavaScript API
Node.js中的异步API
【8月更文挑战第16天】
13 1
|
15天前
|
编解码 缓存 算法
Three.js如何降低3D模型的大小以便更快加载
为加快600MB的3D模型在Three.js中的加载速度,可采用多种压缩方法:1) 减少顶点数,使用简化工具或LOD技术;2) 压缩纹理,降低分辨率或转为KTX2等格式;3) 采用高效文件格式如glTF 2.0及draco压缩;4) 合并材质减少数量;5) 利用Three.js内置优化如BufferGeometry;6) 按需分批加载模型;7) Web Workers后台处理;8) 多模型合并减少绘制;9) 使用Texture Atlas及专业优化工具。示例代码展示了使用GLTFLoader加载优化后的模型。
62 12
|
9天前
|
XML JavaScript 前端开发
JavaScript中的DOM解析器DOMParser api的讲解
`DOMParser`能将XML或HTML源码字符串解析成DOM `Document`。通过`new DOMParser()`创建实例,使用`.parseFromString(string, type)`方法进行解析,其中`string`为待解析的字符串,`type`指定解析类型如`text/html`或`text/xml`等,返回一个`Document`对象。例如,可解析包含`<p>666</p>`的字符串并获取其文本内容`666`。
13 1
|
19天前
|
机器学习/深度学习 JavaScript
node.js实现遍历所有文件夹里面的js文件,提取所有的url
node.js实现遍历所有文件夹里面的js文件,提取所有的url
|
4天前
|
JavaScript 前端开发 定位技术
百度地图JavaScript API v2.0创建地图
百度地图JavaScript API v2.0创建地图
7 0
|
5天前
|
JavaScript 前端开发
js之DOM 文档对象模型
js之DOM 文档对象模型
|
26天前
|
存储 JavaScript 安全
Node中的AsyncLocalStorage 使用问题之生产环境中使用async_hooks的问题如何解决
Node中的AsyncLocalStorage 使用问题之生产环境中使用async_hooks的问题如何解决