从远程源加载重型 CoreML 模型

Posted

技术标签:

【中文标题】从远程源加载重型 CoreML 模型【英文标题】:Load a heavy CoreML model from a remote source 【发布时间】:2021-08-15 12:08:34 【问题描述】:

我们有一个很重的 CoreML 模型(170MB~),我们想将它包含在我们的 ios 应用程序中。

由于我们不希望应用太大,因此我们创建了一个较小的模型(性能较低),我们可以直接将其包含在内,我们的目的是在应用启动时下载重模型并在两者之间切换下载重型模型时。

我们最初的想法是使用 Apple's CoreML Model Deployment 解决方案,但很快我们就发现它是不可能的,因为 Apple 要求 MLModel 存档最大为 50MB。 所以问题是,是否有替代解决方案来从远程源加载 CoreML 模型,类似于 Apple 的解决方案,如何实现它?

任何帮助将不胜感激。谢谢!

【问题讨论】:

【参考方案1】:

将 mlmodel 文件放在您拥有的服务器上,使用您喜欢的方法将其下载到应用程序的 Documents 文件夹中,创建下载文件的 URL,使用 MLModel.compileModel(:at) 编译它,初始化 MLModel(或自动生成的类) 使用编译后的模型。

【讨论】:

嗨,马蒂斯!同样,使用这种预加载机制,我在加载 MLModel 时甚至没有调用 predict 时会出现奇怪的内存峰值。只需初始化它(2-3GB RAM 不做任何事情)。模型重量小于 ***.com/questions/67968988/… 谢谢大家的帮助,没有它就不能在这里!

以上是关于从远程源加载重型 CoreML 模型的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 MLModel.compileModel 加载 CoreML 模型

多个按需动态加载的 CoreML 模型

CoreML:iOS:如何获取检测模型中心的 2D 坐标

Angular jqxSchedular源localData无法从远程绑定

Unity:从远程源解析 JSON 时出错

快速从 .npy 转换为 MLMultiArray 以进行 CoreML 预测