ios - 隐藏 CoreML 模型 (.mlmodel) 文件

标签 ios swift deep-learning coreml mlmodel

我正在从事一个项目,该项目涉及将 AI 对象检测功能添加到现有的 iOS 应用程序中。我能够训练自己的 DNN 模型并转换为 CoreML 的 .mlmodel 格式。

现在我需要将包含 .mlmodel 文件的工作转移给另一个开发人员进行集成。但是,我不希望他们在这个项目之外使用我训练有素的 .mlmodel 文件(根据契约(Contract))。有什么方法可以让我“隐藏”.mlmodel 文件,使它们只能用于这个特定的应用程序,而不能简单地复制和保存以用于其他用途?

我对 iOS 库和框架做了一些快速研究,但我仍然不确定这是否是我正在寻找的解决方案。

最佳答案

没有。一旦有人可以访问您的 mlmodel 文件或编译版本 mlmodelc,他们就可以在其他地方使用它。

例如,您可以从 App Store 下载应用程序,查看 IPA 文件,将其 mlmodelc 文件夹复制到您自己的应用程序中,然后立即开始使用该模型。

为防止外人窃取您的模型,您可以加密模型(就像加密任何其他文件一样),但这只有在您可以隐藏解密 key 时才有效。您还可以向模型添加一个自定义层,这样如果没有这个自定义层的代码,它就变得毫无用处。

但是,如果您雇用外部开发人员开发您的应用,那么这些解决方案将不起作用,因为他们出于必要需要访问这些解密 key 和源代码文件。

我不确定您希望其他开发人员做什么,但如果您不信任他们,那么:

  1. 找一个你信任的新开发者,
  2. 准备执行契约(Contract),或
  3. 给他们一个版本的 mlmodel 文件,其中权重由随机数代替。该模型仍然有效,但会给出无意义的预测。一旦该开发人员完成了他们的工作,就用真实的模型替换模型。显然,如果他们需要将模型用于他们需要做的任何工作,这不是一个好的解决方案。

关于ios - 隐藏 CoreML 模型 (.mlmodel) 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54369796/

相关文章:

iphone - 如何从代码中将 socket 与 xib 对象连接?

objective-c - iOS Core Data 如何使用谓词正确比较字符串文本?

python - Keras 替换输入层

ios - 如果我知道用户很可能很快会选择 View Controller ,我该如何提前加载它?

ios - Objective-c:编写私有(private)方法,被覆盖的可能性很小

arrays - 减少要在 Swift 中设置的数组

arrays - XCode 6 - SWIFT - 访问数组中的多个项目

ios - 修复 Command/bin/sh 失败,退出代码为 1

machine-learning - 使用 CNN 处理一维数据

machine-learning - 为什么每次运行深度学习程序时,我的最佳性能模型都会不同?