Skip to content

End-to-End Image Segmentation Kits Based on PaddlePaddle. (『飞桨』图像分割开发套件)

License

Notifications You must be signed in to change notification settings

wodeyoulai/PaddleSeg

 
 

Repository files navigation

PaddleSeg

Build Status License Version python version support os

简介

PaddleSeg是基于PaddlePaddle开发的端到端图像分割开发套件,覆盖了DeepLabv3+, U-Net, ICNet, PSPNet, HRNet, Fast-SCNN等主流分割网络。通过模块化的设计,以配置化方式驱动模型组合,帮助开发者更便捷地完成从训练到部署的全流程图像分割应用。

特点

  • 丰富的数据增强

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

  • 模块化设计

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

  • 高性能

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

  • 工业级部署

全面提供服务端移动端的工业级部署能力,依托飞桨高性能推理引擎和高性能图像处理实现,开发者可以轻松完成高性能的分割模型部署和集成。通过Paddle-Lite,可以在移动设备或者嵌入式设备上完成轻量级、高性能的人像分割模型部署。

  • 产业实践案例

PaddleSeg提供丰富地产业实践案例,如人像分割工业表计检测遥感分割人体解析工业质检等产业实践案例,助力开发者更便捷地落地图像分割技术。

安装

1. 安装PaddlePaddle

版本要求

  • PaddlePaddle >= 1.7.0 and < 2.0
  • Python >= 3.5+

由于图像分割模型计算开销大,推荐在GPU版本的PaddlePaddle下使用PaddleSeg.

安装教程请见PaddlePaddle官网

2. 下载PaddleSeg代码

git clone https://github.com/PaddlePaddle/PaddleSeg

3. 安装PaddleSeg依赖

通过以下命令安装python包依赖,请确保在该分支上至少执行过一次以下命令:

cd PaddleSeg
pip install -r requirements.txt

使用教程

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

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

快速入门

基础功能

预测部署

高级功能

在线体验

我们在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

交流与反馈

  • 欢迎您通过Github Issues来提交问题、报告与建议
  • 微信公众号:飞桨PaddlePaddle
  • QQ群: 703252161

     

   微信公众号                官方技术交流QQ群

更新日志

  • 2020.10.28

    v0.7.0

    • 全面支持Paddle2.0-rc动态图模式,推出PaddleSeg动态图体验版

    • 发布大量动态图模型,支持11个分割模型,4个骨干网络,3个数据集:

      • 分割模型:ANN, BiSeNetV2, DANet, DeeplabV3, DeeplabV3+, FCN, FastSCNN, GCNet, OCRNet, PSPNet, UNet
      • 骨干网络:ResNet, HRNet, MobileNetV3, Xception
      • 数据集:Cityscapes, ADE20K, Pascal VOC
    • 提供高精度骨干网络预训练模型以及基于Cityscapes数据集的语义分割预训练模型。Cityscapes精度超过82%

  • 2020.08.31

    v0.6.0

    • 丰富Deeplabv3p网络结构,新增ResNet-vd、MobileNetv3两种backbone,满足高性能与高精度场景,并提供基于Cityscapes和ImageNet的预训练模型4个。
    • 新增高精度分割模型OCRNet,支持以HRNet作为backbone,提供基于Cityscapes的预训练模型,mIoU超过80%。
    • 新增proposal free的实例分割模型Spatial Embedding,性能与精度均超越MaskRCNN。提供了基于kitti的预训练模型。
  • 2020.05.12

    v0.5.0

    • 全面升级HumanSeg人像分割模型,新增超轻量级人像分割模型HumanSeg-lite支持移动端实时人像分割处理,并提供基于光流的视频分割后处理提升分割流畅性。
    • 新增气象遥感分割方案,支持积雪识别、云检测等气象遥感场景。
    • 新增Lovasz Loss,解决数据类别不均衡问题。
    • 使用VisualDL 2.0作为训练可视化工具
  • 2020.02.25

    v0.4.0

    • 新增适用于实时场景且不需要预训练模型的分割网络Fast-SCNN,提供基于Cityscapes的预训练模型1个
    • 新增LaneNet车道线检测网络,提供预训练模型一个
    • 新增基于PaddleSlim的分割库压缩策略(量化, 蒸馏, 剪枝, 搜索)
  • 2019.12.15

    v0.3.0

    • 新增HRNet分割网络,提供基于cityscapes和ImageNet的预训练模型8个
    • 支持使用伪彩色标签进行训练/评估/预测,提升训练体验,并提供将灰度标注图转为伪彩色标注图的脚本
    • 新增学习率warmup功能,支持与不同的学习率Decay策略配合使用
    • 新增图像归一化操作的GPU化实现,进一步提升预测速度。
    • 新增Python部署方案,更低成本完成工业级部署。
    • 新增Paddle-Lite移动端部署方案,支持人像分割模型的移动端部署。
    • 新增不同分割模型的预测性能数据Benchmark, 便于开发者提供模型选型性能参考。
  • 2019.11.04

    v0.2.0

  • 2019.09.10

    v0.1.0

    • PaddleSeg分割库初始版本发布,包含DeepLabv3+, U-Net, ICNet三类分割模型, 其中DeepLabv3+支持Xception, MobileNet v2两种可调节的骨干网络。
    • CVPR19 LIP人体部件分割比赛冠军预测模型发布ACE2P
    • 预置基于DeepLabv3+网络的人像分割车道线分割预测模型发布。

贡献代码

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

About

End-to-End Image Segmentation Kits Based on PaddlePaddle. (『飞桨』图像分割开发套件)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 92.2%
  • C++ 4.0%
  • Java 2.9%
  • Other 0.9%