拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

基于 PaddleSeg 的全景分割工具包 PanopticSeg:从模型训练到部署的完整实践指南

基于 PaddleSeg 的全景分割工具包 PanopticSeg:从模型训练到部署的完整实践指南 人工智能计算机视觉预训练【免费下载链接】PaddleSegEasy-to-use image segmentation library with awesome pre-trained model zoo, supporting wide-range of practical tasks in Semantic Segmentation, Interactive Segmentation, Panoptic Segmentation, Image Matting, 3D Segmentation, etc.项目地址https://gitcode.com/gh_mirrors/pa/PaddleSeg点击查看免费下载本文围绕 PaddleSeg 仓库中的 PanopticSeg 全景分割工具包 展开系统讲解如何基于该工具包完成全景分割Panoptic Segmentation模型的安装、数据准备、配置、训练、评估、可视化与部署。读完本文你将掌握 Mask2Former 与 Panoptic-DeepLab 两种模型的完整使用链路理解pan_id编码协议、InfoDict数据管线与后处理器Postprocessor等工具包特有的机制并能在自己的数据集上直接复现训练与推理流程。一、全景分割与 PanopticSeg 工具包1.1 什么是全景分割全景分割是一种统一的图像解析任务它将两个原本相互独立的子任务合二为一语义分割Semantic Segmentation为图像中每个像素赋予一个类别标签实例分割Instance Segmentation检测并分割出图像中的每一个目标实例。在全景分割结果中背景等 stuff无定形区域按语义类别划分而前景 thing可数目标则进一步区分到实例级别两者共享同一个标签体系。这一任务需要模型同时具备逐像素分类与实例级区分的能力因此对网络结构、训练目标与后处理都有更高要求。1.2 工具包定位与三大特点PanopticSeg 是构建在 PaddleSeg 之上的全景分割工具包围绕开箱即用、低成本训练、全流程覆盖三个目标设计高性能模型内置可直接使用的全景分割模型Mask2Former、Panoptic-DeepLab并附带在公开数据集上训练好的权重高效率训练支持多进程异步 I/O、多卡并行训练与评估等加速策略并借助 PaddlePaddle 的内存优化功能降低训练成本完整流程覆盖从模型设计、数据准备、训练评估到模型部署的完整工作流。从代码结构看工具包以独立 Python 包paddlepanseg组织核心 API训练、评估、推理位于 paddlepanseg/core模型实现位于 paddlepanseg/models用户入口脚本统一放在 tools 目录下train.py、val.py、predict.py、export.py等详见 开发者指南。1.3 版本更新记录依据工具包 README 的更新记录2022 年 12 月新增了 Mask2Former 与 Panoptic-DeepLab 两个模型这是目前工具包内置的两大主力模型分别代表 Transformer 类与卷积类全景分割方案。二、支持的模型与官方指标工具包官方提供了两个模型的配置与预训练权重模型专属说明位于Mask2Former 模型文档Panoptic-DeepLab 模型文档2.1 Mask2FormerCOCOMask2FormerMasked-Attention Mask Transformer for Universal Image Segmentation以掩码注意力 Transformer 解码器实现通用图像分割。官方文档报告的 COCO minival 验证集指标如下| 模型 | 骨干网络 | 输入分辨率 | 训练迭代数 | PQ | mIoU | mAP50 | |-|-|-|-|-|-|-| | Mask2Former | ResNet50-vd | 1024x1024 | 370k | 53.69% | 63.22% | 49.16% |官方文档注明该模型使用 4 张 GPU 训练该模型当前不支持导出为静态图部署前请确认这一点。由于 Mask2Former 依赖多尺度可变形注意力Multi-Scale Deformable Attention外部算子使用前必须先编译安装 C/CUDA 算子详见模型文档中的前置要求cd paddlepanseg/models/ops cd ms_deform_attn python setup.py install2.2 Panoptic-DeepLabCityscapesPanoptic-DeepLab 是自底向上的简单、强且快的全景分割基线。官方文档报告的 Cityscapes 验证集指标如下| 模型 | 骨干网络 | 输入分辨率 | 训练迭代数 | PQ | mIoU | mAP50 | |-|-|-|-|-|-|-| | Panoptic-DeepLab | ResNet50-vd | 1025x513 | 90k | 60.32% | 46.34% | 79.68% |官方文档注明该模型使用 8 张 GPU 训练训练时采用 1025x513 输入并设置align_corners: True可观察到更优性能。该模型支持导出与部署。三、环境安装3.1 基础依赖依据 完整特性文档安装前需满足PaddlePaddle 2.4.0Python 3.7PaddleSeg 2.8由于全景分割训练计算量大官方强烈推荐安装 GPU 版 PaddlePaddleCUDA 10.2 及以上。3.2 安装步骤先克隆 PaddleSeg 仓库并安装其依赖# 安装 PaddleSeg 依赖 pip install -r requirements.txt # 安装 PaddleSeg pip install .然后进入工具包目录以可编辑editable模式安装cd PaddleSeg/contrib/PanopticSeg # 安装工具包依赖 pip install -r requirements.txt # 以可编辑模式安装全景分割工具包 pip install -e .3.3 验证安装python -c import paddlepanseg; print(paddlepanseg.__version__)如果成功打印出版本号说明安装完成。四、数据集准备4.1 公开数据集Cityscapes 与 MS COCO工具包为常用公开数据集提供了自动预处理脚本详细用法见 tools/data/README.md。Cityscapes 流程从官网下载gtFine与leftImg8bit目录结构后先用 cityscapesScripts 的createPanopticImgs.py生成全景标签处理训练子集时必须指定--use-train-id再生成文件列表并软链接到data/cityscapespython tools/data/create_cityscapes_file_lists.py --data_dir {数据集路径} --out_dir {数据集路径}最终期望的目录结构包含train_list.txt、val_list.txt、cityscapes_panoptic_trainId、cityscapes_panoptic_val等完整结构见 tools/data/README.md。MS COCO 流程使用 2017 划分目录包含annotations/panoptic_train2017.json、panoptic_val2017.json、panoptic_train2017、panoptic_val2017、train2017、val2017然后运行python tools/data/create_coco_file_lists.py --data_dir {数据集路径} --out_dir {数据集路径}最后将数据集软链接到data/coco。4.2 自定义数据集与文件列表格式工具包同时支持自定义数据集。与 PaddleSeg 一致每个数据子集需要一个文件列表file list格式与 PaddleSeg 规则相同差异仅在于第二列由语义分割标签路径换成全景标签路径编码在 RGB 图像中。文件列表每行由原始图像路径与全景标签路径以单个空格分隔val2017/000000001000.jpg panoptic_val2017/000000001000.png val2017/000000001268.jpg panoptic_val2017/000000001268.png val2017/000000001296.jpg panoptic_val2017/000000001296.png ...全景标签必须编码为 RGB 图像其中每个像素的 R、G、B 通道值由该像素所属区域实例或 stuff 区域的唯一标识符id决定r id % 256 g id // 256 % 256 b id // (256 * 256) % 2564.3 编码协议理解pan_id编码协议文档 定义了工具包统一的全景标签编码方式全景分割图无论是真值标签还是模型预测中的每个像素都具有一个值pan_id。设类别数为c最大实例数为n则pan_id取值范围为0到c * label_divisor n。thing 类pan_id (cat_id 1) * label_divisor ins_id其中cat_id为类别 ID从 0 开始ins_id为实例 ID从 1 开始stuff 类pan_id (cat_id 1) * label_divisor未知标签pan_id 0。label_divisor是预定义常量默认值为1000例如 Panoptic-DeepLab 配置 中通过label_divisor 1000定义并被各模块复用。这套协议也是后处理器输出与部署阶段id2rgb转换见 deploy/python/infer.py的基础。五、编写配置文件工具包沿用了 PaddleSeg 的模块化设计数据集、模型、优化器等组件完全可配置配置文件是设置训练、评估、部署超参数的推荐方式。除 PaddleSeg 的基本规则外工具包针对全景分割任务提供了两个特有机制。5.1 后处理器Postprocessor配置后处理器负责将网络输出转换为最终的全景分割结果即图像中所有实例 ID 与每个像素的语义类别。通过配置文件中的postprocessor键值对构造postprocessor: type: MaskFormerPostprocessor num_classes: 19 object_mask_threshold: 0.8 overlap_threshold: 0.8 label_divisor: 1000 ignore_index: 255所有后处理器共有四个通用属性num_classes、thing_ids、label_divisor与ignore_index。如果这四个属性在配置文件中未配置工具包会优先从val_dataset同键名解析取值最后才使用预定义默认值。从源码看所有后处理器均继承自 paddlepanseg/postprocessors/base_pp.py 中的抽象基类Postprocessor其__call__方法统一将处理结果封装为InfoDict中的PPOutDict。5.2Collect必须存在的最后一个数据变换工具包与 PaddleSeg 配置文件的一个显著区别是所有数据变换必须以Collect结尾。原因是工具包采用基于InfoDict的预处理管线Collect负责从InfoDict对象中挑出所需的键值对。训练通常需要以下键| 键 | 含义 | |-|-| |img| 预处理后作为网络输入的图像 | |label| 预处理后的全景分割标签 | |img_path| 原始输入图像路径 | |lab_path| 全景分割真值标签路径 | |img_h/img_w| 原始图像的高 / 宽 |评估通常还需要| 键 | 含义 | |-|-| |ann| 从 JSON 注解文件解析出的标注信息 | |image_id| 原始图像 ID | |gt_fields| 应被标记为真值图的InfoDict键 | |trans_info| 张量形状元信息用于恢复图像原始尺寸 | |pan_label/sem_label/ins_label| 预处理后的全景 / 语义 / 实例标签 |5.3 两个模型的完整配置剖析以 Panoptic-DeepLab 的 Cityscapes 配置 为例其训练数据变换链为ConvertRGBToID将 RGB 编码标签还原为 ID→ResizeStepScaling0.5~2.0 倍步进缩放→RandomPaddingCrop裁剪 1025x513→RandomHorizontalFlip→RandomDistort→GeneratePanopticDeepLabTrainTargets生成 center/offset 等训练目标sigma: 8、small_instance_area: 4096、small_instance_weight: 3→Normalize→Collect。模型部分使用 ResNet50-vd 骨干output_stride: 32配合 ASPP 与双解码器语义分支aspp_out_channels: 256、实例分支instance_num_classes: [1, 2]分别预测 center 与 offset损失为分类的CrossEntropyLosstop_k_percent_pixels: 0.2加 center 与 offset 的L1Loss系数coef: [1, 200, 0.01]后处理器PanopticDeepLabPostprocessor的关键参数包括stuff_area: 2048、threshold: 0.1、nms_kernel: 7、top_k: 200优化器为 Adam学习率采用PolynomialDecay初始 0.0005、power: 0.9、1000 步 warmup。Mask2Former 的 COCO 配置 则展示了 Transformer 系模型的特点骨干输出 stride 16 配合backbone_indices: [1, 2, 3]像素解码器pd_num_layers: 6、pd_ff_dim: 1024Transformer 解码器td_num_layers: 9、td_ff_dim: 2048、td_num_heads: 8、num_queries: 100损失通过 runner 配置 CE / mask / dice 权重weight_ce: 2.0、weight_mask: 5.0、weight_dice: 5.0并启用num_points: 12544的点采样优化器为 AdamWweight_decay: 0.05、backbone 学习率乘 0.1、梯度裁剪clip_norm: 0.01学习率采用MultiStepDecay。六、模型训练、评估与可视化6.1 训练模型基础训练命令为python tools/train.py \ --config {CONFIG_PATH}命令行参数优先级高于配置文件便于临时覆盖设置。以 tools/train.py 源码为准常用参数包括| 参数 | 说明 | |-|-| |--config| 配置文件路径必填 | |--save_dir| 模型 checkpoint 保存目录默认./output | |--num_workers| 数据预取子进程数默认 0 | |--do_eval| 训练期间周期性评估模型 | |--log_iters| 每隔log_iters显示一次日志默认 10 | |--eval_sem| 验证时计算语义分割指标如 mIoU | |--eval_ins| 验证时计算实例分割指标如 mAP | |--debug| 调试模式异常处设置 pdb 断点便于事后调试 | |--precision/--amp_level| 混合精度训练fp16AMP O1/O2 | |--device| 训练设备cpu / gpu / xpu / npu / mlu | |--opts| 直接更新配置文件中已有键值对 |默认不将日志写入文件可通过 shell 重定向方便落盘例如训练 Mask2FormerTAGmask2former python tools/train.py \ --config configs/mask2former/mask2former_resnet50_os16_coco_1024x1024_bs4_370k.yml \ --log_iters 50 \ --num_workers 4 \ --do_eval \ --eval_sem \ --eval_ins \ --save_dir output/${TAG} \ 21 \ | tee output/train_${TAG}.log多卡分布式训练使用paddle.distributed.launch# 设置使用的设备 ID export CUDA_VISIBLE_DEVICES0,1,2,3,4,5,6,7 python -m paddle.distributed.launch tools/train.py \ --config {CONFIG_PATH}注意部分模型存在前置条件如 Mask2Former 需先编译外部 C/CUDA 算子详见各模型文档。6.2 评估模型训练期间与训练结束后--save_dir指定的目录下会保存模型 checkpoint含权重与可能的优化器状态。官方推荐评估在验证集上取得最高全景质量PQ的 checkpoint即output/best_modelpython tools/val.py \ --config {CONFIG_PATH} \ --model_path output/best_model/model.pdparams若同时设置--eval_sem与--eval_ins还会额外报告语义分割指标mIoU与实例分割指标mAP但会显著延长评估时间。可用python tools/val.py --help查看全部选项。6.3 快速体验用预训练模型推理参照 快速开始文档下载 Panoptic-DeepLab 的预训练权重model.pdparams与示例图片demo.png并放到项目根目录后执行mkdir -p vis python tools/predict.py \ --config configs/panoptic_deeplab/panoptic_deeplab_resnet50_os32_cityscapes_1025x513_bs8_90k.yml \ --model_path model.pdparams \ --image_path demo.png \ --save_dir vistools/predict.py的四个核心参数为--config、--model_path、--image_path单张图片或图片目录与--save_dir默认./output/result。从 predict.py 源码 可以看到推理流程会基于val_dataset的变换自动构建测试变换constr_test_transforms并利用val_dataset提供的label_divisor、ignore_index与 colormap 完成可视化。6.4 三种可视化输出每张输入图片会生成三个前缀相同的结果图{PREFIX}_sem.png语义视角每个像素的颜色代表语义类别{PREFIX}_ins.png实例视角不同颜色代表不同实例对于 stuff 类别该类的所有像素视为同一个实例{PREFIX}_pan.png全景视角不同基色标记不同语义类别对于 thing 类别为区分不同实例会在基色上叠加唯一的颜色偏移。七、模型部署动态图推理通常效率偏低官方推荐将模型转换为静态图后进行推理注意并非所有模型都支持导出如 Mask2Former 当前不支持详见 模型文档。7.1 导出静态图模型python tools/export.py \ --config {CONFIG_PATH} \ --model_path {MODEL_PATH} \ --save_dir {导出模型保存目录} \ --input_shape {输入张量的固定形状}导出详情参考 PaddleSeg 的模型导出文档。从 Panoptic-DeepLab 配置 可以看到导出使用的变换Resize到 2049x1025 →Normalize→Collect也独立配置在export字段下。7.2 基于 Paddle-Inference 的推理使用 deploy/python/infer.py 基于 Paddle-Inference API 执行推理python deploy/python/infer.py \ --config {DEPLOY_CONFIG_PATH} \ --image_path {单张图片或目录路径}其中{DEPLOY_CONFIG_PATH}指向导出模型目录下的deploy.yaml。推理输出是一张 RGB 图像像素值遵循编码协议r pan_id % 256 g pan_id // 256 % 256 b pan_id // (256 * 256) % 256其中pan_id是网络与后处理器给出的、代表图像中某实例thing 类或 stuff 区域的唯一标识符对应实现见 paddlepanseg/transforms/functional.py 中的id2rgb。此外infer.py 还提供了丰富的推理加速选项GPU 下可用--use_trt启用 TensorRT支持 fp32 / fp16 / int8 精度与--enable_auto_tune自动收集动态形状CPU 下可用--cpu_threads与--enable_mkldnn加速--benchmark可输出推理性能报告。八、源码级机制解析与二次开发8.1InfoDict数据管线InfoDict是工具包最核心、且 PaddleSeg 中不存在的数据结构定义于 paddlepanseg/cvlibs/info_dicts.py作为样本、预测结果等的统一容器内置四种类型| 类型 | 用途 | |-|-| |SampleDict| 存放数据样本的信息与元信息 | |NetOutDict| 存放网络输出 | |PPOutDict| 存放后处理器输出 | |MetricDict| 存放Evaluator对象调用evaluate()的输出 |推荐通过工厂函数build_info_dict()构造传入_type_参数sample、net_out、pp_out、metric指定类型。8.2 数据集定制推荐将自定义数据集组织为 MS COCO 格式并继承paddlepanseg.datasets.base_dataset.COCOStylePanopticDataset编写新数据集接口通常包含以下步骤详见 开发者指南将数据集元信息存入 dict 列表参考 cityscapes.py 中的CITYSCAPES_CATEGORIES定义继承COCOStylePanopticDataset的类设置类属性CATEGORY_META_INFO与NUM_CLASSES重写静态方法_get_image_id()根据图片路径返回唯一标识用装饰器paddlepanseg.cvlibs.manager.DATASETS.add_component()注册新数据集类。8.3 目录结构与测试支撑工具包目录遵循清晰的模块划分configs按模型组织的配置、deploy部署代码、paddlepanseg核心实现含core、cvlibs、datasets、models、postprocessors、runners、transforms、utils、tools用户工具脚本与test_tipcTIPC 训练推理一体化测试脚本为 Mask2Former 与 Panoptic-DeepLab 分别提供train_infer_python.txt与配套 yml 配置可用于端到端流程验证。这些目录结构在 开发者指南 中有完整说明是理解工具包内部调用关系与二次开发的最佳入口。九、常见问题与社区支持模型前置条件如算子编译、导出限制以configs下各模型 README 为准训练/评估/预测脚本的完整参数列表可通过python tools/train.py --help、python tools/val.py --help、python tools/predict.py --help查看如遇到问题或有功能建议可在 PaddleSeg 的 GitHub Issues 中反馈也可加入 PaddleSeg 微信交流群与社区沟通联系方式见 工具包 README。总而言之PanopticSeg 将全景分割这一复杂任务所需的模型、数据、训练与部署环节封装为一套与 PaddleSeg 风格一致的完整工作流。从 Mask2Former 与 Panoptic-DeepLab 的开箱即用到pan_id编码协议与InfoDict管线的可扩展设计再到多卡训练与 Paddle-Inference 部署的工程化支撑它为全景分割的研究与落地提供了一条低门槛、可复现的实践路径。赞分享人工智能计算机视觉预训练【免费下载链接】PaddleSegEasy-to-use image segmentation library with awesome pre-trained model zoo, supporting wide-range of practical tasks in Semantic Segmentation, Interactive Segmentation, Panoptic Segmentation, Image Matting, 3D Segmentation, etc.项目地址https://gitcode.com/gh_mirrors/pa/PaddleSeg点击查看免费下载相关推荐PaddleSeg PanopticDeepLab 全景分割实战指南基于 PaddlePaddle 的 Bottom-Up 全景分割实现与 Cityscapes 训练部署PaddleSeg PanopticDeepLab 全景分割实战指南基于 PaddlePaddle 的 Bottom Up 全景分割实现与 Cityscape人工智能计算机视觉预训练PaddleSeg PanopticSeg 工具箱中的 Panoptic-DeepLabCityscapes 全景分割从配置到源码的完整实战指南PaddleSeg PanopticSeg 工具箱中的 Panoptic DeepLabCityscapes 全景分割从配置到源码的完整实战指南 本篇技术指南人工智能计算机视觉预训练抖音无水印批量下载终极指南免费开源工具完整教程抖音无水印批量下载终极指南免费开源工具完整教程 还在为抖音视频下载发愁吗想要保存喜欢的视频却总是带着烦人的水印今天我要分享一个完全免费的抖音无水印批量下载人工智能计算机视觉预训练上一篇开源项目 SmartisanTech/android 使用教程下一篇Horse项目安装与使用指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表