README.md 9.9 KB
Newer Older
Z
Zeyu Chen 已提交
1
# PaddleSeg 图像分割库
W
wuzewu 已提交
2

W
wuzewu 已提交
3
[![Build Status](https://travis-ci.org/PaddlePaddle/PaddleSeg.svg?branch=master)](https://travis-ci.org/PaddlePaddle/PaddleSeg)
Z
Zeyu Chen 已提交
4
[![License](https://img.shields.io/badge/license-Apache%202-blue.svg)](LICENSE)
W
wuzewu 已提交
5
[![Version](https://img.shields.io/github/release/PaddlePaddle/PaddleSeg.svg)](https://github.com/PaddlePaddle/PaddleSeg/releases)
Z
Zeyu Chen 已提交
6

W
wuzewu 已提交
7 8
## 简介

L
LielinJiang 已提交
9
PaddleSeg是基于[PaddlePaddle](https://www.paddlepaddle.org.cn)开发的语义分割库,覆盖了DeepLabv3+, U-Net, ICNet, PSPNet, HRNet, Fast-SCNN等主流分割模型。通过统一的配置,帮助用户更便捷地完成从训练到部署的全流程图像分割应用。
W
wuzewu 已提交
10

11
</br>
W
wuzewu 已提交
12

13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
- [特点](#特点) 
- [安装](#安装)
- [使用教程](#使用教程)
  - [快速入门](#快速入门)
  - [基础功能](#基础功能)
  - [预测部署](#预测部署)
  - [高级功能](#高级功能)
- [在线体验](#在线体验)
- [FAQ](#FAQ)
- [交流与反馈](#交流与反馈)
- [更新日志](#更新日志)
- [贡献代码](#贡献代码)

</br>

## 特点
W
wuzewu 已提交
29 30 31

- **丰富的数据增强**

Z
Zeyu Chen 已提交
32
基于百度视觉技术部的实际业务经验,内置10+种数据增强策略,可结合实际业务场景进行定制组合,提升模型泛化能力和鲁棒性。
W
wuzewu 已提交
33

Z
Zeyu Chen 已提交
34
- **模块化设计**
W
wuzewu 已提交
35

L
LielinJiang 已提交
36
支持U-Net, DeepLabv3+, ICNet, PSPNet, HRNet, Fast-SCNN六种主流分割网络,结合预训练模型和可调节的骨干网络,满足不同性能和精度的要求;选择不同的损失函数如Dice Loss, BCE Loss等方式可以强化小目标和不均衡样本场景下的分割精度。
W
wuzewu 已提交
37 38 39

- **高性能**

Z
Zeyu Chen 已提交
40
PaddleSeg支持多进程I/O、多卡并行、跨卡Batch Norm同步等训练加速策略,结合飞桨核心框架的显存优化功能,可大幅度减少分割模型的显存开销,让开发者更低成本、更高效地完成图像分割训练。
W
wuzewu 已提交
41

W
wuzewu 已提交
42 43
- **工业级部署**

Z
Zeyu Chen 已提交
44
全面提供**服务端****移动端**的工业级部署能力,依托飞桨高性能推理引擎和高性能图像处理实现,开发者可以轻松完成高性能的分割模型部署和集成。通过[Paddle-Lite](https://github.com/PaddlePaddle/Paddle-Lite),可以在移动设备或者嵌入式设备上完成轻量级、高性能的人像分割模型部署。
W
wuzewu 已提交
45

L
LutaoChu 已提交
46 47 48 49 50
## 安装

### 1. 安装PaddlePaddle

版本要求
W
wuzewu 已提交
51 52 53
* PaddlePaddle >= 1.6.1
* Python 2.7 or 3.5+

L
LutaoChu 已提交
54 55
由于图像分割模型计算开销大,推荐在GPU版本的PaddlePaddle下使用PaddleSeg.
```
C
chulutao 已提交
56
pip install -U paddlepaddle-gpu
L
LutaoChu 已提交
57
```
C
chulutao 已提交
58
同时请保证您参考NVIDIA官网,已经正确配置和安装了显卡驱动,CUDA 9,cuDNN 7.3,NCCL2等依赖,其他更加详细的安装信息请参考:[PaddlePaddle安装说明](https://www.paddlepaddle.org.cn/install/doc/index)
L
LutaoChu 已提交
59 60 61

### 2. 下载PaddleSeg代码

W
wuzewu 已提交
62
```
L
LutaoChu 已提交
63 64 65 66
git clone https://github.com/PaddlePaddle/PaddleSeg
```

### 3. 安装PaddleSeg依赖
67
通过以下命令安装python包依赖,请确保在该分支上至少执行过一次以下命令:
L
LutaoChu 已提交
68 69 70 71
```
cd PaddleSeg
pip install -r requirements.txt
```
72

W
wuzewu 已提交
73 74
</br>

W
wuzewu 已提交
75
## 使用教程
W
wuzewu 已提交
76

Z
Zeyu Chen 已提交
77
我们提供了一系列的使用教程,来说明如何使用PaddleSeg完成语义分割模型的训练、评估、部署。
W
wuzewu 已提交
78

Z
Zeyu Chen 已提交
79
这一系列的文档被分为**快速入门****基础功能****预测部署****高级功能**四个部分,四个教程由浅至深地介绍PaddleSeg的设计思路和使用方法。
W
wuzewu 已提交
80

W
wuzewu 已提交
81
### 快速入门
W
wuzewu 已提交
82

L
LutaoChu 已提交
83
* [PaddleSeg快速入门](./docs/usage.md)
W
wuzewu 已提交
84

W
wuzewu 已提交
85
### 基础功能
W
wuzewu 已提交
86

L
LutaoChu 已提交
87
* [自定义数据的标注与准备](./docs/data_prepare.md)
L
LutaoChu 已提交
88
* [脚本使用和配置说明](./docs/config.md)
W
wuzewu 已提交
89
* [数据和配置校验](./docs/check.md)
L
LutaoChu 已提交
90 91
* [分割模型介绍](./docs/models.md)
* [预训练模型下载](./docs/model_zoo.md)
L
LutaoChu 已提交
92 93 94 95 96
* [DeepLabv3+模型使用教程](./turtorial/finetune_deeplabv3plus.md)
* [U-Net模型使用教程](./turtorial/finetune_unet.md)
* [ICNet模型使用教程](./turtorial/finetune_icnet.md)
* [PSPNet模型使用教程](./turtorial/finetune_pspnet.md)
* [HRNet模型使用教程](./turtorial/finetune_hrnet.md)
L
LielinJiang 已提交
97
* [Fast-SCNN模型使用教程](./turtorial/finetune_fast_scnn.md)
W
wuzewu 已提交
98

W
wuzewu 已提交
99
### 预测部署
W
wuzewu 已提交
100

W
wuzewu 已提交
101
* [模型导出](./docs/model_export.md)
Z
Zeyu Chen 已提交
102 103 104
* [Python预测](./deploy/python/)
* [C++预测](./deploy/cpp/)
* [Paddle-Lite移动端预测部署](./deploy/lite/)
C
channings 已提交
105

W
wuzewu 已提交
106 107 108 109

### 高级功能

* [PaddleSeg的数据增强](./docs/data_aug.md)
L
LutaoChu 已提交
110
* [如何解决二分类中类别不均衡问题](./docs/loss_select.md)
W
wuzewu 已提交
111
* [特色垂类模型使用](./contrib)
112
* [多进程训练和混合精度训练](./docs/multiple_gpus_train_and_mixed_precision_train.md)
L
LielinJiang 已提交
113
* 使用PaddleSlim进行分割模型压缩([量化](./slim/quantization/README.md), [蒸馏](./slim/distillation/README.md), [剪枝](./slim/prune/README.md), [搜索](./slim/nas/README.md))
L
LutaoChu 已提交
114 115 116 117 118 119 120
## 在线体验

我们在AI Studio平台上提供了在线体验的教程,欢迎体验:

|在线教程|链接|
|-|-|
|快速开始|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/100798)|
L
LutaoChu 已提交
121
|U-Net图像分割|[点击体验](https://aistudio.baidu.com/aistudio/projectDetail/102889)|
L
LutaoChu 已提交
122
|DeepLabv3+图像分割|[点击体验](https://aistudio.baidu.com/aistudio/projectDetail/226703)|
L
LutaoChu 已提交
123 124
|工业质检(零件瑕疵检测)|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/184392)|
|人像分割|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/188833)|
L
LutaoChu 已提交
125
|PaddleSeg特色垂类模型|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/226710)|
L
LutaoChu 已提交
126

W
wuzewu 已提交
127
</br>
W
wuzewu 已提交
128 129 130

## FAQ

W
wuzewu 已提交
131 132
#### Q: 安装requirements.txt指定的依赖包时,部分包提示找不到?

Z
Zeyu Chen 已提交
133
A: 可能是pip源的问题,这种情况下建议切换为官方源,或者通过`pip install -r requirements.txt -i `指定其他源地址。
W
wuzewu 已提交
134

Z
Zeyu Chen 已提交
135
#### Q:图像分割的数据增强如何配置,Unpadding, StepScaling, RangeScaling的原理是什么?
W
wuzewu 已提交
136

Z
Zeyu Chen 已提交
137
A: 更详细数据增强文档可以参考[数据增强](./docs/data_aug.md)
W
wuzewu 已提交
138

Z
Zeyu Chen 已提交
139 140
#### Q: 训练时因为某些原因中断了,如何恢复训练?

Z
Zeyu Chen 已提交
141
A: 启动训练脚本时通过命令行覆盖TRAIN.RESUME_MODEL_DIR配置为模型checkpoint目录即可, 以下代码示例第100轮重新恢复训练:
Z
Zeyu Chen 已提交
142 143 144 145
```
python pdseg/train.py --cfg xxx.yaml TRAIN.RESUME_MODEL_DIR /PATH/TO/MODEL_CKPT/100
```

W
wuzewu 已提交
146 147
#### Q: 预测时图片过大,导致显存不足如何处理?

Z
Zeyu Chen 已提交
148
A: 降低Batch size,使用Group Norm策略;请注意训练过程中当`DEFAULT_NORM_TYPE`选择`bn`时,为了Batch Norm计算稳定性,batch size需要满足>=2
W
wuzewu 已提交
149

Z
Zeyu Chen 已提交
150

Z
Zeyu Chen 已提交
151 152 153 154
#### Q: 出现错误 ModuleNotFoundError: No module named 'paddle.fluid.contrib.mixed_precision'

A: 请将PaddlePaddle升级至1.5.2版本或以上。

W
wuzewu 已提交
155 156
</br>

L
LutaoChu 已提交
157
## 交流与反馈
W
wuzewu 已提交
158
* 欢迎您通过[Github Issues](https://github.com/PaddlePaddle/PaddleSeg/issues)来提交问题、报告与建议
Z
Zeyu Chen 已提交
159
* 微信公众号:飞桨PaddlePaddle
W
wuzewu 已提交
160
* QQ群: 796771754
Z
Zeyu Chen 已提交
161

Z
Zeyu Chen 已提交
162
<p align="center"><img width="200" height="200"  src="https://user-images.githubusercontent.com/45189361/64117959-1969de80-cdc9-11e9-84f7-e1c2849a004c.jpeg"/>&#8194;&#8194;&#8194;&#8194;&#8194;<img width="200" height="200" margin="500" src="./docs/imgs/qq_group2.png"/></p>
Z
Zeyu Chen 已提交
163 164
<p align="center">  &#8194;&#8194;&#8194;微信公众号&#8194;&#8194;&#8194;&#8194;&#8194;&#8194;&#8194;&#8194;&#8194;&#8194;&#8194;&#8194;&#8194;&#8194;&#8194;&#8194;官方技术交流QQ群</p>

W
wuzewu 已提交
165
## 更新日志
L
LielinJiang 已提交
166 167 168
* 2020.02.25

  **`v0.4.0`**
L
LielinJiang 已提交
169
  * 新增Fast-SCNN分割网络,提供基于cityscapes的[预训练模型](./docs/model_zoo.md)1个。Fast-SCNN不需要imagenet的预训练模型,精度与Deeplabv3p-mobilenetV2、ICNet持平,性能优于两者。
L
LielinJiang 已提交
170
  * 新增LaneNet车道线检测网络,提供[预训练模型](https://github.com/PaddlePaddle/PaddleSeg/tree/release/v0.4.0/contrib/LaneNet#%E4%B8%83-%E5%8F%AF%E8%A7%86%E5%8C%96)一个。
L
LielinJiang 已提交
171 172 173
  * 新增基于PaddleSlim的分割库压缩策略([量化](./slim/quantization/README.md), [蒸馏](./slim/distillation/README.md), [剪枝](./slim/prune/README.md), [搜索](./slim/nas/README.md))
  
  
Z
Zeyu Chen 已提交
174
* 2019.12.15
W
wuzewu 已提交
175

Z
Zeyu Chen 已提交
176
  **`v0.3.0`**
W
wuzewu 已提交
177 178 179
  * 新增HRNet分割网络,提供基于cityscapes和ImageNet的[预训练模型](./docs/model_zoo.md)8个
  * 支持使用[伪彩色标签](./docs/data_prepare.md#%E7%81%B0%E5%BA%A6%E6%A0%87%E6%B3%A8vs%E4%BC%AA%E5%BD%A9%E8%89%B2%E6%A0%87%E6%B3%A8)进行训练/评估/预测,提升训练体验,并提供将灰度标注图转为伪彩色标注图的脚本
  * 新增[学习率warmup](./docs/configs/solver_group.md#lr_warmup)功能,支持与不同的学习率Decay策略配合使用
Z
Zeyu Chen 已提交
180
  * 新增图像归一化操作的GPU化实现,进一步提升预测速度。
Z
Zeyu Chen 已提交
181 182
  * 新增Python部署方案,更低成本完成工业级部署。
  * 新增Paddle-Lite移动端部署方案,支持人像分割模型的移动端部署。
Z
Zeyu Chen 已提交
183
  * 新增不同分割模型的预测[性能数据Benchmark](./deploy/python/docs/PaddleSeg_Infer_Benchmark.md), 便于开发者提供模型选型性能参考。
Z
Zeyu Chen 已提交
184 185

  
W
wuzewu 已提交
186 187 188
* 2019.11.04

  **`v0.2.0`**
Z
Zeyu Chen 已提交
189 190 191 192 193
  * 新增PSPNet分割网络,提供基于COCO和cityscapes数据集的[预训练模型](./docs/model_zoo.md)4个。
  * 新增Dice Loss、BCE Loss以及组合Loss配置,支持样本不均衡场景下的[模型优化](./docs/loss_select.md)
  * 支持[FP16混合精度训练](./docs/multiple_gpus_train_and_mixed_precision_train.md)以及动态Loss Scaling,在不损耗精度的情况下,训练速度提升30%+。
  * 支持[PaddlePaddle多卡多进程训练](./docs/multiple_gpus_train_and_mixed_precision_train.md),多卡训练时训练速度提升15%+。
  * 发布基于UNet的[工业标记表盘分割模型](./contrib#%E5%B7%A5%E4%B8%9A%E7%94%A8%E8%A1%A8%E5%88%86%E5%89%B2)
W
wuzewu 已提交
194

Z
Zeyu Chen 已提交
195
* 2019.09.10
W
wuzewu 已提交
196

W
wuzewu 已提交
197
  **`v0.1.0`**
W
wuzewu 已提交
198
  * PaddleSeg分割库初始版本发布,包含DeepLabv3+, U-Net, ICNet三类分割模型, 其中DeepLabv3+支持Xception, MobileNet v2两种可调节的骨干网络。
Z
Zeyu Chen 已提交
199 200
  * CVPR19 LIP人体部件分割比赛冠军预测模型发布[ACE2P](./contrib/ACE2P)
  * 预置基于DeepLabv3+网络的[人像分割](./contrib/HumanSeg/)[车道线分割](./contrib/RoadLine)预测模型发布。
W
wuzewu 已提交
201

W
wuzewu 已提交
202
</br>
W
wuzewu 已提交
203

L
LutaoChu 已提交
204
## 贡献代码
W
wuzewu 已提交
205

206
我们非常欢迎您为PaddleSeg贡献代码或者提供使用建议。如果您可以修复某个issue或者增加一个新功能,欢迎给我们提交pull requests.