杂记
以下是在图像分割任务上对三个流行库——MMSegmentation(OpenMMLab)、Segmentation Models Pytorch(以下简称 SMP,由 qubvel 维护)以及 Torchvision(PyTorch 官方子模块)——在模型多样性、预训练模型与评估报告、速度性能、社区支持与易用性等方面的细致比较。
核心结论:
MMSegmentation 拥有最丰富的算法实现与统一的 Benchmark,适合追求最前沿、全面比较的研究;SMP 则以简洁的 API 和对 800+ 编码器的支持著称,模型容量大、便于快速原型迭代;Torchvision 虽然模型种类最少,但得益于 PyTorch 官方身份,依托核心库自带最稳定的预训练权重和轻量级部署,适合对轻量任务和快速集成的场景。
MMSegmentation:OpenMMLab 旗下的语义分割一站式工具箱,支持从 PSPNet、DeepLabV3+ 到 HRNet、OCRNet 等 25+ 主流与前沿方法,且提供统一的配置系统与 Benchmark 工具(GitHub, mmsegmentation.readthedocs.io)。
Segmentation Models Pytorch (SMP):由 Pavel Iakubovskii 发起、qubvel 维护的社区驱动项目,封装了 U-Net、FPN、PAN、DeepLabV3+、PSPNet、SegFormer、UPerNet 等 30+ 分割架构,并基于 timm 支持 800+ 编码器(GitHub, GitHub)。
Torchvision.models.segmentation:PyTorch 官方子模块,现包含 FCN(ResNet50/101)、DeepLabV3(ResNet50/101、MobileNetV3)、LR-ASPP(MobileNetV3)三大语义分割模型,以及 Mask R‑CNN 等实例分割模型,种类最少但维护稳定(PyTorch)。
算法实现:覆盖经典与前沿,从 FCN、PSPNet、DeepLabV3+,到 OCRNet、CCNet、HRNet、SegFormer、SET R 等共计 25+ 种方法(mmsegmentation.readthedocs.io)。
模型容量:用户可自由组合多达 50+ Backbone、Decode Head、Auxiliary Head 等组件,支持自定义扩展。
算法实现:内置 U-Net、FPN、PAN、PSPNet、DeepLabV3+、UPerNet、LinkNet、SegFormer、DPT 等约 30+ 分割架构。
编码器支持:通过 timm 集成 800+ 编码器(包括 ConvNeXt、Swin、MobileViT、EfficientFormer 等),可选轻量到高容量网络,覆盖从几百万到数亿参数的范围(GitHub, GitHub)。
算法实现:仅提供 FCN、DeepLabV3、LR-ASPP 三种语义分割主干;实例分割则有 Mask R‑CNN。
编码器限制:仅限官方实现的 ResNet 与 MobileNetV3,无法直接调用第三方 timm 编码器(PyTorch)。
统一 Benchmark:官方在 Cityscapes、ADE20K、COCO-Stuff 等数据集上对 ResNet-101V1c Backbone 的 PSPNet、DeepLabV3+ 等实现进行了规范化训练与测试,结果与速度一并公开(mmsegmentation.readthedocs.io)。
Model Zoo:提供数十个经典与新兴模型的权重与 mIoU、参数量、GFLOPS 等指标。
预训练权重:所有 timm 编码器均带 ImageNet 权重,部分模型(如 DPT、SegFormer、UPerNet)提供在 ADE20K 等数据集上预训练的 checkpoint,可通过 smp.from_pretrained 一行代码加载�(GitHub)。
评估报告:无统一官方 Benchmark,但在 GitHub “Competitions won” 页面罗列了多个分割竞赛中的使用案例与成绩,社区驱动评估为主(GitHub)。
预训练权重:官方在 COCO 与 Pascal VOC 子集(20 类)上提供权重,并在文档中列出所有语义分割模型的 mIoU、像素准确率、参数量与 GFLOPS:如 DeepLabV3_ResNet101 在 VOC 上达 67.4% mIoU,61.0M 参数,258.7 GFLOPS(PyTorch)。
评估报告:仅表格化展示,无统一训练脚本或官网 Benchmark。
训练速度:在 8×V100、1024×512 分辨率、批量大小 2、ResNet-101V1c Backbone 下,PSPNet 平均 0.83 s/iter,DeepLabV3+ 平均 0.85 s/iter(mmsegmentation.readthedocs.io)。
推理速度:官方以 slide 与 whole 两种策略测量前向及后处理时间,排除了数据加载开销,给出多种方法的对比结果。
训练速度:无官方公布;可以视作原生 PyTorch 实现,开销与 SMP 类似。
推理速度:据 GFLOPS 可粗略估算,deeplabv3_mobilenet_v3_large 仅 2.09 GFLOPS,适合实时场景;而 deeplabv3_resnet101 则需 ~259 GFLOPS,适合高精度场景(PyTorch)。
MMSegmentation:GitHub ★28k+,OpenMMLab 生态下文档齐全、配置化管理、示例与教程丰富。Issue 响应速度快,定期更新。
SMP:GitHub ★10k+,社区活跃,文档清晰、API 简单;部分高级功能(如混合精度、分布式)需用户自行实现。
Torchvision:PyTorch 核心库,GitHub ★60k+,分割模块仍在 Beta,文档相对简洁,多任务(分类/检测/分割)一体化。
MMSegmentation:学习曲线较陡,需要理解配置系统、组件组合与训练脚本;适合大型项目与科研。
SMP:极简 API,通常两行代码即可初始化并训练模型,适合快速原型与竞赛。
Torchvision:最易上手,与 PyTorch 同步更新,适合轻量集成与快速原型。
| 维度 | MMSegmentation | SMP | Torchvision |
|---|---|---|---|
| 模型多样性 | ★★★★★(25+ 主流与前沿方法) | ★★★★(30+ 架构、800+ 编码器) | ★★(3 种语义、1 种实例) |
| 预训练模型 | ★★★★(官方 Model Zoo) | ★★★(SMP Hub, ADE20K 等) | ★★★(COCO/VOC 权重) |
| 统一评估报告 | ★★★★★(Benchmark & Model Zoo) | ★★(社区竞赛案例) | ★★(参数表格) |
| 训练速度 | ★★★★(0.83–0.85 s/iter) | ★★★(无基准,取决于编码器/架构) | ★★★(与原生 PyTorch 相同) |
| 推理速度 | ★★★★(slide/whole 测量) | ★★★(优化可达实时) | ★★★(GFLOPS 表格可估) |
| 易用性 | ★★(需掌握配置系统) | ★★★★★(API 极简) | ★★★★★(官方核心) |
| 社区与文档 | ★★★★★(OpenMMLab 生态) | ★★★★(qubvel 社区) | ★★★★★(PyTorch 核心) |
选择建议:
追求最前沿模型、需要系统性 Benchmark及高度可定制场景,选 MMSegmentation;
需要快速原型、广泛编码器支持及竞赛级性能,选 Segmentation Models Pytorch;
对轻量集成、原生 PyTorch体验和稳定预训练有需求,且模型种类不多,选 Torchvision。