ARTICLE DETAIL

资讯详情

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

PaddleSeg FAQ 实战指南:预训练权重加载、迭代式训练与数据增强配置排查

PaddleSeg FAQ 实战指南:预训练权重加载、迭代式训练与数据增强配置排查 人工智能计算机视觉预训练【免费下载链接】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 官方 FAQdocs/faq/faq/faq.md展开系统梳理了训练环节中最常被问到的七个问题本地预训练权重加载、iters与epoch的关系、数据增强配置的继承与加载顺序、DataLoader 线程报错排查、Cityscapes SOTA 模型、best_model保存条件以及 VisualDL 日志续写。读完本文你将能独立看懂并修改 PaddleSeg 的 yaml 配置文件正确发起一次训练并定位训练中的常见问题。Q1如何从本地加载预训练模型的权重参数PaddleSeg 每个模型的推荐配置统一存放在 configs 下各模型文件夹的 yaml 文件中。以 ANN 模型为例配置位于 configs/ann/ann_resnet50_os8_cityscapes_1024x512_80k.yml其model字段结构如下model: type: ANN backbone: type: ResNet50_vd output_stride: 8 pretrained: https://bj.bcebos.com/paddleseg/dygraph/resnet50_vd_ssld_v2.tar.gz backbone_indices: [2, 3] key_value_channels: 256 inter_channels: 512 psp_size: [1, 3, 6, 8] enable_auxiliary_loss: True align_corners: False pretrained: null图中存在两处与预训练相关的配置红色部分骨干网络的pretrained。位于model.backbone下。默认写法直接给出一个 https 链接训练启动时会自动下载 PaddleSeg 官方提供的预训练参数如上述 ResNet50_vd_ssld_v2。如果你本地已有骨干网络预训练参数请用绝对路径替换该字段也可以根据将要执行train.py时所在的目录为其设置相对路径。绿色部分分割网络自身的pretrained。位于model顶层默认值为null表示分割头如 ANN从头初始化仅加载骨干预训练权重。如果本地已有分割网络全量预训练参数同样用绝对路径或相对路径替换该字段即可。从源码看模型的构建与权重加载发生在 paddleseg/cvlibs/config.py 的model_cfg属性以及SegBuilder的模型组装逻辑中pretrained字段会随model/backbone配置一起被读取并由模型加载逻辑按路径或链接拉取权重。因此无论替换为本地路径还是保留下载链接都必须保证路径可被训练进程访问到否则会在权重初始化阶段报错。Q2为什么 PaddleSeg 不采用设置 epoch 的方式epoch完整遍历数据集的轮数会受数据集规模影响同一份配置换到不同大小的数据集实际训练轮数会截然不同且难以精确控制计算量。因此 PaddleSeg 统一以iters总迭代步数作为训练长度指标例如上述 ANN 配置中iters: 80000。训练配置参数之间存在如下换算关系数据集大小N批量大小batch_size单卡 batchGPU 数量num_gpus总迭代次数iters换算公式为epoch (iters * batch_size * num_gpus) / N即一次迭代处理batch_size * num_gpus张图片总处理样本数为iters * batch_size * num_gpus除以数据集大小即为完整过数据集的次数。相关字段在 paddleseg/cvlibs/config.py 中通过batch_size、iters属性对外暴露并在 tools/train.py 中由命令行参数覆盖后传入训练核心。Q3数据增强配置的加载顺序是怎样的数据增强在 yaml 的train_dataset.transforms中指定。Cityscapes 是最常用的语义分割数据集之一PaddleSeg 已为其沉淀了常用配置见 configs/base/cityscapes.ymltrain_dataset: type: Cityscapes dataset_root: data/cityscapes transforms: - type: ResizeStepScaling min_scale_factor: 0.5 max_scale_factor: 2.0 scale_step_size: 0.25 - type: RandomPaddingCrop crop_size: [1024, 512] - type: RandomHorizontalFlip - type: RandomDistort brightness_range: 0.4 contrast_range: 0.4 saturation_range: 0.4 - type: Normalize mode: trainPaddleSeg 以_base_关键字指定配置之间的继承关系_base_: ../_base_/cityscapes.yml _base_: ../_base_/cityscapes_1024x1024.yml关于加载顺序需要理解三条规则数据增强按transforms列表从上到下依次加载执行。例如上面的顺序是先做多尺度缩放ResizeStepScaling再随机裁剪到固定尺寸RandomPaddingCrop然后水平翻转、色彩扰动最后归一化。子类覆盖父类中的同名配置。_base_的合并逻辑在 paddleseg/cvlibs/config.py 中实现parse_from_yaml会先递归解析_base_指向的父配置再通过merge_config_dicts用子配置覆盖父配置当键值同为 dict 时逐层递归合并否则直接覆盖。因此子 yaml 中写的batch_size: 2会覆盖基类中的同名项。命令行参数覆盖 yaml 内同名配置。例如执行python tools/train.py --config xxx.yml --batch_size 4时命令行传入的batch_size: 4会覆盖 yaml 中的batch_size: 2。这一逻辑由 tools/train.py 构造Config时传入的learning_rate、iters、batch_size等参数实现见 update_config_dict此外--opts keyvalue可以按点分路径更新任意嵌套配置如--opts test_config.scales0.75,1.0,1.25。Q4数据增强配置为何会引起 DataLoader reader thread 错误如果你使用形状不一致的自定义数据集训练时出现 DataLoader reader thread 相关报错很可能是数据增强加载顺序不当导致的。结合 Q3 可知transforms是严格按顺序执行的。例如RandomRotation随机旋转会改变图像尺寸如果它被放在Resize、RandomPaddingCrop等修正尺寸的增强之后同一 batch 内的图像尺寸就会不一致DataLoader 在组 batch 时便无法对齐张量形状从而抛出 reader thread 错误。PaddleSeg 内置的各类增强算子统一注册在 paddleseg/transforms/transforms.py包括Resize、ResizeStepScaling、ResizeByLong、ResizeByShort、RandomHorizontalFlip、RandomDistort、Normalize等。从实现看它们大多在__call__中直接返回(im, label)对前一个算子的输出即后一个算子的输入因此改变尺寸的增强旋转、缩放、裁剪必须放在尺寸修正类增强之前。通用建议保持RandomRotation等尺寸变化算子位于Resize/RandomPaddingCrop之前对自定义数据集训练前请参照 Q3 仔细核对transforms顺序并尽量保证样本原始尺寸一致。Q5目前 PaddleSeg 在 Cityscapes 上的 SOTA 模型是什么FAQ 指出PaddleSeg 在 Cityscapes 上的 SOTA 模型可达到87% mIoU。该结论在仓库中可找到对应实现与验证记录contrib/CityscapesSOTA/README.md 记载基于分层多尺度注意力Hierarchical Multi-Scale Attention的 MscaleOCRNet骨干 HRNet_W48在 Cityscapes 验证集上达到 87.00% mIoU5 scales flip 评测仅多尺度评测为 86.89%多尺度加水平翻转评测为 86.99%。该实现相比原论文做了三点优化使用 dice loss 与 bootstrapped cross entropy 替代交叉熵、每个 epoch 等量学习全部 fine 数据与 coarse 数据、评测采用等差分数的尺度序列。相关训练、验证与部署命令均可在 contrib/CityscapesSOTA 目录下找到其中复现 SOTA 的验证命令为python val.py --config configs/mscale_ocr_cityscapes_autolabel_mapillary.yml \ --num_workers 3 --model_path saved_model/model.pdparams需要注意的是该 SOTA 需要较大显存单模型评测约需 14.2GB GPU 显存多尺度加翻转评测约需 21.2GB复现前请评估硬件条件。Q6为什么训练过程中不保存 best_modelbest_model并非每轮迭代都会产生它是在训练过程中通过验证对比得到的最优模型。PaddleSeg 的训练核心 paddleseg/core/train.py 中以best_mean_iou -1.0初始化并在每个save_interval默认 1000 步且存在验证集时对当前模型在验证集上评估若 mIoU 高于历史最优则更新best_model并保存。因此训练前必须开启--do_eval选项才会保存best_modelpython tools/train.py --config configs/ann/ann_resnet50_os8_cityscapes_1024x512_80k.yml \ --do_eval --save_dir ./output同时从 paddleseg/core/train.py 的保存条件iter % save_interval 0 or iter iters且val_dataset is not None可以确认只有开启--do_eval此时 tools/train.py 才会构造val_dataset并配合适当的--save_intervalbest_model才会被写入save_dir。若不需要保存最优模型也可以不开启该选项以节省验证时间。Q7恢复训练后vdl 为什么只可视化了后半部分如何可视化中断前的部分由于算力限制或其他原因训练可能无法一次跑完此时通过--resume_model断点续训会产生两个或多个独立的 VisualDL 日志文件导致visualdl默认只能看到后半段曲线。FAQ 给出两种处理方式手动合并日志将第一次与第二次生成的日志内容拷贝到同一个新的二进制日志文件中再交给 VisualDL 读取。这是无需额外工具的最直接办法。续写同一日志对于中断后继续训练这类场景可以在调用visualdl时显式指定日志文件名使后续训练直接写入指定日志文件避免产生多个文件。此外FAQ 同时说明新版本将支持多日志合并建议关注 VisualDL 后续版本的日志合并能力。若你的训练中断较频繁也可以结合--save_interval与--resume_model的配合合理规划 checkpoint 间隔减少日志碎片化。总结PaddleSeg 的 yaml 配置体系是理解整个训练流程的钥匙pretrained决定权重从哪来iters决定训练多长_base_与transforms顺序决定数据如何被加工--do_eval决定best_model是否产生。FAQ 中的七个问题环环相扣逐一解决后即可顺畅完成从配置检查、训练启动到结果可视化的完整流程。相关配置与源码证据均可从 configs、paddleseg/cvlibs/config.py、tools/train.py 与 paddleseg/core/train.py 中进一步查阅。赞分享人工智能计算机视觉预训练【免费下载链接】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点击查看免费下载相关推荐Rnote 手写笔记与 PDF 批注3 个场景半小时上手Rnote 手写笔记与 PDF 批注3 个场景半小时上手 Rnote 是一款免费开源的手写笔记与矢量绘图工具解决课堂记笔记、在文档上批注这类纸面工作的数人工智能计算机视觉预训练RVC WebUI零基础教程10分钟语音数据训练专属AI变声模型的完整路线RVC WebUI零基础教程10分钟语音数据训练专属AI变声模型的完整路线 RVC WebUIRetrieval based Voice Conversio人工智能大模型预训练深度学习NLP计算机视觉多模态语音音频微调PaddleNLP 大模型预训练实战指南数据制作、分布式训练与配置详解PaddleNLP 大模型预训练实战指南数据制作、分布式训练与配置详解 PaddleNLP 大模型套件llm 目录内置了从数据预处理、模型权重加载到分布式人工智能大模型预训练微调LoRARLHF强化学习分布式训练模型推理服务推理引擎模型量化模型压缩本地部署NLP上一篇给思源笔记装上你的第一个插件从开发环境到集市发布的实操路径下一篇5分钟掌握Parsec VDD解锁Windows虚拟显示器的终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表