Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleSeg
提交
01d3f4eb
P
PaddleSeg
项目概览
PaddlePaddle
/
PaddleSeg
通知
285
Star
8
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
53
列表
看板
标记
里程碑
合并请求
3
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleSeg
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
53
Issue
53
列表
看板
标记
里程碑
合并请求
3
合并请求
3
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
01d3f4eb
编写于
8月 29, 2019
作者:
B
Bin Long
提交者:
GitHub
8月 29, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update README.md
上级
14e8a401
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
91 addition
and
90 deletion
+91
-90
inference/README.md
inference/README.md
+91
-90
未找到文件。
inference/README.md
浏览文件 @
01d3f4eb
...
@@ -4,127 +4,128 @@
...
@@ -4,127 +4,128 @@
本目录提供一个跨平台的图像分割模型的C++预测部署方案,用户通过一定的配置,加上少量的代码,即可把模型集成到自己的服务中,完成图像分割的任务。
本目录提供一个跨平台的图像分割模型的C++预测部署方案,用户通过一定的配置,加上少量的代码,即可把模型集成到自己的服务中,完成图像分割的任务。
主要设计的目标包括以下
三
点:
主要设计的目标包括以下
四
点:
-
跨平台,支持在 windows
和Linux
完成编译、开发和部署
-
跨平台,支持在 windows
和 Linux
完成编译、开发和部署
-
支持主流图像分割任务,用户通过少量配置即可加载模型完成常见预测任务,比如人像分割等
-
支持主流图像分割任务,用户通过少量配置即可加载模型完成常见预测任务,比如人像分割等
-
可扩展性,支持用户针对新模型开发自己特殊的数据预处理、后处理等逻辑
-
可扩展性,支持用户针对新模型开发自己特殊的数据预处理、后处理等逻辑
-
高性能,除了
`PaddlePaddle`
自身带来的性能优势,我们还针对图像分割的特点对关键步骤进行了性能优化
## 主要目录和文件
## 主要目录和文件
| 文件 | 作用 |
|-------|----------|
| CMakeList.txt | cmake 编译配置文件 |
| external-cmake| 依赖的外部项目 cmake (目前仅有yaml-cpp)|
| demo.cpp | 示例C++代码,演示加载模型完成预测任务 |
| predictor | 加载模型并预测的类代码|
| preprocess |数据预处理相关的类代码|
| utils | 一些基础公共函数|
| images/humanseg | 样例人像分割模型的测试图片目录|
| conf/humanseg.yaml | 示例人像分割模型配置|
| tools/visualize.py | 预测结果彩色可视化脚本 |
## Windows平台编译
### 前置条件
*
Visual Studio 2015+
*
CUDA 8.0 / CUDA 9.0 + CuDNN 7
*
CMake 3.0+
我们分别在
`Visual Studio 2015`
和
`Visual Studio 2019 Community`
两个版本下做了测试.
**下面所有示例,以根目录为 `D:\`演示**
### Step1: 下载代码
1.
`git clone http://gitlab.baidu.com/Paddle/PaddleSeg.git`
2.
拷贝
`D:\PaddleSeg\inference\` 目录到 `
D:
\P
addleDeploy
`下
目录`
D:
\P
addleDeploy
\i
nference
` 目录包含了`
CMakelist.txt
`以及代码等项目文件.
### Step2: 下载PaddlePaddle预测库fluid_inference
根据Windows环境,下载相应版本的PaddlePaddle预测库,并解压到`
D:
\P
addleDeploy
\`
目录
| CUDA | GPU | 下载地址 |
|------|------|--------|
| 8.0 | Yes |
[
fluid_inference.zip
](
https://bj.bcebos.com/v1/paddleseg/fluid_inference_win.zip
)
|
| 9.0 | Yes |
[
fluid_inference_cuda90.zip
](
https://paddleseg.bj.bcebos.com/fluid_inference_cuda9_cudnn7.zip
)
|
`D:\PaddleDeploy\fluid_inference`
目录包含内容为:
```
bash
paddle
# paddle核心目录
third_party
# paddle 第三方依赖
version.txt
# 编译的版本信息
```
```
inference
├── demo.cpp # 演示加载模型、读入数据、完成预测任务C++代码
|
├── conf
│ └── humanseg.yaml # 示例人像分割模型配置
├── images
│ └── humanseg # 示例人像分割模型测试图片目录
├── tools
│ └── visualize.py # 示例人像分割模型结果可视化脚本
├── docs
| ├── linux_build.md # Linux 编译指南
| ├── windows_vs2015_build.md # windows VS2015编译指南
│ └── windows_vs2019_build.md # Windows VS2019编译指南
|
├── utils # 一些基础公共函数
|
├── preprocess # 数据预处理相关代码
|
├── predictor # 模型加载和预测相关代码
|
├── CMakeList.txt # cmake编译入口文件
|
└── external-cmake # 依赖的外部项目cmake(目前仅有yaml-cpp)
```
### Step3: 安装配置OpenCV
## 编译
支持在
`Windows`
和
`Linux`
平台编译和使用:
1.
在OpenCV官网下载适用于Windows平台的3.4.6版本,
[
下载地址
](
https://sourceforge.net/projects/opencvlibrary/files/3.4.6/opencv-3.4.6-vc14_vc15.exe/download
)
-
[
Linux 编译指南
](
./docs/linux_build.md
)
2.
运行下载的可执行文件,将OpenCV解压至指定目录,如
`D:\PaddleDeploy\opencv`
-
[
Windows 使用 Visual Studio 2019 Community 编译指南
](
./docs/windows_vs2019_build.md
)
3.
配置环境变量,如下流程所示
-
[
Windows 使用 Visual Studio 2015 编译指南
](
./docs/windows_vs2015_build.md
)
1.
我的电脑->属性->高级系统设置->环境变量
2.
在系统变量中找到Path(如没有,自行创建),并双击编辑
3.
新建,将opencv路径填入并保存,如
`D:\PaddleDeploy\opencv\build\x64\vc14\bin`
### Step4: 以VS2015为例编译代码
以下命令需根据自己系统中各相关依赖的路径进行修改
`Windows`
上推荐使用最新的
`Visual Studio 2019 Community`
直接编译
`CMake`
项目。
*
调用VS2015, 请根据实际VS安装路径进行调整,打开cmd命令行工具执行以下命令
## 预测并可视化结果
*
其他vs版本,请查找到对应版本的
`vcvarsall.bat`
路径,替换本命令即可
```
完成编译后,便生成了需要的可执行文件和链接库,然后执行以下步骤:
call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64
```
*
CMAKE编译工程
### 1. 下载模型文件
*
PADDLE_DIR: fluid_inference预测库目录
我们提供了一个人像分割模型示例用于测试,点击右侧地址下载:
[
示例模型下载地址
](
https://paddleseg.bj.bcebos.com/inference_model/deeplabv3p_xception65_humanseg.tgz
)
*
CUDA_LIB: CUDA动态库目录, 请根据实际安装情况调整
*
OPENCV_DIR: OpenCV解压目录
下载并解压,解压后目录结构如下:
```
```
# 创建CMake的build目录
deeplabv3p_xception65_humanseg
D:
├── __model__ # 模型文件
cd PaddleDeploy\inference
|
mkdir build
└── __params__ # 参数文件
cd build
D:\PaddleDeploy\inference\build> cmake .. -G "Visual Studio 14 2015 Win64" -DWITH_GPU=ON -DPADDLE_DIR=D:\PaddleDeploy\fluid_inference -DCUDA_LIB=D:\PaddleDeploy\cudalib\v8.0\lib\x64 -DOPENCV_DIR=D:\PaddleDeploy\opencv -T host=x64
```
这里的
`cmake`
参数
`-G`
, 可以根据自己的
`VS`
版本调整,具体请参考
[
cmake文档
](
https://cmake.org/cmake/help/v3.15/manual/cmake-generators.7.html
)
*
生成可执行文件
```
```
D:\PaddleDeploy\inference\build> msbuild /m /p:Configuration=Release cpp_inference_demo.sln
解压后把上述目录拷贝到合适的路径:
**假设**
`Windows`
系统上,我们模型和参数文件所在路径为
`D:\projects\models\deeplabv3p_xception65_humanseg`
。
**假设**
`Linux`
上对应的路径则为
`/root/projects/models/deeplabv3p_xception65_humanseg`
。
### 2. 修改配置
源代码的
`conf`
目录下提供了示例人像分割模型的配置文件
`humanseg.yaml`
, 相关的字段含义和说明如下:
```
yaml
DEPLOY
:
# 是否使用GPU预测
USE_GPU
:
1
# 模型和参数文件所在目录路径
MODEL_PATH
:
"
/root/projects/models/deeplabv3p_xception65_humanseg"
# 模型文件名
MODEL_FILENAME
:
"
__model__"
# 参数文件名
PARAMS_FILENAME
:
"
__params__"
# 预测图片的的标准输入尺寸,输入尺寸不一致会做resize
EVAL_CROP_SIZE
:
(513, 513)
# 均值
MEAN
:
[
104.008
,
116.669
,
122.675
]
# 方差
STD
:
[
1.0
,
1.0
,
1.0
]
# 图片类型, rgb 或者 rgba
IMAGE_TYPE
:
"
rgb"
# 分类类型数
NUM_CLASSES
:
2
# 图片通道数
CHANNELS
:
3
# 预处理方式,目前提供图像分割的通用处理类SegPreProcessor
PRE_PROCESSOR
:
"
SegPreProcessor"
# 预测模式,支持 NATIVE 和 ANALYSIS
PREDICTOR_MODE
:
"
ANALYSIS"
# 每次预测的 batch_size
BATCH_SIZE
:
3
```
```
修改字段
`MODEL_PATH`
的值为你在
**上一步**
下载并解压的模型文件所放置的目录即可。
### Step5: 预测及可视化
上步骤中编译生成的可执行文件和相关动态链接库并保存在build/Release目录下,可通过Windows命令行直接调用。
### 3. 执行预测
可下载并解压示例模型进行测试,点击下载示例的人像分割模型
[
下载地址
](
https://paddleseg.bj.bcebos.com/inference_model/deeplabv3p_xception65_humanseg.tgz
)
假设解压至
`D:\PaddleDeploy\models\deeplabv3p_xception65_humanseg`
,执行以下命令:
在终端中切换到生成的可执行文件所在目录为当前目录(Windows系统为
`cmd`
)。
`Linux`
系统中执行以下命令:
```
shell
./demo
--conf
=
/root/projects/PaddleSeg/inference/conf/humanseg.yaml
--input_dir
=
/root/projects/PaddleSeg/inference/images/humanseg/
```
```
cd Release
`Windows`
中执行以下命令:
D:\PaddleDeploy\inference\build\Release> demo.exe --conf=D:\\PaddleDeploy\\inference\\conf\\humanseg.yaml --input_dir=D:\\PaddleDeploy\\inference\\images\humanseg\\
```
shell
D:
\p
rojects
\P
addleSeg
\i
nference
\b
uild
\R
elease>demo.exe
--conf
=
D:
\\
projects
\\
PaddleSeg
\\
inference
\\
conf
\\
humanseg.yaml
--input_dir
=
D:
\\
projects
\\
PaddleSeg
\\
inference
\\
images
\h
umanseg
\\
```
```
预测使用的两个命令参数说明如下:
预测使用的两个命令参数说明如下:
| 参数 | 含义 |
| 参数 | 含义 |
|-------|----------|
|-------|----------|
| conf | 模型配置的
y
aml文件路径 |
| conf | 模型配置的
Y
aml文件路径 |
| input_dir | 需要预测的图片目录 |
| input_dir | 需要预测的图片目录 |
**配置文件**
的样例以及字段注释说明请参考:
[
conf/humanseg.yaml
](
./conf/humanseg.yaml
)
样例程序会扫描input_dir目录下的所有图片,并生成对应的预测结果图片。
配置文件说明请参考上一步,样例程序会扫描input_dir目录下的所有图片,并生成对应的预测结果图片:
文件
`demo.jpg`
预测的结果存储在
`demo_jpg.png`
中,可视化结果在
`demo_jpg_scoremap.png`
中, 原始尺寸的预测结果在
`demo_jpg_recover.png`
中。
文件
`demo.jpg`
预测的结果存储在
`demo_jpg.png`
中,可视化结果在
`demo_jpg_scoremap.png`
中, 原始尺寸的预测结果在
`demo_jpg_recover.png`
中。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录