PaddleSeg 图像分割库
简介
PaddleSeg是基于PaddlePaddle开发的语义分割库,覆盖了DeepLabv3+, U-Net, ICNet, PSPNet, HRNet, Fast-SCNN等主流分割模型。通过统一的配置,帮助用户更便捷地完成从训练到部署的全流程图像分割应用。
特点
- 丰富的数据增强
基于百度视觉技术部的实际业务经验,内置10+种数据增强策略,可结合实际业务场景进行定制组合,提升模型泛化能力和鲁棒性。
- 模块化设计
支持U-Net, DeepLabv3+, ICNet, PSPNet, HRNet, Fast-SCNN六种主流分割网络,结合预训练模型和可调节的骨干网络,满足不同性能和精度的要求;选择不同的损失函数如Dice Loss, BCE Loss等方式可以强化小目标和不均衡样本场景下的分割精度。
- 高性能
PaddleSeg支持多进程I/O、多卡并行、跨卡Batch Norm同步等训练加速策略,结合飞桨核心框架的显存优化功能,可大幅度减少分割模型的显存开销,让开发者更低成本、更高效地完成图像分割训练。
- 工业级部署
全面提供服务端和移动端的工业级部署能力,依托飞桨高性能推理引擎和高性能图像处理实现,开发者可以轻松完成高性能的分割模型部署和集成。通过Paddle-Lite,可以在移动设备或者嵌入式设备上完成轻量级、高性能的人像分割模型部署。
安装
1. 安装PaddlePaddle
版本要求
- PaddlePaddle >= 1.6.1
- Python 2.7 or 3.5+
由于图像分割模型计算开销大,推荐在GPU版本的PaddlePaddle下使用PaddleSeg.
pip install -U paddlepaddle-gpu
同时请保证您参考NVIDIA官网,已经正确配置和安装了显卡驱动,CUDA 9,cuDNN 7.3,NCCL2等依赖,其他更加详细的安装信息请参考:PaddlePaddle安装说明。
2. 下载PaddleSeg代码
git clone https://github.com/PaddlePaddle/PaddleSeg
3. 安装PaddleSeg依赖
通过以下命令安装python包依赖,请确保在该分支上至少执行过一次以下命令:
cd PaddleSeg
pip install -r requirements.txt
使用教程
我们提供了一系列的使用教程,来说明如何使用PaddleSeg完成语义分割模型的训练、评估、部署。
这一系列的文档被分为快速入门、基础功能、预测部署、高级功能四个部分,四个教程由浅至深地介绍PaddleSeg的设计思路和使用方法。
快速入门
基础功能
- 自定义数据的标注与准备
- 脚本使用和配置说明
- 数据和配置校验
- 分割模型介绍
- 预训练模型下载
- DeepLabv3+模型使用教程
- U-Net模型使用教程
- ICNet模型使用教程
- PSPNet模型使用教程
- HRNet模型使用教程
- Fast-SCNN模型使用教程
预测部署
高级功能
- PaddleSeg的数据增强
- 如何解决二分类中类别不均衡问题
- 特色垂类模型使用
- 多进程训练和混合精度训练
- 使用PaddleSlim进行分割模型压缩(量化, 蒸馏, 剪枝, 搜索)
在线体验
我们在AI Studio平台上提供了在线体验的教程,欢迎体验:
在线教程 | 链接 |
---|---|
快速开始 | 点击体验 |
U-Net图像分割 | 点击体验 |
DeepLabv3+图像分割 | 点击体验 |
工业质检(零件瑕疵检测) | 点击体验 |
人像分割 | 点击体验 |
PaddleSeg特色垂类模型 | 点击体验 |
FAQ
Q: 安装requirements.txt指定的依赖包时,部分包提示找不到?
A: 可能是pip源的问题,这种情况下建议切换为官方源,或者通过pip install -r requirements.txt -i
指定其他源地址。
Q:图像分割的数据增强如何配置,Unpadding, StepScaling, RangeScaling的原理是什么?
A: 更详细数据增强文档可以参考数据增强
Q: 训练时因为某些原因中断了,如何恢复训练?
A: 启动训练脚本时通过命令行覆盖TRAIN.RESUME_MODEL_DIR配置为模型checkpoint目录即可, 以下代码示例第100轮重新恢复训练:
python pdseg/train.py --cfg xxx.yaml TRAIN.RESUME_MODEL_DIR /PATH/TO/MODEL_CKPT/100
Q: 预测时图片过大,导致显存不足如何处理?
A: 降低Batch size,使用Group Norm策略;请注意训练过程中当DEFAULT_NORM_TYPE
选择bn
时,为了Batch Norm计算稳定性,batch size需要满足>=2
Q: 出现错误 ModuleNotFoundError: No module named 'paddle.fluid.contrib.mixed_precision'
A: 请将PaddlePaddle升级至1.5.2版本或以上。
交流与反馈
- 欢迎您通过Github Issues来提交问题、报告与建议
- 微信公众号:飞桨PaddlePaddle
- QQ群: 796771754
微信公众号 官方技术交流QQ群
更新日志
-
2020.02.25
v0.4.0
-
2019.12.15
v0.3.0
- 新增HRNet分割网络,提供基于cityscapes和ImageNet的预训练模型8个
- 支持使用伪彩色标签进行训练/评估/预测,提升训练体验,并提供将灰度标注图转为伪彩色标注图的脚本
- 新增学习率warmup功能,支持与不同的学习率Decay策略配合使用
- 新增图像归一化操作的GPU化实现,进一步提升预测速度。
- 新增Python部署方案,更低成本完成工业级部署。
- 新增Paddle-Lite移动端部署方案,支持人像分割模型的移动端部署。
- 新增不同分割模型的预测性能数据Benchmark, 便于开发者提供模型选型性能参考。
-
2019.11.04
v0.2.0
- 新增PSPNet分割网络,提供基于COCO和cityscapes数据集的预训练模型4个。
- 新增Dice Loss、BCE Loss以及组合Loss配置,支持样本不均衡场景下的模型优化。
- 支持FP16混合精度训练以及动态Loss Scaling,在不损耗精度的情况下,训练速度提升30%+。
- 支持PaddlePaddle多卡多进程训练,多卡训练时训练速度提升15%+。
- 发布基于UNet的工业标记表盘分割模型。
-
2019.09.10
v0.1.0
贡献代码
我们非常欢迎您为PaddleSeg贡献代码或者提供使用建议。如果您可以修复某个issue或者增加一个新功能,欢迎给我们提交pull requests.