Skip to content

Latest commit

 

History

History
469 lines (402 loc) · 25.8 KB

README_EN.md

File metadata and controls

469 lines (402 loc) · 25.8 KB

English | 简体中文

A High-Efficient Development Toolkit for Image Segmentation based on PaddlePaddle.

License Version python version support os stars

News

  • [2022-10-11] 🔥 Release the official implementation of RTFormer accepted by NeurIPS 2022.
  • [2022-07-20] 🔥 PaddleSeg v2.6 is released! More details in Release Notes.
    • Release PP-HumanSeg v2, an off-the-shelf human segmentation model. It achieves 64.26 FPS on the mobile device, which is 45.5% faster than before.
    • Release EISeg v1.0, the stable-version semi-automatic tool for image, video and 3D slice data annotation. It achieves "Once for All" (training once, and labelling all) performance.
    • Release PSSL, a novel pre-training method, including a large dataset that consists of 1.2M+ pseudo semantic segmentation labels corresponding to the whole ImageNet training set. It boosts the performances of various models on all downstream tasks.
    • Release PP-Matting source code and the pre-trained models. Also, add five more matting methods in machine learning that allow direct usage without training.
    • Release the industrial model series: high-accuracy models, light-weight models, and super light-weight models, to help developers pick up the most suitable one.
  • [2022-04-20] PaddleSeg v2.5 released a real-time semantic segmentation model PP-LiteSeg, a trimap-free image matting model PP-Matting, and an easy-to-use toolkit for 3D medical image segmentation MedicalSeg.
  • [2022-01-20] We release PaddleSeg v2.4 with EISeg v0.4, and PP-HumanSeg including open-sourced dataset PP-HumanSeg14K.

Introduction

PaddleSeg is an end-to-end high-efficent development toolkit for image segmentation based on PaddlePaddle, which helps both developers and researchers in the whole process of designing segmentation models, training models, optimizing performance and inference speed, and deploying models. A lot of well-trained models and various real-world applications in both industry and academia help users conveniently build hands-on experiences in image segmentation.

Features

  • High-Performance Model: Following the state of the art segmentation methods and use the high-performance backbone trained by semi-supervised label knowledge distillation scheme (SSLD), we provide 40+ models and 140+ high-quality pre-training models, which are better than other open-source implementations.

  • High Efficiency: PaddleSeg provides multi-process asynchronous I/O, multi-card parallel training, evaluation, and other acceleration strategies, combined with the memory optimization function of the PaddlePaddle, which can greatly reduce the training overhead of the segmentation model, all this allowing developers to lower cost and more efficiently train image segmentation model.

  • Modular Design: We desigin PaddleSeg with the modular design philosophy. Therefore, based on actual application scenarios, developers can assemble diversified training configurations with data enhancement strategies, segmentation models, backbone networks, loss functions and other different components to meet different performance and accuracy requirements.

  • Complete Flow: PaddleSeg support image labeling, model designing, model training, model compression and model deployment. With the help of PaddleSeg, developers can easily finish all taskes.

Community

  • If you have any questions, suggestions and feature requests, please create an issues in GitHub Issues.
  • Welcome to scan the following QR code and join paddleseg wechat group to communicate with us.

Overview

Models Components Special Cases
Backbones
Losses
Metrics
  • mIoU
  • Accuracy
  • Kappa
  • Dice
  • AUC_ROC
Datasets
Data Augmentation
  • Flipping
  • Resize
  • ResizeByLong
  • ResizeByShort
  • LimitLong
  • ResizeRangeScaling
  • ResizeStepScaling
  • Normalize
  • Padding
  • PaddingByAspectRatio
  • RandomPaddingCrop
  • RandomCenterCrop
  • ScalePadding
  • RandomNoise
  • RandomBlur
  • RandomRotation
  • RandomScaleAspect
  • RandomDistort
  • RandomAffine
Model Selection Tool
Human Segmentation
MedicalSeg
Cityscapes SOTA Model
CVPR Champion Model
Domain Adaptation

Industrial Segmentation Models

High Accuracy Semantic Segmentation Models

These models have good performance and costly inference time, so they are designed for GPU and Jetson devices.

Model Backbone Cityscapes mIoU(%) V100 TRT Inference Speed(FPS) Config File
FCN HRNet_W18 78.97 24.43 yml
FCN HRNet_W48 80.70 10.16 yml
DeepLabV3 ResNet50_OS8 79.90 4.56 yml
DeepLabV3 ResNet101_OS8 80.85 3.2 yml
DeepLabV3 ResNet50_OS8 80.36 6.58 yml
DeepLabV3 ResNet101_OS8 81.10 3.94 yml
OCRNet 🌟 HRNet_w18 80.67 13.26 yml
OCRNet HRNet_w48 82.15 6.17 yml
CCNet ResNet101_OS8 80.95 3.24 yml

Note that:

  • Test the inference speed on Nvidia GPU V100: use PaddleInference Python API, enable TensorRT, the data type is FP32, the dimension of input is 1x3x1024x2048.
Lightweight Semantic Segmentation Models

The segmentation accuracy and inference speed of these models are medium. They can be deployed on GPU, X86 CPU and ARM CPU.

Model Backbone Cityscapes mIoU(%) V100 TRT Inference Speed(FPS) Snapdragon 855 Inference Speed(FPS) Config File
PP-LiteSeg 🌟 STDC1 77.04 69.82 17.22 yml
PP-LiteSeg 🌟 STDC2 79.04 54.53 11.75 yml
BiSeNetV1 - 75.19 14.67 1.53 yml
BiSeNetV2 - 73.19 61.83 13.67 yml
STDCSeg STDC1 74.74 62.24 14.51 yml
STDCSeg STDC2 77.60 51.15 10.95 yml
DDRNet_23 - 79.85 42.64 7.68 yml
HarDNet - 79.03 30.3 5.44 yml
SFNet ResNet18_OS8 78.72 10.72 - yml

Note that:

  • Test the inference speed on Nvidia GPU V100: use PaddleInference Python API, enable TensorRT, the data type is FP32, the dimension of input is 1x3x1024x2048.
  • Test the inference speed on Snapdragon 855: use PaddleLite CPP API, 1 thread, the dimension of input is 1x3x256x256.
Super Lightweight Semantic Segmentation Models

These super lightweight semantic segmentation models are designed for X86 CPU and ARM CPU.

Model Backbone Cityscapes mIoU(%) V100 TRT Inference Speed(FPS) Snapdragon 855 Inference Speed(FPS) Config File
MobileSeg MobileNetV2 73.94 67.57 27.01 yml
MobileSeg 🌟 MobileNetV3 73.47 67.39 32.90 yml
MobileSeg Lite_HRNet_18 70.75 10.5 13.05 yml
MobileSeg ShuffleNetV2_x1_0 69.46 37.09 39.61 yml
MobileSeg GhostNet_x1_0 71.88 35.58 38.74 yml

Note that:

  • Test the inference speed on Nvidia GPU V100: use PaddleInference Python API, enable TensorRT, the data type is FP32, the dimension of input is 1x3x1024x2048.
  • Test the inference speed on Snapdragon 855: use PaddleLite CPP API, 1 thread, the dimension of input is 1x3x256x256.

Tutorials

Tutorials

Docs

Welcome to Contribute

Practical Projects

AI Studio tutorials

License

PaddleSeg is released under the Apache 2.0 license.

Acknowledgement

  • Thanks jm12138 for contributing U2-Net.
  • Thanks zjhellofss (Fu Shenshen) for contributing Attention U-Net, and Dice Loss.
  • Thanks liuguoyu666, geoyee for contributing U-Net++ and U-Net3+.
  • Thanks yazheng0307 (LIU Zheng) for contributing quick-start document.
  • Thanks CuberrChen for contributing STDC(rethink BiSeNet), PointRend and DetailAggregateLoss.
  • Thanks stuartchen1949 for contributing SegNet.
  • Thanks justld (Lang Du) for contributing UPerNet, DDRNet, CCNet, ESPNetV2, DMNet, ENCNet, HRNet_W48_Contrast, FastFCN, BiSeNetV1, SECrossEntropyLoss and PixelContrastCrossEntropyLoss.
  • Thanks Herman-Hu-saber (Hu Huiming) for contributing ESPNetV2.
  • Thanks zhangjin12138 for contributing RandomCenterCrop.
  • Thanks simuler for contributing ESPNetV1.
  • Thanks ETTR123(Zhang Kai) for contributing ENet, PFPNNet.

Citation

If you find our project useful in your research, please consider citing:

@misc{liu2021paddleseg,
      title={PaddleSeg: A High-Efficient Development Toolkit for Image Segmentation},
      author={Yi Liu and Lutao Chu and Guowei Chen and Zewu Wu and Zeyu Chen and Baohua Lai and Yuying Hao},
      year={2021},
      eprint={2101.06175},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

@misc{paddleseg2019,
    title={PaddleSeg, End-to-end image segmentation kit based on PaddlePaddle},
    author={PaddlePaddle Contributors},
    howpublished = {\url{https://github.com/PaddlePaddle/PaddleSeg}},
    year={2019}
}