本方案旨在提供一个PaddlePaddle
跨平台图像分割模型的Python
预测部署方案作为参考,用户通过一定的配置,加上少量的代码,即可把模型集成到自己的服务中,完成图像分割的任务。
如果硬件支持(如Tesla V100 GPU
等),本程序支持使用Nvidia TensorRT
进行FP32
和FP16
两种精度进行推理性能加速。
- Python2.7/Python3
├── infer.py # 核心代码,完成分割模型的预测以及结果可视化
├── requirements.txt # 依赖的Python包
└── README.md # 说明文档
如何选择合适版本的PaddlePaddle
版本进行安装,可参考: PaddlePaddle安装教程
注意: 如硬件支持且需要使用TensorRT
支持FP16
半精度优化等, 则本步骤需要自行安装TensorRT
并编译PaddlePaddle
, 点击查看编译安装参考文档
在当前目录下, 使用pip
安装Python
依赖包
pip install -r requirements.txt
预测代码中需要使用OpenCV
,所以还需要OpenCV
安装相关的动态链接库。
Ubuntu
下安装相关链接库:
apt-get install -y libglib2.0-0 libsm6 libxext6 libxrender-dev
CentOS 下安装相关链接库:
yum install -y libXext libSM libXrender
请使用模型导出工具 导出您的模型, 或点击下载我们的人像分割样例模型用于测试。
模型导出的目录通常包括三个文件:
├── model # 模型文件
├── params # 参数文件
└── deploy.yaml # 配置文件,用于C++或Python预测
配置文件的主要字段及其含义如下:
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: [0.5, 0.5, 0.5]
# 方差
STD: [0.5, 0.5, 0.5]
# 分类类型数
NUM_CLASSES: 2
# 图片通道数
CHANNELS : 3
# 预测模式,支持 NATIVE 和 ANALYSIS
PREDICTOR_MODE: "ANALYSIS"
# 每次预测的 batch_size
BATCH_SIZE : 3
在终端输入以下命令进行预测:
python infer.py --conf=/path/to/deploy.yaml --input_dir=/path/to/images_directory
参数说明如下:
参数 | 是否必须 | 含义 |
---|---|---|
conf | Yes | 模型配置的Yaml文件路径 |
input_dir | Yes | 需要预测的图片目录 |
注意: 如果硬件支持且安装的是从源码编译集成TensorRT
的PaddlePaddle
, 则可以使用参数--trt_mode=fp16
表示开启FP16
精度优化, 使用trt_mode=fp32
表示使用FP32
精度。
运行后程序会扫描input_dir
目录下所有指定格式图片,并生成预测mask
和可视化的结果
。
对于图片a.jpeg
, 预测mask
存在a_jpeg.png
中,而可视化结果则在a_jpeg_result.png
中。