|
|
@@ -20,7 +20,7 @@ PaddleX提供一个轻量级的模型加密部署方案,通过PaddleX内置的
|
|
|
|
|
|

|
|
|
|
|
|
-下面是对提供的C/C++加解密库内部实现的中文描述,参考以下步骤可以实现 一套加解密库 来适应自己的场景并通过内存数据load到paddlepaddle中(c/c++预测服务)
|
|
|
+下面是对提供的C/C++加解密库内部实现的中文描述,参考以下步骤可以实现一套加解密库来适应自己的场景并通过内存数据加载到Paddle Inference预测库中
|
|
|
|
|
|
> 1)考虑到加密的模型文件解密后需要从内存加载数据,使用conbine的模式生成模型文件和参数文件。
|
|
|
>
|
|
|
@@ -34,7 +34,7 @@ PaddleX提供一个轻量级的模型加密部署方案,通过PaddleX内置的
|
|
|
>
|
|
|
> 6)在模型解密环节根据加密后的文件读取相关的加密数据到内存中,对内存数据使用AES算法进行解密,注意解密时需要采用与加密时一致的加密算法和加密的模式,以及密钥的数据和长度,否则会导致解密后数据错误。
|
|
|
>
|
|
|
-> 7)集成模型预测的C/C++库,在具体使用paddlepaddle预测时一般涉及paddle::AnalysisConfig和paddle:Predictor,为了能够从内存数据中直接load解密后的模型明文数据(避免模型解密后创建临时文件),这里需要将AnalysisConfig的模型加载函数从SetModel替换为SetModelBuffer来实现从内存中加载模型数据。
|
|
|
+> 7)集成模型预测的C/C++库,在具体使用预测时一般涉及paddle::AnalysisConfig和paddle:Predictor,为了能够从内存数据中直接load解密后的模型明文数据(避免模型解密后创建临时文件),这里需要将AnalysisConfig的模型加载函数从SetModel替换为SetModelBuffer来实现从内存中加载模型数据。
|
|
|
|
|
|
需要注意的是,在本方案中,密钥集成在上层预测服务的代码中。故模型的安全强度等同于代码抵御逆向调试的强度。为了保护密钥和模型的安全,开发者还需对自己的应用进行加固保护。常见的应用加固手段有:代码混淆,二进制文件加壳 等等,亦或将加密机制更改为AES白盒加密技术来保护密钥。这类技术领域内有大量商业和开源产品可供选择,此处不一一赘述。
|
|
|
|
|
|
@@ -148,10 +148,10 @@ Windows:
|
|
|
|
|
|
使用`GPU`预测多个图片`\path\to\image_list.txt`,image_list.txt内容的格式如下:
|
|
|
```
|
|
|
-\path\to\images\xiaoduxiong1.jpeg
|
|
|
-\path\to\images\xiaoduxiong2.jpeg
|
|
|
+\\path\\to\\images\\xiaoduxiong1.jpeg
|
|
|
+\\path\\to\\images\\xiaoduxiong2.jpeg
|
|
|
...
|
|
|
-\path\to\images\xiaoduxiongn.jpeg
|
|
|
+\\path\\to\\images\\xiaoduxiongn.jpeg
|
|
|
```
|
|
|
```shell
|
|
|
.\paddlex_inference\detector.exe --model_dir=\path\to\models\inference_model --image_list=\path\to\images_list.txt --use_gpu=1 --save_dir=output --key=kLAl1qOs5uRbFt0/RrIDTZW2+tOf5bzvUIaHGF8lJ1c=
|