Przeglądaj źródła

mv dygraph to home directory

FlyingQianMM 4 lat temu
rodzic
commit
ecefcd9c2b
100 zmienionych plików z 325 dodań i 513 usunięć
  1. 6 6
      .gitmodules
  2. 0 0
      PaddleClas
  3. 0 0
      PaddleDetection
  4. 0 0
      PaddleSeg
  5. 66 141
      README.md
  6. 191 304
      deploy/cpp/CMakeLists.txt
  7. 61 59
      deploy/cpp/CMakeSettings.json
  8. 0 0
      deploy/cpp/README.md
  9. 1 3
      deploy/cpp/cmake/yaml-cpp.cmake
  10. 0 0
      deploy/cpp/demo/batch_infer.cpp
  11. 0 0
      deploy/cpp/demo/model_infer.cpp
  12. 0 0
      deploy/cpp/demo/multi_gpu_model_infer.cpp
  13. 0 0
      deploy/cpp/demo/onnx_tensorrt/CMakeLists.txt
  14. 0 0
      deploy/cpp/demo/onnx_tensorrt/model_infer.cpp
  15. 0 0
      deploy/cpp/demo/onnx_triton/CMakeLists.txt
  16. 0 0
      deploy/cpp/demo/onnx_triton/model_infer.cpp
  17. 0 0
      deploy/cpp/demo/tensorrt_infer.cpp
  18. 0 0
      deploy/cpp/docs/apis/model.md
  19. 0 0
      deploy/cpp/docs/apis/yaml.md
  20. 0 0
      deploy/cpp/docs/compile/paddle/jetson.md
  21. 0 0
      deploy/cpp/docs/compile/paddle/linux.md
  22. 0 0
      deploy/cpp/docs/compile/paddle/windows.md
  23. 0 0
      deploy/cpp/docs/compile/tensorrt/trt.md
  24. 0 0
      deploy/cpp/docs/compile/triton/docker.md
  25. 0 0
      deploy/cpp/docs/demo/decrypt_infer.md
  26. 0 0
      deploy/cpp/docs/demo/model_infer.md
  27. 0 0
      deploy/cpp/docs/demo/multi_gpu_model_infer.md
  28. 0 0
      deploy/cpp/docs/demo/tensorrt_infer.md
  29. 0 0
      deploy/cpp/docs/images/tensorrt.png
  30. 0 0
      deploy/cpp/docs/images/vs2019_step1.png
  31. 0 0
      deploy/cpp/docs/images/vs2019_step2.png
  32. 0 0
      deploy/cpp/docs/images/vs2019_step3.png
  33. 0 0
      deploy/cpp/docs/images/vs2019_step4.png
  34. 0 0
      deploy/cpp/docs/images/vs2019_step5.png
  35. 0 0
      deploy/cpp/docs/images/vs2019_step6.png
  36. 0 0
      deploy/cpp/docs/images/vs2019_step7.png
  37. 0 0
      deploy/cpp/docs/manufacture_sdk/README.md
  38. 0 0
      deploy/cpp/docs/manufacture_sdk/images/pipeline_arch.png
  39. 0 0
      deploy/cpp/docs/manufacture_sdk/images/pipeline_det.png
  40. 0 0
      deploy/cpp/docs/models/paddleclas.md
  41. 0 0
      deploy/cpp/docs/models/paddledetection.md
  42. 0 0
      deploy/cpp/docs/models/paddleseg.md
  43. 0 0
      deploy/cpp/docs/models/paddlex.md
  44. 0 0
      deploy/cpp/encryption/CMakeLists.txt
  45. 0 0
      deploy/cpp/encryption/README.md
  46. 0 0
      deploy/cpp/encryption/build.bat
  47. 0 0
      deploy/cpp/encryption/build.sh
  48. 0 0
      deploy/cpp/encryption/build_clean.bat
  49. 0 0
      deploy/cpp/encryption/build_clean.sh
  50. 0 0
      deploy/cpp/encryption/export_rule.map
  51. 0 0
      deploy/cpp/encryption/include/model_code.h
  52. 0 0
      deploy/cpp/encryption/include/paddle_model_decrypt.h
  53. 0 0
      deploy/cpp/encryption/include/paddle_model_encrypt.h
  54. 0 0
      deploy/cpp/encryption/include/paddle_stream_decrypt.h
  55. 0 0
      deploy/cpp/encryption/sample/paddle_encrypt_tool.cpp
  56. 0 0
      deploy/cpp/encryption/sample/paddle_safe_stream_test.cpp
  57. 0 0
      deploy/cpp/encryption/src/paddle_model_decrypt.cpp
  58. 0 0
      deploy/cpp/encryption/src/paddle_model_encrypt.cpp
  59. 0 0
      deploy/cpp/encryption/src/paddle_stream_decrypt.cpp
  60. 0 0
      deploy/cpp/encryption/util/include/constant/constant_model.h
  61. 0 0
      deploy/cpp/encryption/util/include/crypto/aes_gcm.h
  62. 0 0
      deploy/cpp/encryption/util/include/crypto/base64.h
  63. 0 0
      deploy/cpp/encryption/util/include/crypto/basic.h
  64. 0 0
      deploy/cpp/encryption/util/include/crypto/sha256_utils.h
  65. 0 0
      deploy/cpp/encryption/util/include/io_utils.h
  66. 0 0
      deploy/cpp/encryption/util/include/log.h
  67. 0 0
      deploy/cpp/encryption/util/include/system_utils.h
  68. 0 0
      deploy/cpp/encryption/util/src/crypto/aes_gcm.cpp
  69. 0 0
      deploy/cpp/encryption/util/src/crypto/base64.cpp
  70. 0 0
      deploy/cpp/encryption/util/src/crypto/basic.cpp
  71. 0 0
      deploy/cpp/encryption/util/src/crypto/sha256_utils.cpp
  72. 0 0
      deploy/cpp/encryption/util/src/io_utils.cpp
  73. 0 0
      deploy/cpp/encryption/util/src/system_utils.cpp
  74. 0 0
      deploy/cpp/model_deploy/common/include/base_model.h
  75. 0 0
      deploy/cpp/model_deploy/common/include/base_postprocess.h
  76. 0 0
      deploy/cpp/model_deploy/common/include/base_preprocess.h
  77. 0 0
      deploy/cpp/model_deploy/common/include/deploy_delacre.h
  78. 0 0
      deploy/cpp/model_deploy/common/include/model_factory.h
  79. 0 0
      deploy/cpp/model_deploy/common/include/multi_gpu_model.h
  80. 0 0
      deploy/cpp/model_deploy/common/include/output_struct.h
  81. 0 0
      deploy/cpp/model_deploy/common/include/paddle_deploy.h
  82. 0 0
      deploy/cpp/model_deploy/common/include/transforms.h
  83. 0 0
      deploy/cpp/model_deploy/common/src/base_preprocess.cpp
  84. 0 0
      deploy/cpp/model_deploy/common/src/model_factory.cpp
  85. 0 0
      deploy/cpp/model_deploy/common/src/paddle_deploy.cpp
  86. 0 0
      deploy/cpp/model_deploy/common/src/transforms.cpp
  87. 0 0
      deploy/cpp/model_deploy/engine/include/engine.h
  88. 0 0
      deploy/cpp/model_deploy/engine/include/engine_config.h
  89. 0 0
      deploy/cpp/model_deploy/engine/include/ppinference_engine.h
  90. 0 0
      deploy/cpp/model_deploy/engine/include/tensorrt_buffers.h
  91. 0 0
      deploy/cpp/model_deploy/engine/include/tensorrt_engine.h
  92. 0 0
      deploy/cpp/model_deploy/engine/include/triton_engine.h
  93. 0 0
      deploy/cpp/model_deploy/engine/src/ppinference_engine.cpp
  94. 0 0
      deploy/cpp/model_deploy/engine/src/tensorrt_engine.cpp
  95. 0 0
      deploy/cpp/model_deploy/engine/src/triton_engine.cpp
  96. 0 0
      deploy/cpp/model_deploy/paddlex/include/x_model.h
  97. 0 0
      deploy/cpp/model_deploy/paddlex/include/x_postprocess.h
  98. 0 0
      deploy/cpp/model_deploy/paddlex/include/x_preprocess.h
  99. 0 0
      deploy/cpp/model_deploy/paddlex/include/x_standard_config.h
  100. 0 0
      deploy/cpp/model_deploy/paddlex/src/x_model.cpp

+ 6 - 6
.gitmodules

@@ -1,9 +1,9 @@
-[submodule "dygraph/PaddleClas"]
-	path = dygraph/PaddleClas
+[submodule "PaddleClas"]
+	path = PaddleClas
 	url = https://github.com/PaddlePaddle/PaddleClas.git
-[submodule "dygraph/PaddleDetection"]
-	path = dygraph/PaddleDetection
+[submodule "PaddleDetection"]
+	path = PaddleDetection
 	url = https://github.com/PaddlePaddle/PaddleDetection.git
-[submodule "dygraph/PaddleSeg"]
-	path = dygraph/PaddleSeg
+[submodule "PaddleSeg"]
+	path = PaddleSeg
 	url = https://github.com/PaddlePaddle/PaddleSeg.git

+ 0 - 0
dygraph/PaddleClas → PaddleClas


+ 0 - 0
dygraph/PaddleDetection → PaddleDetection


+ 0 - 0
dygraph/PaddleSeg → PaddleSeg


+ 66 - 141
README.md

@@ -1,159 +1,114 @@
-简体中文| [English](./README_en.md)
-
+# PaddleX全面升级动态图,2.0.0-rc3发布!
 
 
 
 <p align="center">
-  <img src="./docs/gui/images/paddlex.png" width="360" height ="55" alt="PaddleX" align="middle" />
+  <img src="../docs/gui/images/paddlex.png" width="360" height ="55" alt="PaddleX" align="middle" />
 </p>
  <p align= "center"> PaddleX -- 飞桨全流程开发工具,以低代码的形式支持开发者快速实现产业实际项目落地 </p>
 
-[![License](https://img.shields.io/badge/license-Apache%202-red.svg)](LICENSE) [![Version](https://img.shields.io/github/release/PaddlePaddle/PaddleX.svg)](https://github.com/PaddlePaddle/PaddleX/releases) ![python version](https://img.shields.io/badge/python-3.6+-orange.svg) ![support os](https://img.shields.io/badge/os-linux%2C%20win%2C%20mac-yellow.svg)
- ![QQGroup](https://img.shields.io/badge/QQ_Group-1045148026-52B6EF?style=social&logo=tencent-qq&logoColor=000&logoWidth=20)
-
-
-## PaddleX全面升级动态图,动态图版本位于[dygraph](https://github.com/PaddlePaddle/PaddleX/tree/develop/dygraph)中,欢迎用户点击体验
-
-
-## :heart: 重磅功能升级提醒
-* 全新发布Manufacture SDK,提供工业级多端多平台部署加速的预编译飞桨部署开发包(SDK),通过配置业务逻辑流程文件即可以低代码方式快速完成推理部署,[欢迎体验](https://github.com/PaddlePaddle/PaddleX/tree/develop/dygraph/deploy/cpp/docs/manufacture_sdk)。
-
-
-* PaddleX部署全面升级,支持飞桨视觉套件PaddleDetection、PaddleClas、PaddleSeg、PaddleX的统一部署能力,[欢迎体验](https://github.com/PaddlePaddle/PaddleX/tree/develop/dygraph/deploy/cpp)。
-## :factory: 重要活动提醒
-
-✨直播课预告✨  
-
-* 直播链接:http://live.bilibili.com/21689802
-
-* [点击查看回访录播](https://aistudio.baidu.com/aistudio/education/group/info/24531)
+## :heart:重磅功能升级
+### 全新发布Manufacture SDK,提供工业级多端多平台部署加速的预编译飞桨部署开发包(SDK),通过配置业务逻辑流程文件即可以低代码方式快速完成推理部署。[欢迎体验](https://github.com/PaddlePaddle/PaddleX/tree/develop/dygraph/deploy/cpp/docs/manufacture_sdk)
 
+### PaddleX部署全面升级,支持飞桨视觉套件PaddleDetection、PaddleClas、PaddleSeg、PaddleX的端到端统一部署能力。[欢迎体验](https://github.com/PaddlePaddle/PaddleX/tree/develop/dygraph/deploy/cpp)
 
-* Day① 6.28 20:15-21:30
-   * 主题:工业算法选型及调优策略
 
-* Day② 6.29 20:15-21:30
-    * 主题:安防及智慧城市典型方案
-    * [表计检测案例](https://paddlex.readthedocs.io/zh_CN/develop/examples/meter_reader.html)
+### 发布产业实践案例:钢筋计数、缺陷检测、机械手抓取、工业表计读数、Windows系统下使用C#语言部署。[欢迎体验](https://github.com/PaddlePaddle/PaddleX/tree/develop/dygraph/examples)
 
+### 升级PaddleX GUI,支持30系列显卡、新增模型PP-YOLO V2、PP-YOLO Tiny 、BiSeNetV2。[欢迎体验](https://github.com/FlyingQianMM/PaddleX/blob/develop_qh/dygraph/docs/install.md#2-padldex-gui%E5%BC%80%E5%8F%91%E6%A8%A1%E5%BC%8F%E5%AE%89%E8%A3%85)
 
-* Day③ 6.30 20:15-21:30
-   * 主题:产业高性能高效部署方案
-
-## 欢迎大家扫码入群交流:
-
-  <p align="center">
-    <img src="./docs/images/weichat.png" width="200" height ="200" alt="QR" align="middle" />
-  </p>
-
+[![License](https://img.shields.io/badge/license-Apache%202-red.svg)](LICENSE) [![Version](https://img.shields.io/github/release/PaddlePaddle/PaddleX.svg)](https://github.com/PaddlePaddle/PaddleX/releases) ![python version](https://img.shields.io/badge/python-3.6+-orange.svg) ![support os](https://img.shields.io/badge/os-linux%2C%20win%2C%20mac-yellow.svg)
+ ![QQGroup](https://img.shields.io/badge/QQ_Group-1045148026-52B6EF?style=social&logo=tencent-qq&logoColor=000&logoWidth=20)
 
-----------------------------------------------------------------------
 :hugs: PaddleX 集成飞桨智能视觉领域**图像分类**、**目标检测**、**语义分割**、**实例分割**任务能力,将深度学习开发全流程从**数据准备**、**模型训练与优化**到**多端部署**端到端打通,并提供**统一任务API接口**及**图形化开发界面Demo**。开发者无需分别安装不同套件,以**低代码**的形式即可快速完成飞桨全流程开发。
 
 :factory: **PaddleX** 经过**质检**、**安防**、**巡检**、**遥感**、**零售**、**医疗**等十多个行业实际应用场景验证,沉淀产业实际经验,**并提供丰富的案例实践教程**,全程助力开发者产业实践落地。
 
+![](../docs/gui/images/paddlexoverview.png)
 
 
-:heart: **您可以前往  [完整PaddleX在线使用文档目录](https://paddlex.readthedocs.io/zh_CN/develop/index.html)  查看完整*Read the Doc* 格式的文档,获得更好的阅读体验**:heart:
-
-
-
-![](./docs/gui/images/paddlexoverview.png)
-
+## PaddleX 使用文档
 
 
-## 安装
+### 1. 快速上手PaddleX
 
-**PaddleX提供三种开发模式,满足用户的不同需求:**
+* [快速安装PaddleX](./docs/install.md)
+  * [PaddleX API开发模式安装](./docs/install.md#1-paddlex-api开发模式安装)
+  * [PadldeX GUI开发模式安装](./docs/install.md#2-padldex-gui开发模式安装)
+  * [PaddleX Restful开发模式安装](./docs/install.md#3-paddlex-restful开发模式安装)
+* [10分钟快速上手使用](./docs/quick_start.md)
+* [AIStudio在线项目示例](https://aistudio.baidu.com/aistudio/projectdetail/2159977)
 
-1. **Python开发模式:**
 
-   通过简洁易懂的Python API,在兼顾功能全面性、开发灵活性、集成方便性的基础上,给开发者最流畅的深度学习开发体验。<br>
+### 2. 数据准备
 
-  **前置依赖**
-> - paddlepaddle >= 1.8.4
-> - python >= 3.6
-> - cython
-> - pycocotools
+* [数据格式说明](./docs/data/format/README.md)
+* [标注工具LabelMe的安装和启动](./docs/data/annotation/labelme.md)
+* [数据标注](./docs/data/annotation/README.md)
+  * [手机拍照图片旋转](./docs/data/annotation/README.md)
+  * [开始数据标注](./docs/data/annotation/README.md)
+* [数据格式转换](./docs/data/convert.md)
+* [数据划分](./docs/data/split.md)
 
-```
-pip install paddlex -i https://mirror.baidu.com/pypi/simple
-```
-详细安装方法请参考[PaddleX安装](https://paddlex.readthedocs.io/zh_CN/develop/install.html)
 
+### 3. 模型训练/评估/预测
 
-2. **Padlde GUI模式:**
+* **PaddleX API开发模式:**
 
-   无代码开发的可视化客户端,应用Paddle API实现,使开发者快速进行产业项目验证,并为用户开发自有深度学习软件/应用提供参照。
+    * [API文档](./docs/apis)
+      * [数据集读取API](./docs/apis/datasets.md)
+      * [数据预处理和数据增强API](./docs/apis/transforms/transforms.md)
+      * [模型API/模型加载API](./docs/apis/models/README.md)
+      * [预测结果可视化API](./docs/apis/visualize.md)
+    * [模型训练与参数调整](tutorials/train)
+      * [模型训练](tutorials/train)
+      * [训练参数调整](./docs/parameters.md)
+    * [VisualDL可视化训练指标](./docs/visualdl.md)
+    * [加载训好的模型完成预测及预测结果可视化](./docs/apis/prediction.md)
 
-- 前往[PaddleX官网](https://www.paddlepaddle.org.cn/paddle/paddlex),申请下载PaddleX GUI一键绿色安装包。
+* **PaddleX GUI开发模式:**
 
-- 前往[PaddleX GUI使用教程](./docs/gui/how_to_use.md)了解PaddleX GUI使用详情。
+    - [图像分类](https://www.bilibili.com/video/BV1nK411F7J9?from=search&seid=3068181839691103009)
+    - [目标检测](https://www.bilibili.com/video/BV1HB4y1A73b?from=search&seid=3068181839691103009)
+    - [实例分割](https://www.bilibili.com/video/BV1M44y1r7s6?from=search&seid=3068181839691103009)
+    - [语义分割](https://www.bilibili.com/video/BV1qQ4y1Z7co?from=search&seid=3068181839691103009)
 
-- [PaddleX GUI安装环境说明](./docs/gui/download.md)
 
-3. **PaddleX Restful:**  
-  使用基于RESTful API开发的GUI与Web Demo实现远程的深度学习全流程开发;同时开发者也可以基于RESTful API开发个性化的可视化界面
-- 前往[PaddleX RESTful API使用教程](./docs/gui/restful/introduction.md)  
+### 4. 模型剪裁和量化
 
+- [模型剪裁](tutorials/slim/prune)
+- [模型量化](tutorials/slim/quantize)
 
-## 产品模块说明
+### 5. 模型部署
 
-- **数据准备**:兼容ImageNet、VOC、COCO等常用数据协议,同时与Labelme、精灵标注助手、[EasyData智能数据服务平台](https://ai.baidu.com/easydata/)等无缝衔接,全方位助力开发者更快完成数据准备工作。
+- [部署模型导出](./docs/apis/export_model.md)
+- [PaddleX Manufacture SDK低代码高效部署](./deploy/cpp/docs/manufacture_sdk)
+- [PaddleX/PaddleClas/PaddleDetection/PaddleSeg端到端高性能统一部署](./deploy/cpp)
 
-- **数据预处理及增强**:提供极简的图像预处理和增强方法--Transforms,适配imgaug图像增强库,支持**上百种数据增强策略**,是开发者快速缓解小样本数据训练的问题。
+### 6. 产业级应用示例
 
-- **模型训练**:集成[PaddleClas](https://github.com/PaddlePaddle/PaddleClas), [PaddleDetection](https://github.com/PaddlePaddle/PaddleDetection), [PaddleSeg](https://github.com/PaddlePaddle/PaddleSeg)视觉开发套件,提供大量精选的、经过产业实践的高质量预训练模型,使开发者更快实现工业级模型效果。
+- [钢筋计数](examples/rebar_count)
+- [缺陷检测](examples/defect_detection)
+- [机械手抓取](examples/robot_grab)
+- [工业表计读数](examples/meter_reader)
+- [Windows系统下使用C#语言部署](examples/C%23_deploy)
 
-- **模型调优**:内置模型可解释性模块、[VisualDL](https://github.com/PaddlePaddle/VisualDL)可视化分析工具。使开发者可以更直观的理解模型的特征提取区域、训练过程参数变化,从而快速优化模型。
+### 7. 附录
 
-- **多端安全部署**:内置[PaddleSlim](https://github.com/PaddlePaddle/PaddleSlim)模型压缩工具和**模型加密部署模块**,与飞桨原生预测库Paddle Inference及高性能端侧推理引擎[Paddle Lite](https://github.com/PaddlePaddle/Paddle-Lite) 无缝打通,使开发者快速实现模型的多端、高性能、安全部署。
+- [PaddleX模型库](./docs/appendix/model_zoo.md)
+- [PaddleX指标及日志](./docs/appendix/metrics.md)
+- [无联网模型训练](./docs/how_to_offline_run.md)
 
+## 版本更新
 
+- **2021.07.06 v2.0.0-rc3**
 
-## 完整使用文档及API说明
+  PaddleX部署全面升级,支持飞桨视觉套件PaddleDetection、PaddleClas、PaddleSeg、PaddleX的端到端统一部署能力。全新发布Manufacture SDK,提供工业级多端多平台部署加速的预编译飞桨部署开发包(SDK),通过配置业务逻辑流程文件即可以低代码方式快速完成推理部署。发布产业实践案例:钢筋计数、缺陷检测、机械手抓取、工业表计读数、Windows系统下使用C#语言部署。升级PaddleX GUI,支持30系列显卡、新增模型PP-YOLO V2、PP-YOLO Tiny 、BiSeNetV2。详细内容请参考[版本更新文档](./docs/CHANGELOG.md)
 
-- [完整PaddleX在线使用文档目录](https://paddlex.readthedocs.io/zh_CN/develop/index.html):heart:
+- **2021.05.19 v2.0.0-rc**
 
-- [10分钟快速上手系列教程](https://paddlex.readthedocs.io/zh_CN/develop/quick_start.html)
-- [PaddleX模型训练教程集合](https://paddlex.readthedocs.io/zh_CN/develop/train/index.html)
-- [PaddleX API接口说明](https://paddlex.readthedocs.io/zh_CN/develop/apis/index.html)
-- [PaddleX RESTful API说明](https://paddlex.readthedocs.io/zh_CN/develop/gui/restful/introduction.html)
+  全面支持飞桨2.0动态图,更易用的开发模式。 目标检测任务新增PP-YOLOv2, COCO test数据集精度达到49.5%、V100预测速度达到68.9 FPS。目标检测任务新增4.2MB的超轻量级模型PP-YOLO tiny。语义分割任务新增实时分割模型BiSeNetV2。C++部署模块全面升级,PaddleInference部署适配2.0预测库,支持飞桨PaddleDetection、PaddleSeg、PaddleClas以及PaddleX的模型部署;新增基于PaddleInference的GPU多卡预测;GPU部署新增基于ONNX的的TensorRT高性能加速引擎部署方式;GPU部署新增基于ONNX的Triton服务化部署方式。详情内容请参考[版本更新文档](./docs/CHANGELOG.md)。
 
-### 在线项目示例
-
-为了使开发者更快掌握PaddleX API,我们创建了一系列完整的示例教程,您可通过AIStudio一站式开发平台,快速在线运行PaddleX的项目。
-
-- [PaddleX快速上手CV模型训练](https://aistudio.baidu.com/aistudio/projectdetail/450925)
-- [PaddleX快速上手——MobileNetV3-ssld 化妆品分类](https://aistudio.baidu.com/aistudio/projectdetail/450220)
-- [PaddleX快速上手——Faster-RCNN AI识虫](https://aistudio.baidu.com/aistudio/projectdetail/439888)
-- [PaddleX快速上手——DeepLabv3+ 视盘分割](https://aistudio.baidu.com/aistudio/projectdetail/440197)
-
-## 全流程产业应用案例:star:
-
-(continue to be updated)
-
-* 工业巡检:
-  * [工业表计读数](https://paddlex.readthedocs.io/zh_CN/develop/examples/meter_reader.html)
-* 工业质检:
-  - [铝材表面缺陷检测](https://paddlex.readthedocs.io/zh_CN/develop/examples/industrial_quality_inspection/README.html)
-  - [钢筋计数(动态图)](https://github.com/PaddlePaddle/PaddleX/tree/develop/dygraph/examples/rebar_count)
-  - [镜头缺陷检测(动态图)](https://github.com/PaddlePaddle/PaddleX/tree/develop/dygraph/examples/defect_detection)
-  - [机械手抓取(动态图)](https://github.com/PaddlePaddle/PaddleX/tree/develop/dygraph/examples/robot_grab)
-* 卫星遥感:
-  * [RGB遥感影像分割](https://paddlex.readthedocs.io/zh_CN/develop/examples/remote_sensing.html)
-  * [多通道遥感影像分割](https://paddlex.readthedocs.io/zh_CN/develop/examples/multi-channel_remote_sensing/README.html)
-  * [地块变化检测](https://paddlex.readthedocs.io/zh_CN/develop/examples/change_detection.html)
-* [人像分割](https://paddlex.readthedocs.io/zh_CN/develop/examples/human_segmentation.html)
-* 模型多端安全部署
-  * [CPU/GPU(加密)部署](https://paddlex.readthedocs.io/zh_CN/develop/deploy/server/index.html)
-  * [OpenVINO加速部署](https://paddlex.readthedocs.io/zh_CN/develop/deploy/openvino/index.html)
-  * [Nvidia Jetson开发板部署](https://paddlex.readthedocs.io/zh_CN/develop/deploy/jetson/index.html)
-  * [树莓派部署](https://paddlex.readthedocs.io/zh_CN/develop/deploy/raspberry/index.html)
-
-* [模型可解释性](https://paddlex.readthedocs.io/zh_CN/develop/appendix/interpret.html)
-
-## :question:[FAQ](./docs/gui/faq.md):question:
 
 ## 交流与反馈
 
@@ -162,40 +117,10 @@ pip install paddlex -i https://mirror.baidu.com/pypi/simple
 - PaddleX用户交流群:957286141 (手机QQ扫描如下二维码快速加入)  
 
   <p align="center">
-    <img src="./docs/gui/images/QR2.jpg" width="250" height ="360" alt="QR" align="middle" />
+    <img src="../docs/gui/images/QR2.jpg" width="250" height ="360" alt="QR" align="middle" />
   </p>
 
 
-
-## 更新日志
-
-> [历史版本及更新内容](https://paddlex.readthedocs.io/zh_CN/develop/change_log.html)
-- **2020.09.07 v1.2.0**
-
-  新增产业最实用目标检测模型PP-YOLO,FasterRCNN、MaskRCNN、YOLOv3、DeepLabv3p等模型新增内置COCO数据集预训练模型,适用于小模型精调。新增多种Backbone,优化体积及预测速度。优化OpenVINO、PaddleLite Android、服务端C++预测部署方案,新增树莓派部署方案等。
-
-- **2020.07.12 v1.1.0**
-
-  新增人像分割、工业标记读数案例。模型新增HRNet、FastSCNN、FasterRCNN,实例分割MaskRCNN新增Backbone HRNet。集成X2Paddle,PaddleX所有分类模型和语义分割模型支持导出为ONNX协议。新增模型加密Windows平台支持。新增Jetson、Paddle Lite模型部署预测方案。
-
-- **2020.05.20 v1.0.0**
-
-  新增C++和Python部署,模型加密部署,分类模型OpenVINO部署。新增模型可解释性接口
-
-- **2020.05.17 v0.1.8**
-
-  新增EasyData平台数据标注格式,支持imgaug数据增强库的pixel-level算子
-
-## 近期活动更新
-
-- 2020.12.16
-
-  《直击深度学习部署最后一公里 C#软件部署实战》b站直播中奖用户名单请点击[PaddleX直播中奖名单](./docs/luckydraw.md)查看~
-
-- 2020.12.09
-
-  往期直播《直击深度学习部署最后一公里 目标检测兴趣小组》回放链接:https://www.bilibili.com/video/BV1rp4y1q7ap?from=search&seid=105037779997274685
-
 ## :hugs: 贡献代码:hugs:
 
 我们非常欢迎您为PaddleX贡献代码或者提供使用建议。如果您可以修复某个issue或者增加一个新功能,欢迎给我们提交Pull Requests。

+ 191 - 304
deploy/cpp/CMakeLists.txt

@@ -1,198 +1,91 @@
 cmake_minimum_required(VERSION 3.0)
-project(PaddleX CXX C)
+project(PaddleDeploy CXX C)
 
 option(WITH_MKL        "Compile demo with MKL/OpenBlas support,defaultuseMKL."          ON)
-option(WITH_GPU        "Compile demo with GPU/CPU, default use CPU."                    ON)
+option(WITH_GPU        "Compile demo with GPU/CPU, default use CPU."                    OFF)
 if (NOT WIN32)
     option(WITH_STATIC_LIB "Compile demo with static/shared library, default use static."   OFF)
 else()
     option(WITH_STATIC_LIB "Compile demo with static/shared library, default use static."   ON)
 endif()
 option(WITH_TENSORRT "Compile demo with TensorRT."   OFF)
-option(WITH_ENCRYPTION "Compile demo with encryption tool."   OFF)
+option(WITH_ENCRYPTION "Compile demo with ENCRYPTION."   OFF)
 
 SET(TENSORRT_DIR "" CACHE PATH "Location of libraries")
 SET(PADDLE_DIR "" CACHE PATH "Location of libraries")
 SET(OPENCV_DIR "" CACHE PATH "Location of libraries")
-SET(ENCRYPTION_DIR "" CACHE PATH "Location of libraries")
 SET(CUDA_LIB "" CACHE PATH "Location of libraries")
+SET(OPENSSL_DIR "" CACHE PATH "Location of libraries")
+
+SET(PROJECT_ROOT_DIR  "." CACHE PATH  "root directory of project.")
 
 if (NOT WIN32)
     set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
     set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
     set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/demo)
 else()
-    set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/paddlex_inference)
-    set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/paddlex_inference)
-    set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/paddlex_inference)
-endif()
-
-if (NOT WIN32)
-    SET(YAML_BUILD_TYPE ON CACHE BOOL "yaml build shared library.")
-else()
-    SET(YAML_BUILD_TYPE OFF CACHE BOOL "yaml build shared library.")
+    set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/paddle_deploy)
+    set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/paddle_deploy)
+    set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/paddle_deploy)
+    add_definitions(-DPADDLEX_DEPLOY)
 endif()
-include(cmake/yaml-cpp.cmake)
 
+#source
 include_directories("${CMAKE_SOURCE_DIR}/")
+link_directories("${CMAKE_CURRENT_BINARY_DIR}")
+
+#yaml-cpp
+if(WIN32)
+  SET(YAML_BUILD_SHARED_LIBS OFF CACHE BOOL "yaml build shared library.")
+else()
+  SET(YAML_BUILD_SHARED_LIBS ON CACHE BOOL "yaml build shared library.")
+endif(WIN32)
+include(${PROJECT_ROOT_DIR}/cmake/yaml-cpp.cmake)
 include_directories("${CMAKE_CURRENT_BINARY_DIR}/ext/yaml-cpp/src/ext-yaml-cpp/include")
 link_directories("${CMAKE_CURRENT_BINARY_DIR}/ext/yaml-cpp/lib")
 
-macro(safe_set_static_flag)
-    foreach(flag_var
-        CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
-        CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
-      if(${flag_var} MATCHES "/MD")
-        string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
-      endif(${flag_var} MATCHES "/MD")
-    endforeach(flag_var)
-endmacro()
-
-
-if (WITH_ENCRYPTION)
-  if (NOT (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64"))
-    add_definitions( -DWITH_ENCRYPTION=${WITH_ENCRYPTION})
-  endif()
-endif()
-
-if (WITH_MKL)
-    ADD_DEFINITIONS(-DUSE_MKL)
-endif()
-
+#paddle inference
 if (NOT DEFINED PADDLE_DIR OR ${PADDLE_DIR} STREQUAL "")
     message(FATAL_ERROR "please set PADDLE_DIR with -DPADDLE_DIR=/path/paddle_influence_dir")
 endif()
 
-if (NOT (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64"))
-  if (NOT DEFINED OPENCV_DIR OR ${OPENCV_DIR} STREQUAL "")
-    message(FATAL_ERROR "please set OPENCV_DIR with -DOPENCV_DIR=/path/opencv")
-  endif()
-endif()
-
-include_directories("${CMAKE_SOURCE_DIR}/")
-include_directories("${PADDLE_DIR}/")
+#paddle inference third party
+include_directories("${PADDLE_DIR}")
 include_directories("${PADDLE_DIR}/third_party/install/protobuf/include")
 include_directories("${PADDLE_DIR}/third_party/install/glog/include")
 include_directories("${PADDLE_DIR}/third_party/install/gflags/include")
 include_directories("${PADDLE_DIR}/third_party/install/xxhash/include")
-if (EXISTS "${PADDLE_DIR}/third_party/install/snappy/include")
-    include_directories("${PADDLE_DIR}/third_party/install/snappy/include")
-endif()
-if(EXISTS "${PADDLE_DIR}/third_party/install/snappystream/include")
-    include_directories("${PADDLE_DIR}/third_party/install/snappystream/include")
-endif()
-# zlib does not exist in 1.8.1
-if (EXISTS "${PADDLE_DIR}/third_party/install/zlib/include")
-    include_directories("${PADDLE_DIR}/third_party/install/zlib/include")
-endif()
-
-include_directories("${PADDLE_DIR}/third_party/boost")
-include_directories("${PADDLE_DIR}/third_party/eigen3")
-
-if (EXISTS "${PADDLE_DIR}/third_party/install/snappy/lib")
-    link_directories("${PADDLE_DIR}/third_party/install/snappy/lib")
-endif()
-if(EXISTS "${PADDLE_DIR}/third_party/install/snappystream/lib")
-    link_directories("${PADDLE_DIR}/third_party/install/snappystream/lib")
-endif()
-
-if (EXISTS "${PADDLE_DIR}/third_party/install/zlib/lib")
-    link_directories("${PADDLE_DIR}/third_party/install/zlib/lib")
-endif()
+include_directories("${PADDLE_DIR}/third_party/install/cryptopp/include")
 
+link_directories("${PADDLE_DIR}/paddle/lib/")
 link_directories("${PADDLE_DIR}/third_party/install/protobuf/lib")
 link_directories("${PADDLE_DIR}/third_party/install/glog/lib")
 link_directories("${PADDLE_DIR}/third_party/install/gflags/lib")
 link_directories("${PADDLE_DIR}/third_party/install/xxhash/lib")
-link_directories("${PADDLE_DIR}/paddle/lib/")
-link_directories("${CMAKE_CURRENT_BINARY_DIR}")
+link_directories("${PADDLE_DIR}/third_party/install/cryptopp/lib")
 
 if (WIN32)
-  include_directories("${PADDLE_DIR}/paddle/fluid/inference")
-  include_directories("${PADDLE_DIR}/paddle/include")
-  link_directories("${PADDLE_DIR}/paddle/fluid/inference")
-  find_package(OpenCV REQUIRED PATHS ${OPENCV_DIR}/build/ NO_DEFAULT_PATH)
-  unset(OpenCV_DIR CACHE)
-else ()
-  if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64") # x86_64 aarch64
-    set(OpenCV_INCLUDE_DIRS "/usr/include/opencv4")
-    file(GLOB OpenCV_LIBS /usr/lib/aarch64-linux-gnu/libopencv_*${CMAKE_SHARED_LIBRARY_SUFFIX})
-    message("OpenCV libs: ${OpenCV_LIBS}")
-  else()
-    find_package(OpenCV REQUIRED PATHS ${OPENCV_DIR}/share/OpenCV NO_DEFAULT_PATH)
-  endif()
-  include_directories("${PADDLE_DIR}/paddle/include")
-  link_directories("${PADDLE_DIR}/paddle/lib")
-endif ()
-
-include_directories(${OpenCV_INCLUDE_DIRS})
-
-if (WIN32)
-    add_definitions("/DGOOGLE_GLOG_DLL_DECL=")
-    find_package(OpenMP REQUIRED)
-    if (OPENMP_FOUND)
-        message("OPENMP FOUND")
-        set(CMAKE_C_FLAGS_DEBUG   "${CMAKE_C_FLAGS_DEBUG} ${OpenMP_C_FLAGS}")
-        set(CMAKE_C_FLAGS_RELEASE  "${CMAKE_C_FLAGS_RELEASE} ${OpenMP_C_FLAGS}")
-        set(CMAKE_CXX_FLAGS_DEBUG  "${CMAKE_CXX_FLAGS_DEBUG} ${OpenMP_CXX_FLAGS}")
-        set(CMAKE_CXX_FLAGS_RELEASE   "${CMAKE_CXX_FLAGS_RELEASE} ${OpenMP_CXX_FLAGS}")
-    endif()
-    set(CMAKE_C_FLAGS_DEBUG   "${CMAKE_C_FLAGS_DEBUG} /bigobj /MTd")
-    set(CMAKE_C_FLAGS_RELEASE  "${CMAKE_C_FLAGS_RELEASE} /bigobj /MT")
-    set(CMAKE_CXX_FLAGS_DEBUG  "${CMAKE_CXX_FLAGS_DEBUG} /bigobj /MTd")
-    set(CMAKE_CXX_FLAGS_RELEASE   "${CMAKE_CXX_FLAGS_RELEASE} /bigobj /MT")
-    if (WITH_STATIC_LIB)
-        safe_set_static_flag()
-        add_definitions(-DSTATIC_LIB)
-    endif()
+  set(DEPS ${DEPS} ${PADDLE_DIR}/paddle/lib/paddle_inference.lib)
+  set(DEPS ${DEPS} glog gflags_static libprotobuf xxhash cryptopp-static libyaml-cppmt shlwapi)
 else()
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -o2 -fopenmp -std=c++11")
-    set(CMAKE_STATIC_LIBRARY_PREFIX "")
-endif()
-
-if (WITH_GPU)
-    if (NOT DEFINED CUDA_LIB OR ${CUDA_LIB} STREQUAL "")
-        message(FATAL_ERROR "please set CUDA_LIB with -DCUDA_LIB=/path/cuda/lib64")
-    endif()
-    if (NOT WIN32)
-        if (NOT DEFINED CUDNN_LIB)
-            message(FATAL_ERROR "please set CUDNN_LIB with -DCUDNN_LIB=/path/cudnn/")
-        endif()
-    endif(NOT WIN32)
-endif()
-
-
-if (NOT WIN32)
-  if (WITH_TENSORRT AND WITH_GPU)
-      if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64") # x86_64 aarch64
-          include_directories("/usr/include/aarch64-linux-gnu")
-	  link_directories("/usr/lib/aarch64-linux-gnu")
-      else()
-          include_directories("${TENSORRT_DIR}/include")
-          link_directories("${TENSORRT_DIR}/lib")
-      endif()
+  if (WITH_STATIC_LIB)
+    set(DEPS ${PADDLE_DIR}/paddle/lib/libpaddle_inference${CMAKE_STATIC_LIBRARY_SUFFIX})
+  else()
+    set(DEPS ${PADDLE_DIR}/paddle/lib/libpaddle_inference${CMAKE_SHARED_LIBRARY_SUFFIX})
   endif()
-endif(NOT WIN32)
-
-if (NOT WIN32)
-    set(NGRAPH_PATH "${PADDLE_DIR}/third_party/install/ngraph")
-    if(EXISTS ${NGRAPH_PATH})
-        include(GNUInstallDirs)
-        include_directories("${NGRAPH_PATH}/include")
-        link_directories("${NGRAPH_PATH}/${CMAKE_INSTALL_LIBDIR}")
-        set(NGRAPH_LIB ${NGRAPH_PATH}/${CMAKE_INSTALL_LIBDIR}/libngraph${CMAKE_SHARED_LIBRARY_SUFFIX})
-    endif()
-endif()
+  set(DEPS ${DEPS} glog gflags protobuf xxhash cryptopp yaml-cpp)
+endif(WIN32)
 
+#MKL
 if(WITH_MKL)
-  include_directories("${PADDLE_DIR}/third_party/install/mklml/include")
+  ADD_DEFINITIONS(-DUSE_MKL)
+  set(MKLML_PATH "${PADDLE_DIR}/third_party/install/mklml")
+  include_directories("${MKLML_PATH}/include")
   if (WIN32)
-    set(MATH_LIB ${PADDLE_DIR}/third_party/install/mklml/lib/mklml.lib
-            ${PADDLE_DIR}/third_party/install/mklml/lib/libiomp5md.lib)
+    set(MATH_LIB ${MKLML_PATH}/lib/mklml.lib ${MKLML_PATH}/lib/libiomp5md.lib)
   else ()
-    set(MATH_LIB ${PADDLE_DIR}/third_party/install/mklml/lib/libmklml_intel${CMAKE_SHARED_LIBRARY_SUFFIX}
-            ${PADDLE_DIR}/third_party/install/mklml/lib/libiomp5${CMAKE_SHARED_LIBRARY_SUFFIX})
-    execute_process(COMMAND cp -r ${PADDLE_DIR}/third_party/install/mklml/lib/libmklml_intel${CMAKE_SHARED_LIBRARY_SUFFIX} /usr/lib)
+    set(MATH_LIB ${MKLML_PATH}/lib/libmklml_intel${CMAKE_SHARED_LIBRARY_SUFFIX} ${MKLML_PATH}/lib/libiomp5${CMAKE_SHARED_LIBRARY_SUFFIX})
+    execute_process(COMMAND cp -r ${MKLML_PATH}/lib/libmklml_intel${CMAKE_SHARED_LIBRARY_SUFFIX} /usr/lib)
   endif ()
   set(MKLDNN_PATH "${PADDLE_DIR}/third_party/install/mkldnn")
   if(EXISTS ${MKLDNN_PATH})
@@ -207,194 +100,188 @@ else()
   set(MATH_LIB ${PADDLE_DIR}/third_party/install/openblas/lib/libopenblas${CMAKE_STATIC_LIBRARY_SUFFIX})
 endif()
 
-if (WIN32)
-    if(EXISTS "${PADDLE_DIR}/paddle/fluid/inference/libpaddle_fluid${CMAKE_STATIC_LIBRARY_SUFFIX}")
-        set(DEPS
-            ${PADDLE_DIR}/paddle/fluid/inference/libpaddle_fluid${CMAKE_STATIC_LIBRARY_SUFFIX})
-    else()
-        set(DEPS
-            ${PADDLE_DIR}/paddle/lib/libpaddle_fluid${CMAKE_STATIC_LIBRARY_SUFFIX})
-    endif()
-endif()
+set(DEPS ${DEPS} ${MATH_LIB} ${MKLDNN_LIB})
 
-if(WITH_STATIC_LIB)
-    set(DEPS
-        ${PADDLE_DIR}/paddle/lib/libpaddle_fluid${CMAKE_STATIC_LIBRARY_SUFFIX})
-else()
-    if (NOT WIN32)
-      set(DEPS
-          ${PADDLE_DIR}/paddle/lib/libpaddle_fluid${CMAKE_SHARED_LIBRARY_SUFFIX})
-    else()
-      set(DEPS
-          ${PADDLE_DIR}/paddle/lib/paddle_fluid${CMAKE_SHARED_LIBRARY_SUFFIX})
-    endif()
+#OPENCV
+if (NOT (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64"))
+  if (NOT DEFINED OPENCV_DIR OR ${OPENCV_DIR} STREQUAL "")
+    message(FATAL_ERROR "please set OPENCV_DIR with -DOPENCV_DIR=/path/opencv")
+  endif()
 endif()
 
-if (NOT WIN32)
-    set(DEPS ${DEPS}
-        ${MATH_LIB} ${MKLDNN_LIB}
-        glog gflags protobuf xxhash yaml-cpp
-        )
-    if(EXISTS "${PADDLE_DIR}/third_party/install/snappystream/lib")
-        set(DEPS ${DEPS} snappystream)
-    endif()
-    if (EXISTS "${PADDLE_DIR}/third_party/install/snappy/lib")
-        set(DEPS ${DEPS} snappy)
-    endif()
-else()
-    set(DEPS ${DEPS}
-        ${MATH_LIB} ${MKLDNN_LIB}
-        glog gflags_static libprotobuf xxhash libyaml-cppmt)
+if (WIN32)
+  find_package(OpenCV REQUIRED PATHS ${OPENCV_DIR}/build/ NO_DEFAULT_PATH)
+  unset(OpenCV_DIR CACHE)
+else ()
+  if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64") # x86_64 aarch64
+    set(OpenCV_INCLUDE_DIRS "/usr/include/opencv4")
+    file(GLOB OpenCV_LIBS /usr/lib/aarch64-linux-gnu/libopencv_*${CMAKE_SHARED_LIBRARY_SUFFIX})
+    message("OpenCV libs: ${OpenCV_LIBS}")
+  else()
+    find_package(OpenCV REQUIRED PATHS ${OPENCV_DIR}/share/OpenCV NO_DEFAULT_PATH)
+  endif()
+endif ()
 
-    if (EXISTS "${PADDLE_DIR}/third_party/install/zlib/lib")
-      set(DEPS ${DEPS} zlibstatic)
-    endif()
-    set(DEPS ${DEPS} libcmt shlwapi)
-    if (EXISTS "${PADDLE_DIR}/third_party/install/snappy/lib")
-        set(DEPS ${DEPS} snappy)
-    endif()
-    if (EXISTS "${PADDLE_DIR}/third_party/install/snappystream/lib")
-        set(DEPS ${DEPS} snappystream)
-    endif()
-endif(NOT WIN32)
+set(DEPS ${DEPS} ${OpenCV_LIBS})
+include_directories(${OpenCV_INCLUDE_DIRS})
+
+
+if (WITH_TENSORRT AND WITH_GPU)
+  include_directories("${TENSORRT_DIR}/include")
+  link_directories("${TENSORRT_DIR}/lib")
+
+  file(READ ${TENSORRT_DIR}/include/NvInfer.h TENSORRT_VERSION_FILE_CONTENTS)
+  string(REGEX MATCH "define NV_TENSORRT_MAJOR +([0-9]+)" TENSORRT_MAJOR_VERSION
+    "${TENSORRT_VERSION_FILE_CONTENTS}")
+  if("${TENSORRT_MAJOR_VERSION}" STREQUAL "")
+    file(READ ${TENSORRT_DIR}/include/NvInferVersion.h TENSORRT_VERSION_FILE_CONTENTS)
+    string(REGEX MATCH "define NV_TENSORRT_MAJOR +([0-9]+)" TENSORRT_MAJOR_VERSION
+      "${TENSORRT_VERSION_FILE_CONTENTS}")
+  endif()
+  if("${TENSORRT_MAJOR_VERSION}" STREQUAL "")
+    message(SEND_ERROR "Failed to detect TensorRT version.")
+  endif()
+  string(REGEX REPLACE "define NV_TENSORRT_MAJOR +([0-9]+)" "\\1"
+    TENSORRT_MAJOR_VERSION "${TENSORRT_MAJOR_VERSION}")
+  message(STATUS "Current TensorRT header is ${TENSORRT_INCLUDE_DIR}/NvInfer.h. "
+    "Current TensorRT version is v${TENSORRT_MAJOR_VERSION}. ")
+endif()
 
+#set GPU
 if(WITH_GPU)
+  if (NOT DEFINED CUDA_LIB OR ${CUDA_LIB} STREQUAL "")
+    message(FATAL_ERROR "please set CUDA_LIB with -DCUDA_LIB=/path/cuda/lib64")
+  endif()
+
   if(NOT WIN32)
-    if (WITH_TENSORRT)
-      if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64") # x86_64 aarch64
-	set(DEPS ${DEPS} /usr/lib/aarch64-linux-gnu/libnvinfer${CMAKE_SHARED_LIBRARY_SUFFIX})
-        set(DEPS ${DEPS} /usr/lib/aarch64-linux-gnu/libnvinfer_plugin${CMAKE_SHARED_LIBRARY_SUFFIX})
-      else()
-	set(DEPS ${DEPS} ${TENSORRT_DIR}/lib/libnvinfer${CMAKE_SHARED_LIBRARY_SUFFIX})
-        set(DEPS ${DEPS} ${TENSORRT_DIR}/lib/libnvinfer_plugin${CMAKE_SHARED_LIBRARY_SUFFIX})
-      endif()
+    if (NOT DEFINED CUDNN_LIB)
+      message(FATAL_ERROR "please set CUDNN_LIB with -DCUDNN_LIB=/path/cudnn/")
     endif()
+
     set(DEPS ${DEPS} ${CUDA_LIB}/libcudart${CMAKE_SHARED_LIBRARY_SUFFIX})
     set(DEPS ${DEPS} ${CUDNN_LIB}/libcudnn${CMAKE_SHARED_LIBRARY_SUFFIX})
+
+    if (WITH_TENSORRT)
+      set(DEPS ${DEPS} ${TENSORRT_DIR}/lib/libnvinfer${CMAKE_SHARED_LIBRARY_SUFFIX})
+      set(DEPS ${DEPS} ${TENSORRT_DIR}/lib/libnvinfer_plugin${CMAKE_SHARED_LIBRARY_SUFFIX})
+    endif()
+
   else()
     set(DEPS ${DEPS} ${CUDA_LIB}/cudart${CMAKE_STATIC_LIBRARY_SUFFIX} )
     set(DEPS ${DEPS} ${CUDA_LIB}/cublas${CMAKE_STATIC_LIBRARY_SUFFIX} )
     set(DEPS ${DEPS} ${CUDA_LIB}/cudnn${CMAKE_STATIC_LIBRARY_SUFFIX})
-  endif()
-endif()
 
-if(WITH_ENCRYPTION)
-  if(NOT WIN32)
-    if (NOT (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64"))
-      include_directories("${ENCRYPTION_DIR}/include")
-      link_directories("${ENCRYPTION_DIR}/lib")
-      set(DEPS ${DEPS} ${ENCRYPTION_DIR}/lib/libpmodel-decrypt${CMAKE_SHARED_LIBRARY_SUFFIX})
+    if (WITH_TENSORRT)
+      set(DEPS ${DEPS} ${TENSORRT_DIR}/lib/nvinfer${CMAKE_STATIC_LIBRARY_SUFFIX})
+      set(DEPS ${DEPS} ${TENSORRT_DIR}/lib/nvinfer_plugin${CMAKE_STATIC_LIBRARY_SUFFIX})
+      if(${TENSORRT_MAJOR_VERSION} GREATER_EQUAL 7)
+        set(DEPS ${DEPS} ${TENSORRT_DIR}/lib/myelin64_1${CMAKE_STATIC_LIBRARY_SUFFIX})
+      endif()
     endif()
-  else()
-      include_directories("${ENCRYPTION_DIR}/include")
-      link_directories("${ENCRYPTION_DIR}/lib")
-      set(DEPS ${DEPS} ${ENCRYPTION_DIR}/lib/pmodel-decrypt${CMAKE_STATIC_LIBRARY_SUFFIX})
   endif()
 endif()
 
-if (NOT WIN32)
+macro(safe_set_static_flag)
+    foreach(flag_var
+        CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
+        CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
+      if(${flag_var} MATCHES "/MD")
+        string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
+      endif(${flag_var} MATCHES "/MD")
+    endforeach(flag_var)
+endmacro()
+
+if (WIN32)
+    add_definitions("/DGOOGLE_GLOG_DLL_DECL=")
+    find_package(OpenMP REQUIRED)
+    if (OPENMP_FOUND)
+        message("OPENMP FOUND")
+        set(CMAKE_C_FLAGS_DEBUG   "${CMAKE_C_FLAGS_DEBUG} ${OpenMP_C_FLAGS}")
+        set(CMAKE_C_FLAGS_RELEASE  "${CMAKE_C_FLAGS_RELEASE} ${OpenMP_C_FLAGS}")
+        set(CMAKE_CXX_FLAGS_DEBUG  "${CMAKE_CXX_FLAGS_DEBUG} ${OpenMP_CXX_FLAGS}")
+        set(CMAKE_CXX_FLAGS_RELEASE   "${CMAKE_CXX_FLAGS_RELEASE} ${OpenMP_CXX_FLAGS}")
+    endif()
+    set(CMAKE_C_FLAGS_DEBUG   "${CMAKE_C_FLAGS_DEBUG} /bigobj /MTd")
+    set(CMAKE_C_FLAGS_RELEASE  "${CMAKE_C_FLAGS_RELEASE} /bigobj /MT")
+    set(CMAKE_CXX_FLAGS_DEBUG  "${CMAKE_CXX_FLAGS_DEBUG} /bigobj /MTd")
+    set(CMAKE_CXX_FLAGS_RELEASE   "${CMAKE_CXX_FLAGS_RELEASE} /bigobj /MT")
+    if (WITH_STATIC_LIB)
+        safe_set_static_flag()
+        add_definitions(-DSTATIC_LIB)
+    endif()
+else()
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -o3 -fopenmp -std=c++11")
+    set(CMAKE_STATIC_LIBRARY_PREFIX "")
     set(EXTERNAL_LIB "-ldl -lrt -lgomp -lz -lm -lpthread")
     set(DEPS ${DEPS} ${EXTERNAL_LIB})
 endif()
 
-set(DEPS ${DEPS} ${OpenCV_LIBS})
+message("-----DEPS = ${DEPS}")
 
-add_library(paddlex_inference SHARED src/visualize src/transforms.cpp src/paddlex.cpp)
-ADD_DEPENDENCIES(paddlex_inference ext-yaml-cpp)
-target_link_libraries(paddlex_inference ${DEPS})
+#project
+include_directories("${PROJECT_ROOT_DIR}")
 
-add_executable(classifier demo/classifier.cpp src/transforms.cpp src/paddlex.cpp)
-ADD_DEPENDENCIES(classifier ext-yaml-cpp)
-target_link_libraries(classifier ${DEPS})
+aux_source_directory(${PROJECT_ROOT_DIR}/model_deploy/common/src SRC)
+set(ENGINE_SRC ${PROJECT_ROOT_DIR}/model_deploy/engine/src/ppinference_engine.cpp)
 
-add_executable(detector demo/detector.cpp src/transforms.cpp src/paddlex.cpp src/visualize.cpp)
-ADD_DEPENDENCIES(detector ext-yaml-cpp)
-target_link_libraries(detector ${DEPS})
+#detector seg
+aux_source_directory(${PROJECT_ROOT_DIR}/model_deploy/ppdet/src DETECTOR_SRC)
+aux_source_directory(${PROJECT_ROOT_DIR}/model_deploy/ppseg/src DETECTOR_SRC)
+aux_source_directory(${PROJECT_ROOT_DIR}/model_deploy/ppclas/src DETECTOR_SRC)
+aux_source_directory(${PROJECT_ROOT_DIR}/model_deploy/paddlex/src DETECTOR_SRC)
 
-add_executable(segmenter demo/segmenter.cpp src/transforms.cpp src/paddlex.cpp src/visualize.cpp)
-ADD_DEPENDENCIES(segmenter ext-yaml-cpp)
-target_link_libraries(segmenter ${DEPS})
+set(ENCRYPTION_SRC "")
+if (WITH_ENCRYPTION)
+  add_definitions(-DPADDLEX_DEPLOY_ENCRYPTION)
+  set(CMAKE_C_FLAGS "-fPIC ${CMAKE_C_FLAGS}")
+  set(CMAKE_CXX_FLAGS "-fPIC ${CMAKE_CXX_FLAGS}")
 
-add_executable(video_classifier demo/video_classifier.cpp src/transforms.cpp src/paddlex.cpp src/visualize.cpp)
-ADD_DEPENDENCIES(video_classifier ext-yaml-cpp)
-target_link_libraries(video_classifier ${DEPS})
+  include_directories("${OPENSSL_DIR}/install-${CMAKE_SYSTEM_PROCESSOR}/include")
+  link_directories("${OPENSSL_DIR}/install-${CMAKE_SYSTEM_PROCESSOR}/lib")
+  if (WIN32)
+    set(DEPS ${DEPS} libssl_static${CMAKE_STATIC_LIBRARY_SUFFIX} libcrypto_static${CMAKE_STATIC_LIBRARY_SUFFIX})
+  else ()
+    set(DEPS ${DEPS} libssl${CMAKE_STATIC_LIBRARY_SUFFIX} libcrypto${CMAKE_STATIC_LIBRARY_SUFFIX})
+   endif()
+  aux_source_directory(${PROJECT_ROOT_DIR}/encryption/src ENCRYPTION_SRC)
+  aux_source_directory(${PROJECT_ROOT_DIR}/encryption/util/src ENCRYPTION_SRC)
+  aux_source_directory(${PROJECT_ROOT_DIR}/encryption/util/src/crypto ENCRYPTION_SRC)
+endif()
 
-add_executable(video_detector demo/video_detector.cpp src/transforms.cpp src/paddlex.cpp src/visualize.cpp)
-ADD_DEPENDENCIES(video_detector ext-yaml-cpp)
-target_link_libraries(video_detector ${DEPS})
+add_executable(model_infer ${PROJECT_ROOT_DIR}/demo/model_infer.cpp ${SRC} ${ENGINE_SRC} ${DETECTOR_SRC} ${ENCRYPTION_SRC})
+ADD_DEPENDENCIES(model_infer ext-yaml-cpp)
+target_link_libraries(model_infer ${DEPS})
 
-add_executable(video_segmenter demo/video_segmenter.cpp src/transforms.cpp src/paddlex.cpp src/visualize.cpp)
-ADD_DEPENDENCIES(video_segmenter ext-yaml-cpp)
-target_link_libraries(video_segmenter ${DEPS})
+add_executable(batch_infer ${PROJECT_ROOT_DIR}/demo/batch_infer.cpp ${SRC} ${ENGINE_SRC} ${DETECTOR_SRC} ${ENCRYPTION_SRC})
+ADD_DEPENDENCIES(batch_infer ext-yaml-cpp)
+target_link_libraries(batch_infer ${DEPS})
 
+add_executable(multi_gpu_model_infer ${PROJECT_ROOT_DIR}/demo/multi_gpu_model_infer.cpp ${SRC} ${ENGINE_SRC} ${DETECTOR_SRC} ${ENCRYPTION_SRC})
+ADD_DEPENDENCIES(multi_gpu_model_infer ext-yaml-cpp)
+target_link_libraries(multi_gpu_model_infer ${DEPS})
 
-if (WIN32 AND WITH_MKL)
-    add_custom_command(TARGET classifier POST_BUILD
-        COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PADDLE_DIR}/third_party/install/mklml/lib/mklml.dll ./paddlex_inference/mklml.dll
-        COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PADDLE_DIR}/third_party/install/mklml/lib/libiomp5md.dll ./paddlex_inference/libiomp5md.dll
-        COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PADDLE_DIR}/third_party/install/mkldnn/lib/mkldnn.dll ./paddlex_inference/mkldnn.dll
-    )
-    add_custom_command(TARGET detector POST_BUILD
-        COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PADDLE_DIR}/third_party/install/mklml/lib/mklml.dll ./paddlex_inference/mklml.dll
-        COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PADDLE_DIR}/third_party/install/mklml/lib/libiomp5md.dll ./paddlex_inference/libiomp5md.dll
-        COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PADDLE_DIR}/third_party/install/mkldnn/lib/mkldnn.dll ./paddlex_inference/mkldnn.dll
-    )
-    add_custom_command(TARGET segmenter POST_BUILD
-        COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PADDLE_DIR}/third_party/install/mklml/lib/mklml.dll ./paddlex_inference/mklml.dll
-        COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PADDLE_DIR}/third_party/install/mklml/lib/libiomp5md.dll ./paddlex_inference/libiomp5md.dll
-        COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PADDLE_DIR}/third_party/install/mkldnn/lib/mkldnn.dll ./paddlex_inference/mkldnn.dll
-    )
-    add_custom_command(TARGET video_classifier POST_BUILD
-        COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PADDLE_DIR}/third_party/install/mklml/lib/mklml.dll ./paddlex_inference/mklml.dll
-        COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PADDLE_DIR}/third_party/install/mklml/lib/libiomp5md.dll ./paddlex_inference/libiomp5md.dll
-        COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PADDLE_DIR}/third_party/install/mkldnn/lib/mkldnn.dll ./paddlex_inference/mkldnn.dll
-    )
-    add_custom_command(TARGET video_detector POST_BUILD
-        COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PADDLE_DIR}/third_party/install/mklml/lib/mklml.dll ./paddlex_inference/mklml.dll
-        COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PADDLE_DIR}/third_party/install/mklml/lib/libiomp5md.dll ./paddlex_inference/libiomp5md.dll
-        COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PADDLE_DIR}/third_party/install/mkldnn/lib/mkldnn.dll ./paddlex_inference/kldnn.dll
-    )
-    add_custom_command(TARGET video_segmenter POST_BUILD
-        COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PADDLE_DIR}/third_party/install/mklml/lib/mklml.dll ./paddlex_inference/mklml.dll
-        COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PADDLE_DIR}/third_party/install/mklml/lib/libiomp5md.dll ./paddlex_inference/libiomp5md.dll
-        COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PADDLE_DIR}/third_party/install/mkldnn/lib/mkldnn.dll ./paddlex_inference/mkldnn.dll
+if (WITH_TENSORRT)
+  add_executable(tensorrt_infer ${PROJECT_ROOT_DIR}/demo/tensorrt_infer.cpp ${SRC} ${ENGINE_SRC} ${DETECTOR_SRC} ${ENCRYPTION_SRC})
+  ADD_DEPENDENCIES(tensorrt_infer ext-yaml-cpp)
+  target_link_libraries(tensorrt_infer ${DEPS})
+endif()
+
+if(WIN32)
+  add_custom_command(TARGET model_infer POST_BUILD
+    COMMAND ${CMAKE_COMMAND} -E copy ${PADDLE_DIR}/third_party/install/mklml/lib/mklml.dll ${CMAKE_BINARY_DIR}/paddle_deploy
+    COMMAND ${CMAKE_COMMAND} -E copy ${PADDLE_DIR}/third_party/install/mklml/lib/libiomp5md.dll ${CMAKE_BINARY_DIR}/paddle_deploy
+    COMMAND ${CMAKE_COMMAND} -E copy ${PADDLE_DIR}/third_party/install/mkldnn/lib/mkldnn.dll  ${CMAKE_BINARY_DIR}/paddle_deploy
+    COMMAND ${CMAKE_COMMAND} -E copy ${PADDLE_DIR}/paddle/lib/paddle_inference.dll ${CMAKE_BINARY_DIR}/paddle_deploy
+  )
+  if (WITH_TENSORRT)
+    add_custom_command(TARGET model_infer POST_BUILD
+      COMMAND ${CMAKE_COMMAND} -E copy ${TENSORRT_DIR}/lib/nvinfer.dll ${CMAKE_BINARY_DIR}/paddle_deploy
+      COMMAND ${CMAKE_COMMAND} -E copy ${TENSORRT_DIR}/lib/nvinfer_plugin.dll ${CMAKE_BINARY_DIR}/paddle_deploy
     )
-    # for encryption
-    if (EXISTS "${ENCRYPTION_DIR}/lib/pmodel-decrypt.dll")
-        add_custom_command(TARGET classifier POST_BUILD
-            COMMAND ${CMAKE_COMMAND} -E copy_if_different ${ENCRYPTION_DIR}/lib/pmodel-decrypt.dll ./pmodel-decrypt.dll
-            COMMAND ${CMAKE_COMMAND} -E copy_if_different ${ENCRYPTION_DIR}/lib/pmodel-decrypt.dll ./release/pmodel-decrypt.dll
-        )
-        add_custom_command(TARGET detector POST_BUILD
-            COMMAND ${CMAKE_COMMAND} -E copy_if_different ${ENCRYPTION_DIR}/lib/pmodel-decrypt.dll ./pmodel-decrypt.dll
-            COMMAND ${CMAKE_COMMAND} -E copy_if_different ${ENCRYPTION_DIR}/lib/pmodel-decrypt.dll ./release/pmodel-decrypt.dll
-        )
-        add_custom_command(TARGET segmenter POST_BUILD
-            COMMAND ${CMAKE_COMMAND} -E copy_if_different ${ENCRYPTION_DIR}/lib/pmodel-decrypt.dll ./pmodel-decrypt.dll
-            COMMAND ${CMAKE_COMMAND} -E copy_if_different ${ENCRYPTION_DIR}/lib/pmodel-decrypt.dll ./release/pmodel-decrypt.dll
-        )
-        add_custom_command(TARGET video_classifier POST_BUILD
-            COMMAND ${CMAKE_COMMAND} -E copy_if_different ${ENCRYPTION_DIR}/lib/pmodel-decrypt.dll ./pmodel-decrypt.dll
-            COMMAND ${CMAKE_COMMAND} -E copy_if_different ${ENCRYPTION_DIR}/lib/pmodel-decrypt.dll ./release/pmodel-decrypt.dll
-        )
-        add_custom_command(TARGET video_detector POST_BUILD
-            COMMAND ${CMAKE_COMMAND} -E copy_if_different ${ENCRYPTION_DIR}/lib/pmodel-decrypt.dll ./pmodel-decrypt.dll
-            COMMAND ${CMAKE_COMMAND} -E copy_if_different ${ENCRYPTION_DIR}/lib/pmodel-decrypt.dll ./release/pmodel-decrypt.dll
-        )
-        add_custom_command(TARGET video_segmenter POST_BUILD
-            COMMAND ${CMAKE_COMMAND} -E copy_if_different ${ENCRYPTION_DIR}/lib/pmodel-decrypt.dll ./pmodel-decrypt.dll
-            COMMAND ${CMAKE_COMMAND} -E copy_if_different ${ENCRYPTION_DIR}/lib/pmodel-decrypt.dll ./release/pmodel-decrypt.dll
-        )
+    if(${TENSORRT_MAJOR_VERSION} GREATER_EQUAL 7)
+      add_custom_command(TARGET model_infer POST_BUILD
+        COMMAND ${CMAKE_COMMAND} -E copy ${TENSORRT_DIR}/lib/myelin64_1.dll ${CMAKE_BINARY_DIR}/paddle_deploy
+      )
     endif()
+  endif()
 endif()
-
-file(COPY  "${CMAKE_SOURCE_DIR}/include/paddlex/visualize.h"
-DESTINATION  "${CMAKE_BINARY_DIR}/include/"  )
-file(COPY  "${CMAKE_SOURCE_DIR}/include/paddlex/config_parser.h"
-DESTINATION  "${CMAKE_BINARY_DIR}/include/"  )
-file(COPY  "${CMAKE_SOURCE_DIR}/include/paddlex/transforms.h"
-DESTINATION  "${CMAKE_BINARY_DIR}/include/"  )
-file(COPY  "${CMAKE_SOURCE_DIR}/include/paddlex/results.h"
-DESTINATION  "${CMAKE_BINARY_DIR}/include/"  )
-file(COPY  "${CMAKE_SOURCE_DIR}/include/paddlex/paddlex.h"
-DESTINATION  "${CMAKE_BINARY_DIR}/include/"  )

+ 61 - 59
deploy/cpp/CMakeSettings.json

@@ -1,62 +1,64 @@
 {
-    "configurations": [
-        {
-            "name": "x64-Release",
-            "generator": "Ninja",
-            "configurationType": "RelWithDebInfo",
-            "inheritEnvironments": [ "msvc_x64_x64" ],
-            "buildRoot": "${projectDir}\\out\\build\\${name}",
-            "installRoot": "${projectDir}\\out\\install\\${name}",
-            "cmakeCommandArgs": "",
-            "buildCommandArgs": "-v",
-            "ctestCommandArgs": "",
-            "variables": [
-                {
-                    "name": "OPENCV_DIR",
-                    "value": "C:/projects/opencv",
-                    "type": "PATH"
-                },
-                {
-                    "name": "PADDLE_DIR",
-                    "value": "C:/projects/fluid_install_dir_win_cpu_1.6/fluid_install_dir_win_cpu_1.6",
-                    "type": "PATH"
-                },
-                {
-                    "name": "CUDA_LIB",
-                    "value": "",
-                    "type": "PATH"
-                },
-                {
-                    "name": "WITH_STATIC_LIB",
-                    "value": "True",
-                    "type": "BOOL"
-                },
-                {
-                    "name": "WITH_MKL",
-                    "value": "True",
-                    "type": "BOOL"
-                },
-                {
-                    "name": "WITH_GPU",
-                    "value": "False",
-                    "type": "BOOL"
-                },
-                {
-                    "name": "WITH_ENCRYPTION",
-                    "value": "False",
-                    "type": "BOOL"
-                },
-                {
-                    "name": "ENCRYPTION_DIR",
-                    "value": "",
-                    "type": "PATH"
-                },
-                {
-                    "name": "WITH_TENSORRT",
-                    "value": "False",
-                    "type": "BOOL"
-                }
-            ]
+  "configurations": [
+    {
+      "name": "x64-Release",
+      "generator": "Ninja",
+      "configurationType": "RelWithDebInfo",
+      "inheritEnvironments": [
+        "msvc_x64_x64"
+      ],
+      "buildRoot": "${projectDir}\\out\\build\\${name}",
+      "installRoot": "${projectDir}\\out\\install\\${name}",
+      "cmakeCommandArgs": "",
+      "buildCommandArgs": "-v",
+      "ctestCommandArgs": "",
+      "variables": [
+        {
+          "name": "OPENCV_DIR",
+          "value": "path\\to\\opencv",
+          "type": "PATH"
+        },
+        {
+          "name": "PADDLE_DIR",
+          "value": "path\\to\\paddle_inference_install_dir",
+          "type": "PATH"
+        },
+        {
+          "name": "CUDA_LIB",
+          "value": "C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v10.2\\lib\\x64",
+          "type": "PATH"
+        },
+        {
+          "name": "TENSORRT_DIR",
+          "value": "path\\to\\TensorRT_dir",
+          "type": "PATH"
+        },
+        {
+          "name": "WITH_MKL",
+          "value": "True",
+          "type": "BOOL"
+        },
+        {
+          "name": "WITH_GPU",
+          "value": "True",
+          "type": "BOOL"
+        },
+        {
+          "name": "WITH_TENSORRT",
+          "value": "False",
+          "type": "BOOL"
+        },
+        {
+          "name": "WITH_ENCRYPTION",
+          "value": "False",
+          "type": "BOOL"
+        },
+        {
+          "name": "OPENSSL_DIR",
+          "value": "path\\to\\openssl1.1.0k",
+          "type": "PATH"
         }
-    ]
+      ]
+    }
+  ]
 }

+ 0 - 0
dygraph/deploy/cpp/README.md → deploy/cpp/README.md


+ 1 - 3
deploy/cpp/cmake/yaml-cpp.cmake

@@ -1,7 +1,5 @@
 include(ExternalProject)
 
-message("${CMAKE_BUILD_TYPE}")
-
 ExternalProject_Add(
         ext-yaml-cpp
 	URL https://bj.bcebos.com/paddlex/deploy/deps/yaml-cpp.zip
@@ -12,7 +10,7 @@ ExternalProject_Add(
         -DYAML_CPP_INSTALL=OFF
         -DYAML_CPP_BUILD_CONTRIB=OFF
         -DMSVC_SHARED_RT=OFF
-        -DBUILD_SHARED_LIBS=${YAML_BUILD_TYPE}
+        -DBUILD_SHARED_LIBS=${YAML_BUILD_SHARED_LIBS}
         -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
         -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
         -DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}

+ 0 - 0
dygraph/deploy/cpp/demo/batch_infer.cpp → deploy/cpp/demo/batch_infer.cpp


+ 0 - 0
dygraph/deploy/cpp/demo/model_infer.cpp → deploy/cpp/demo/model_infer.cpp


+ 0 - 0
dygraph/deploy/cpp/demo/multi_gpu_model_infer.cpp → deploy/cpp/demo/multi_gpu_model_infer.cpp


+ 0 - 0
dygraph/deploy/cpp/demo/onnx_tensorrt/CMakeLists.txt → deploy/cpp/demo/onnx_tensorrt/CMakeLists.txt


+ 0 - 0
dygraph/deploy/cpp/demo/onnx_tensorrt/model_infer.cpp → deploy/cpp/demo/onnx_tensorrt/model_infer.cpp


+ 0 - 0
dygraph/deploy/cpp/demo/onnx_triton/CMakeLists.txt → deploy/cpp/demo/onnx_triton/CMakeLists.txt


+ 0 - 0
dygraph/deploy/cpp/demo/onnx_triton/model_infer.cpp → deploy/cpp/demo/onnx_triton/model_infer.cpp


+ 0 - 0
dygraph/deploy/cpp/demo/tensorrt_infer.cpp → deploy/cpp/demo/tensorrt_infer.cpp


+ 0 - 0
dygraph/deploy/cpp/docs/apis/model.md → deploy/cpp/docs/apis/model.md


+ 0 - 0
dygraph/deploy/cpp/docs/apis/yaml.md → deploy/cpp/docs/apis/yaml.md


+ 0 - 0
dygraph/deploy/cpp/docs/compile/paddle/jetson.md → deploy/cpp/docs/compile/paddle/jetson.md


+ 0 - 0
dygraph/deploy/cpp/docs/compile/paddle/linux.md → deploy/cpp/docs/compile/paddle/linux.md


+ 0 - 0
dygraph/deploy/cpp/docs/compile/paddle/windows.md → deploy/cpp/docs/compile/paddle/windows.md


+ 0 - 0
dygraph/deploy/cpp/docs/compile/tensorrt/trt.md → deploy/cpp/docs/compile/tensorrt/trt.md


+ 0 - 0
dygraph/deploy/cpp/docs/compile/triton/docker.md → deploy/cpp/docs/compile/triton/docker.md


+ 0 - 0
dygraph/deploy/cpp/docs/demo/decrypt_infer.md → deploy/cpp/docs/demo/decrypt_infer.md


+ 0 - 0
dygraph/deploy/cpp/docs/demo/model_infer.md → deploy/cpp/docs/demo/model_infer.md


+ 0 - 0
dygraph/deploy/cpp/docs/demo/multi_gpu_model_infer.md → deploy/cpp/docs/demo/multi_gpu_model_infer.md


+ 0 - 0
dygraph/deploy/cpp/docs/demo/tensorrt_infer.md → deploy/cpp/docs/demo/tensorrt_infer.md


+ 0 - 0
dygraph/deploy/cpp/docs/images/tensorrt.png → deploy/cpp/docs/images/tensorrt.png


+ 0 - 0
docs/deploy/images/vs2019_step1.png → deploy/cpp/docs/images/vs2019_step1.png


+ 0 - 0
docs/deploy/images/vs2019_step2.png → deploy/cpp/docs/images/vs2019_step2.png


+ 0 - 0
docs/deploy/images/vs2019_step3.png → deploy/cpp/docs/images/vs2019_step3.png


+ 0 - 0
docs/deploy/images/vs2019_step4.png → deploy/cpp/docs/images/vs2019_step4.png


+ 0 - 0
dygraph/deploy/cpp/docs/images/vs2019_step5.png → deploy/cpp/docs/images/vs2019_step5.png


+ 0 - 0
dygraph/deploy/cpp/docs/images/vs2019_step6.png → deploy/cpp/docs/images/vs2019_step6.png


+ 0 - 0
docs/deploy/images/vs2019_step7.png → deploy/cpp/docs/images/vs2019_step7.png


+ 0 - 0
dygraph/deploy/cpp/docs/manufacture_sdk/README.md → deploy/cpp/docs/manufacture_sdk/README.md


+ 0 - 0
dygraph/deploy/cpp/docs/manufacture_sdk/images/pipeline_arch.png → deploy/cpp/docs/manufacture_sdk/images/pipeline_arch.png


+ 0 - 0
dygraph/deploy/cpp/docs/manufacture_sdk/images/pipeline_det.png → deploy/cpp/docs/manufacture_sdk/images/pipeline_det.png


+ 0 - 0
dygraph/deploy/cpp/docs/models/paddleclas.md → deploy/cpp/docs/models/paddleclas.md


+ 0 - 0
dygraph/deploy/cpp/docs/models/paddledetection.md → deploy/cpp/docs/models/paddledetection.md


+ 0 - 0
dygraph/deploy/cpp/docs/models/paddleseg.md → deploy/cpp/docs/models/paddleseg.md


+ 0 - 0
dygraph/deploy/cpp/docs/models/paddlex.md → deploy/cpp/docs/models/paddlex.md


+ 0 - 0
dygraph/deploy/cpp/encryption/CMakeLists.txt → deploy/cpp/encryption/CMakeLists.txt


+ 0 - 0
dygraph/deploy/cpp/encryption/README.md → deploy/cpp/encryption/README.md


+ 0 - 0
dygraph/deploy/cpp/encryption/build.bat → deploy/cpp/encryption/build.bat


+ 0 - 0
dygraph/deploy/cpp/encryption/build.sh → deploy/cpp/encryption/build.sh


+ 0 - 0
dygraph/deploy/cpp/encryption/build_clean.bat → deploy/cpp/encryption/build_clean.bat


+ 0 - 0
dygraph/deploy/cpp/encryption/build_clean.sh → deploy/cpp/encryption/build_clean.sh


+ 0 - 0
dygraph/deploy/cpp/encryption/export_rule.map → deploy/cpp/encryption/export_rule.map


+ 0 - 0
dygraph/deploy/cpp/encryption/include/model_code.h → deploy/cpp/encryption/include/model_code.h


+ 0 - 0
dygraph/deploy/cpp/encryption/include/paddle_model_decrypt.h → deploy/cpp/encryption/include/paddle_model_decrypt.h


+ 0 - 0
dygraph/deploy/cpp/encryption/include/paddle_model_encrypt.h → deploy/cpp/encryption/include/paddle_model_encrypt.h


+ 0 - 0
dygraph/deploy/cpp/encryption/include/paddle_stream_decrypt.h → deploy/cpp/encryption/include/paddle_stream_decrypt.h


+ 0 - 0
dygraph/deploy/cpp/encryption/sample/paddle_encrypt_tool.cpp → deploy/cpp/encryption/sample/paddle_encrypt_tool.cpp


+ 0 - 0
dygraph/deploy/cpp/encryption/sample/paddle_safe_stream_test.cpp → deploy/cpp/encryption/sample/paddle_safe_stream_test.cpp


+ 0 - 0
dygraph/deploy/cpp/encryption/src/paddle_model_decrypt.cpp → deploy/cpp/encryption/src/paddle_model_decrypt.cpp


+ 0 - 0
dygraph/deploy/cpp/encryption/src/paddle_model_encrypt.cpp → deploy/cpp/encryption/src/paddle_model_encrypt.cpp


+ 0 - 0
dygraph/deploy/cpp/encryption/src/paddle_stream_decrypt.cpp → deploy/cpp/encryption/src/paddle_stream_decrypt.cpp


+ 0 - 0
dygraph/deploy/cpp/encryption/util/include/constant/constant_model.h → deploy/cpp/encryption/util/include/constant/constant_model.h


+ 0 - 0
dygraph/deploy/cpp/encryption/util/include/crypto/aes_gcm.h → deploy/cpp/encryption/util/include/crypto/aes_gcm.h


+ 0 - 0
dygraph/deploy/cpp/encryption/util/include/crypto/base64.h → deploy/cpp/encryption/util/include/crypto/base64.h


+ 0 - 0
dygraph/deploy/cpp/encryption/util/include/crypto/basic.h → deploy/cpp/encryption/util/include/crypto/basic.h


+ 0 - 0
dygraph/deploy/cpp/encryption/util/include/crypto/sha256_utils.h → deploy/cpp/encryption/util/include/crypto/sha256_utils.h


+ 0 - 0
dygraph/deploy/cpp/encryption/util/include/io_utils.h → deploy/cpp/encryption/util/include/io_utils.h


+ 0 - 0
dygraph/deploy/cpp/encryption/util/include/log.h → deploy/cpp/encryption/util/include/log.h


+ 0 - 0
dygraph/deploy/cpp/encryption/util/include/system_utils.h → deploy/cpp/encryption/util/include/system_utils.h


+ 0 - 0
dygraph/deploy/cpp/encryption/util/src/crypto/aes_gcm.cpp → deploy/cpp/encryption/util/src/crypto/aes_gcm.cpp


+ 0 - 0
dygraph/deploy/cpp/encryption/util/src/crypto/base64.cpp → deploy/cpp/encryption/util/src/crypto/base64.cpp


+ 0 - 0
dygraph/deploy/cpp/encryption/util/src/crypto/basic.cpp → deploy/cpp/encryption/util/src/crypto/basic.cpp


+ 0 - 0
dygraph/deploy/cpp/encryption/util/src/crypto/sha256_utils.cpp → deploy/cpp/encryption/util/src/crypto/sha256_utils.cpp


+ 0 - 0
dygraph/deploy/cpp/encryption/util/src/io_utils.cpp → deploy/cpp/encryption/util/src/io_utils.cpp


+ 0 - 0
dygraph/deploy/cpp/encryption/util/src/system_utils.cpp → deploy/cpp/encryption/util/src/system_utils.cpp


+ 0 - 0
dygraph/deploy/cpp/model_deploy/common/include/base_model.h → deploy/cpp/model_deploy/common/include/base_model.h


+ 0 - 0
dygraph/deploy/cpp/model_deploy/common/include/base_postprocess.h → deploy/cpp/model_deploy/common/include/base_postprocess.h


+ 0 - 0
dygraph/deploy/cpp/model_deploy/common/include/base_preprocess.h → deploy/cpp/model_deploy/common/include/base_preprocess.h


+ 0 - 0
dygraph/deploy/cpp/model_deploy/common/include/deploy_delacre.h → deploy/cpp/model_deploy/common/include/deploy_delacre.h


+ 0 - 0
dygraph/deploy/cpp/model_deploy/common/include/model_factory.h → deploy/cpp/model_deploy/common/include/model_factory.h


+ 0 - 0
dygraph/deploy/cpp/model_deploy/common/include/multi_gpu_model.h → deploy/cpp/model_deploy/common/include/multi_gpu_model.h


+ 0 - 0
dygraph/deploy/cpp/model_deploy/common/include/output_struct.h → deploy/cpp/model_deploy/common/include/output_struct.h


+ 0 - 0
dygraph/deploy/cpp/model_deploy/common/include/paddle_deploy.h → deploy/cpp/model_deploy/common/include/paddle_deploy.h


+ 0 - 0
dygraph/deploy/cpp/model_deploy/common/include/transforms.h → deploy/cpp/model_deploy/common/include/transforms.h


+ 0 - 0
dygraph/deploy/cpp/model_deploy/common/src/base_preprocess.cpp → deploy/cpp/model_deploy/common/src/base_preprocess.cpp


+ 0 - 0
dygraph/deploy/cpp/model_deploy/common/src/model_factory.cpp → deploy/cpp/model_deploy/common/src/model_factory.cpp


+ 0 - 0
dygraph/deploy/cpp/model_deploy/common/src/paddle_deploy.cpp → deploy/cpp/model_deploy/common/src/paddle_deploy.cpp


+ 0 - 0
dygraph/deploy/cpp/model_deploy/common/src/transforms.cpp → deploy/cpp/model_deploy/common/src/transforms.cpp


+ 0 - 0
dygraph/deploy/cpp/model_deploy/engine/include/engine.h → deploy/cpp/model_deploy/engine/include/engine.h


+ 0 - 0
dygraph/deploy/cpp/model_deploy/engine/include/engine_config.h → deploy/cpp/model_deploy/engine/include/engine_config.h


+ 0 - 0
dygraph/deploy/cpp/model_deploy/engine/include/ppinference_engine.h → deploy/cpp/model_deploy/engine/include/ppinference_engine.h


+ 0 - 0
dygraph/deploy/cpp/model_deploy/engine/include/tensorrt_buffers.h → deploy/cpp/model_deploy/engine/include/tensorrt_buffers.h


+ 0 - 0
dygraph/deploy/cpp/model_deploy/engine/include/tensorrt_engine.h → deploy/cpp/model_deploy/engine/include/tensorrt_engine.h


+ 0 - 0
dygraph/deploy/cpp/model_deploy/engine/include/triton_engine.h → deploy/cpp/model_deploy/engine/include/triton_engine.h


+ 0 - 0
dygraph/deploy/cpp/model_deploy/engine/src/ppinference_engine.cpp → deploy/cpp/model_deploy/engine/src/ppinference_engine.cpp


+ 0 - 0
dygraph/deploy/cpp/model_deploy/engine/src/tensorrt_engine.cpp → deploy/cpp/model_deploy/engine/src/tensorrt_engine.cpp


+ 0 - 0
dygraph/deploy/cpp/model_deploy/engine/src/triton_engine.cpp → deploy/cpp/model_deploy/engine/src/triton_engine.cpp


+ 0 - 0
dygraph/deploy/cpp/model_deploy/paddlex/include/x_model.h → deploy/cpp/model_deploy/paddlex/include/x_model.h


+ 0 - 0
dygraph/deploy/cpp/model_deploy/paddlex/include/x_postprocess.h → deploy/cpp/model_deploy/paddlex/include/x_postprocess.h


+ 0 - 0
dygraph/deploy/cpp/model_deploy/paddlex/include/x_preprocess.h → deploy/cpp/model_deploy/paddlex/include/x_preprocess.h


+ 0 - 0
dygraph/deploy/cpp/model_deploy/paddlex/include/x_standard_config.h → deploy/cpp/model_deploy/paddlex/include/x_standard_config.h


+ 0 - 0
dygraph/deploy/cpp/model_deploy/paddlex/src/x_model.cpp → deploy/cpp/model_deploy/paddlex/src/x_model.cpp


Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików