我搜索了解是否有一种技术可以在Android应用中保持训练有素的张量流模型(.pb文件)安全,但没有找到任何有用的东西。我发布了一个包含张量流模型的应用程序,我在训练集上构建了该模型。当我发布应用程序时,任何人都可以访问该模型并将其用于自己的应用程序。我想知道是否有办法保护我放在Android应用程序资产文件夹中的张量流模型?
这是我在Android中加载模型的方式:
TensorFlowInferenceInterface tf = new TensorFlowInferenceInterface();
tf.initializeTensorFlow(context.getAssets(), "file:///android_asset/model.pb");
我想在应用程序中嵌入加密的模型并在运行时解密它,但如果有人调试应用程序,它可以获取密码并解密它。而且,TensorFlowInferenceInterface类中只有一个initizeTensorFlow方法的实现只接受(AssetManager assetManager,String model)。可以写一个接受加密的一个,但它需要对Tensorflow C ++库进行一些修改。我想知道是否有更可靠的解决方案。有什么建议吗?
答案 0 :(得分:2)
如评论中所述,在本地运行模型时,没有真正安全的方法可以确保模型安全。话虽如此,您可以隐藏模型并使其比起.pb
更加困难。
除了name obfuscation provided by freeze_graph
之外,一个好的解决方案是使用tfcompile
来compile to model to a binary using XLA AOT compilation。它会生成一个二进制库,其中包含您的模型以及要使用的模型的头文件。这样一来,想要窥视您的网络的人就必须通过编译后的代码,对于大多数人来说,这是比读取.pb
文件更高的标准。