OneFormer 通用图像分割框架完整使用指南
OneFormer 是首个基于 Transformer 的多任务通用图像分割框架,能够在单一架构、单一模型和单一数据集上进行训练,同时在语义分割、实例分割和全景分割任务中取得卓越表现。通过任务令牌引导模型,OneFormer 在训练时具有任务导向性,在推理时具有任务动态性,真正实现了多任务的统一处理。
快速安装指南
环境要求
- Ubuntu 20.04.3 LTS
- Python 3.8.13
- PyTorch 1.10.1 (CUDA 11.3)
- Torchvision 0.11.2
- Detectron2 v0.6
一键安装步骤
- 创建并激活 conda 环境
conda create --name oneformer python=3.8 -y
conda activate oneformer
- 获取项目代码
git clone https://gitcode.com/gh_mirrors/on/OneFormer
cd OneFormer
- 安装核心依赖
# 安装 PyTorch 和 CUDA 工具包
conda install pytorch==1.10.1 torchvision==0.11.2 cudatoolkit=11.3 -c pytorch -c conda-forge
# 安装 OpenCV(运行演示必需)
pip3 install -U opencv-python
# 安装 Detectron2
python tools/setup_detectron2.py
# 安装其他依赖包
pip3 install git+https://github.com/cocodataset/panopticapi.git
pip3 install git+https://github.com/mcordts/cityscapesScripts.git
pip3 install -r requirements.txt
- 配置实验跟踪
pip3 install wandb
wandb login
- 编译 CUDA 内核
cd oneformer/modeling/pixel_decoder/ops
sh make.sh
cd ../../../..
数据集准备
OneFormer 支持三大主流分割数据集:ADE20K、Cityscapes 和 COCO 2017。详细的数据集准备说明请参考 数据集准备文档。
模型训练与评估
训练配置详解
OneFormer 提供了丰富的预训练配置,涵盖多种骨干网络和分辨率选项:
- Swin Transformer:Swin-L 骨干网络
- ConvNeXt:ConvNeXt-L 和 ConvNeXt-XL 骨干网络
- DiNAT:DiNAT-L 骨干网络
- 多种分辨率:640×640、896×896、1280×1280
训练命令示例
使用 8 个 GPU 训练 ADE20K 数据集上的 Swin-L 模型:
python train_net.py --dist-url 'tcp://127.0.0.1:50163' \
--num-gpus 8 \
--config-file configs/ade20k/swin/oneformer_swin_large_bs16_160k.yaml \
OUTPUT_DIR outputs/ade20k_swin_large WANDB.NAME ade20k_swin_large
模型评估方法
评估时需要指定任务类型(panoptic、semantic、instance):
python train_net.py --dist-url 'tcp://127.0.0.1:50164' \
--num-gpus 8 \
--config-file configs/ade20k/swin/oneformer_swin_large_bs16_160k.yaml \
--eval-only MODEL.IS_TRAIN False MODEL.WEIGHTS <path-to-checkpoint> \
MODEL.TEST.TASK <task>
推理演示与实战应用
命令行推理演示
OneFormer 提供了灵活的命令行推理工具,支持多种任务输出:
export task=panoptic
python demo.py --config-file ../configs/ade20k/swin/oneformer_swin_large_bs16_160k.yaml \
--input <path-to-images> \
--output <output-path> \
--task $task \
--opts MODEL.IS_TRAIN False MODEL.IS_DEMO True MODEL.WEIGHTS <path-to-checkpoint>
任务类型说明
- panoptic:同时输出全景分割、语义分割和实例分割结果
- instance:仅输出实例分割结果
- semantic:仅输出语义分割结果
性能表现与基准测试
OneFormer 在多个标准数据集上均取得了最先进的性能表现:
ADE20K 数据集结果
| 骨干网络 | 分辨率 | PQ | AP | mIoU |
|---|---|---|---|---|
| Swin-L | 640×640 | 49.8 | 35.9 | 57.7 |
| Swin-L | 896×896 | 51.1 | 37.6 | 58.3 |
| DiNAT-L | 1280×1280 | 51.5 | 37.1 | 58.7 |
故障排除与优化技巧
-
内存不足问题
- 降低批次大小
- 使用较小的输入分辨率
- 启用梯度检查点
-
训练不稳定
- 检查学习率设置
- 验证数据预处理流程
- 确认权重初始化正确
-
推理速度优化
- 使用单尺度推理
- 启用模型量化
- 优化 CUDA 内核配置
通过本指南,您可以快速掌握 OneFormer 的完整使用流程,从环境配置到模型训练,再到实际应用,全面体验这一革命性图像分割框架的强大能力。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




