# 模型混淆工具 `Linux` `模型混淆` `安全` `高级` [![查看源文件](../_static/logo_source.png)](https://gitee.com/mindspore/docs/blob/r1.2/tutorials/lite/source_zh_cn/use/obfuscator_tool.md) ## 概述 MindSpore Lite提供一个轻量级的离线模型混淆工具,可用于保护IOT或端侧设备上部署的模型文件的机密性。该工具通过对`ms`模型的网络结构和算子类型进行混淆,使得混淆后模型的计算逻辑变得难以理解。通过混淆工具生成的模型仍然是`ms`格式的,可直接通过Runtime推理框架执行推理(编译时需开启`mindspore/mindspore/lite/CMakeLists.txt`中的`ENABLE_MODEL_OBF`选项)。混淆会导致模型加载时延有轻微的增加,但对推理性能没有影响。 ## Linux环境使用说明 ### 环境准备 使用MindSpore Lite模型混淆工具,需要进行如下环境准备工作。 - 参考构建文档中的[环境要求](https://www.mindspore.cn/tutorial/lite/zh-CN/r1.2/use/build.html)和[编译示例](https://www.mindspore.cn/tutorial/lite/zh-CN/r1.2/use/build.html#id3)编译x86_64版本。 ### 参数说明 MindSpore Lite模型混淆工具提供了多种参数设置,用户可根据需要来选择使用。此外,用户可输入`./msobfuscator --help`获取实时帮助。 下面提供详细的参数说明。 | 参数 | 是否必选 | 参数说明 | 取值范围 | 默认值 | | --------------------------- | -------- | ------------------------------------------------------ | -------- | ------ | | `--help` | 否 | 打印全部帮助信息。 | - | - | | `--modelFile=` | 是 | 输入MindSpore Lite模型的路径。 | - | - | | `--outputFile=` | 是 | 输出模型的路径,不需加后缀,可自动生成`.ms`后缀。 | - | - | | `--obfDegree=` | 否 | 设置模型的混淆程度,该值越大,模型中新增的节点和边越多 | \(0,1] | 0.2 | > - 支持输入`.ms`模型。 > - 参数名和参数值之间用等号连接,中间不能有空格。 > - 模型混淆会导致模型规模增大,obfDegree的值越大,模型规模增大的越多。 下面选取了几个常用示例,说明转换命令的使用方法。 ### 使用示例 - 设置日志打印级别为INFO。 ```bat set GLOG_v=1 ``` > 日志级别:0代表DEBUG,1代表INFO,2代表WARNING,3代表ERROR。 - 以MindSpore Lite模型LeNet为例,执行混淆命令。 ```bash ./msobfuscator --modelFile=lenet.ms --outputFile=lenet_obf --obfDegree=0.5 ``` 结果显示为: ```text OBFUSCATE MODEL lenet.ms SUCCESS! ``` 这表示已经成功将MindSpore Lite模型混淆,获得新文件`lenet_obf.ms`。 - 如果转换命令执行失败,程序会返回一个[错误码](https://www.mindspore.cn/doc/api_cpp/zh-CN/r1.2/errorcode_and_metatype.html)。