人工智能计算机视觉预训练【免费下载链接】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点击查看免费下载多标签语义分割允许每个像素同时归属于多个语义类别能更准确地表达物体重叠、遮挡与边界等复杂图像信息在医学影像分析、遥感解译、自动驾驶等场景中应用广泛。本文以 UWMGIUW-Madison GI Tract医学影像数据集与 PP-MobileSeg / DeepLabV3 模型为例完整讲解基于 PaddleSeg 的多标签分割数据格式、转换脚本、配置文件、训练、评估与推理全流程并深入--use_multilabel与AddMultiLabelAuxiliaryCategory等关键机制在源码中的实现原理。读完本文你将能独立完成一套多标签分割任务的端到端落地。1. 什么是多标签语义分割在传统的单标签多类别语义分割任务中每个像素只能被分配到一个类别其标注灰度图的形状为(img_h, img_w)用灰度值直接表示类别索引标注图本身是一张单通道的整数索引图。而多标签语义分割允许每个像素同时属于多个类别。例如在医学影像中大肠large bowel、小肠small bowel与胃stomach在相邻切面上可能存在区域重叠与相互遮挡单标签标注无法表达这种共存关系。PaddleSeg 采用了一种非常直观的标注组织方式多标签任务的标注灰度图形状为(img_h, num_classes × img_w)即把每个类别对应的二值标注1 表示属于该类0 表示不属于在水平方向上按类别顺序依次拼接。也就是说将一张单通道图横向切成num_classes个等宽区域第k个区域就是第k个类别的二值掩膜。模型输出层也相应变为每个像素对每个类别的独立二分类sigmoid 多输出这与单标签任务使用 softmax 做互斥分类有本质区别。2. 已支持的模型与损失函数根据官方文档确认PaddleSeg 多标签模式当前已支持的模型与损失函数如下模型损失函数DeepLabV3、DeepLabV3P、MobileSeg、PP-LiteSeg、PP-MobileSeg、UNet、UNet、UNetBCELoss、LovaszHingeLoss注以上为官方明确确认支持的范围实际支持范围更大——多标签模式对模型结构的约束主要在输出层通道数等于num_classes即可因此大多数以num_classes为输出通道的 PaddleSeg 模型都可尝试接入。在源码层面两种损失函数分别实现在paddleseg/models/losses/binary_cross_entropy_loss.pyBCELoss将 sigmoid 层与二分类交叉熵结合对每个类别独立计算损失paddleseg/models/losses/lovasz_loss.pyLovaszHingeLoss是面向二分类的 Lovász hinge 损失直接以 IoU 为目标进行代理优化对类别不均衡更友好。在 configs/base/uwmgi.yml 中可以看到二者的典型组合用法——通过MixedLoss将两者按系数加权loss: types: - type: MixedLoss losses: - type: BCELoss - type: LovaszHingeLoss coef: [0.5, 0.5] coef: [1]3. 数据准备3.1 下载并转换 UWMGI 数据集UWMGIUW-Madison GI Tract Image Segmentation是医学影像多标签分割领域的公开竞赛数据集原始压缩包内标注以 RLERun-Length Encoding形式记录在大肠、小肠、胃三个类别中。PaddleSeg 提供了现成的转换脚本 tools/data/convert_multilabel.py可一键将其转换为 Dataset API 支持的格式wget https://paddleseg.bj.bcebos.com/dataset/uw-madison-gi-tract-image-segmentation.zip python tools/data/convert_multilabel.py \ --dataset_type uwmgi \ --zip_input ./uw-madison-gi-tract-image-segmentation.zip \ --output ./data/UWMGI/ \ --train_proportion 0.8 \ --val_proportion 0.2 # 可选转换完成后删除原始压缩包 rm ./uw-madison-gi-tract-image-segmentation.zip脚本关键参数说明--dataset_type数据集类型当前支持uwmgi与coco两种--zip_input原始数据集压缩包路径uwmgi类型使用--img_input/--ann_input原始图像目录与 COCO 格式标注文件路径coco类型使用--output转换结果的保存目录--train_proportion/--val_proportion训练集与验证集划分比例两者之和必须为 1脚本内部有断言校验。从源码看uwmgi分支的处理逻辑是tools/data/convert_multilabel.py读取压缩包内的train.csv解析每个样本的 RLE 掩膜与类别标签按train_proportion随机划分 train/val 图像列表对每张图初始化形状为(img_h, img_w * 3)的空白掩膜按large_bowel、small_bowel、stomach顺序分别解码 RLE 并写入掩膜的三个横向分区mask[:, 0:width]、mask[:, width:2*width]、mask[:, 2*width:]将图像写为*.jpg、拼接掩膜写为*.png同时生成train.txt/val.txt的图像路径 标注路径配对清单。值得注意的是脚本同时支持coco类型它通过pycocotools读取 COCO 标注将每个类别的annToMask结果按类别顺序填入(img_h, num_classes * img_w)的横向拼接掩膜中tools/data/convert_multilabel.py因此你完全可以用同样的思路把自己业务中的 COCO 多标签数据转换为 PaddleSeg 格式。3.2 转换后的目录结构转换完成后UWMGI 数据集结构如下UWMGI | |--images | |--train | | |--*.jpg | | |--... | | | |--val | | |--*.jpg | | |--... | |--annotations | |--train | | |--*.jpg | | |--... | | | |--val | | |--*.jpg | | |--... | |--train.txt | |--val.txt3.3 在配置文件中声明数据集划分好的训练集与验证集可通过如下 YAML 配置接入num_classes取 3对应大肠、小肠、胃三类train_dataset: type: Dataset dataset_root: data/UWMGI transforms: - type: Resize target_size: [512, 512] - type: RandomHorizontalFlip - type: RandomVerticalFlip - type: RandomDistort brightness_range: 0.4 contrast_range: 0.4 saturation_range: 0.4 - type: Normalize mean: [0.0, 0.0, 0.0] std: [1.0, 1.0, 1.0] num_classes: 3 train_path: data/UWMGI/train.txt mode: train val_dataset: type: Dataset dataset_root: data/UWMGI transforms: - type: Resize target_size: [512, 512] - type: Normalize mean: [0.0, 0.0, 0.0] std: [1.0, 1.0, 1.0] num_classes: 3 val_path: data/UWMGI/val.txt mode: val上述变换Resize、RandomHorizontalFlip、RandomVerticalFlip、RandomDistort、Normalize均实现在 paddleseg/transforms/transforms.py其中RandomDistort支持brightness_range、contrast_range、saturation_range等亮度/对比度/饱和度扰动参数注意多标签训练将均值/方差设为[0, 0, 0]与[1, 1, 1]即不做归一化统计偏移。3.4 用辅助背景类别缓解类别不均衡医学影像中大量像素不属于任何器官类别若不均衡问题明显可在 transform 链的第一步追加AddMultiLabelAuxiliaryCategory为其他类别的补集并集之外的部分增加一个辅助的背景类别从而提升分割精度transforms: - type: AddMultiLabelAuxiliaryCategory # ...后续其他 transform该 transform 的实现位于 paddleseg/transforms/transforms.py它计算aux_label (label.sum(axis-1, keepdimsTrue) 0)即所有类别掩膜在该像素处均为 0 时标记为 1然后通过np.concatenate([aux_label, label], axis-1)把辅助背景通道拼接到掩膜最前面。因此一旦启用该 transform掩膜的通道数由num_classes变为num_classes 1配置中的num_classes与模型输出通道数必须同步加 1。可参考仓库中已配好的示例 configs/multilabelseg/pp_mobileseg_tiny_uwmgi_512x512_withaux.yml 与 configs/multilabelseg/deeplabv3_resnet50_os8_uwmgi_256x256_80k_withaux.yml其中train_dataset/val_dataset/model三处的num_classes均被设置为 4。4. 模型配置示例仓库configs/multilabelseg/目录提供了多组可直接复用的训练配置例如configs/multilabelseg/pp_mobileseg_tiny_uwmgi_256x256_160k.ymlPP-MobileSeg Tiny UWMGI256×256、160k 迭代3 类不使用辅助背景类别优化器为 AdamWweight_decay 0.01对pos_embed/bn设置weight_decay_mult: 0.0对head设置lr_multi: 10.0学习率采用PolynomialDecaylearning_rate 0.0006、power 1.0、warmup_iters 1500configs/multilabelseg/pp_mobileseg_tiny_uwmgi_512x512_withaux.yml512×512、80k 迭代、4 类含辅助背景在 configs/base/uwmgi.yml 基础上通过_inherited_: False覆盖了优化器与学习率调度器configs/multilabelseg/deeplabv3_resnet50_os8_uwmgi_256x256_160k.ymlDeepLabV3 ResNet50_vdoutput_stride 8、multi_grid [1,2,4]、ASPP 空洞率[1,12,24,36]256×256、160k 迭代configs/multilabelseg/deeplabv3_resnet50_os8_uwmgi_256x256_80k_withaux.yml上述模型的 withaux 版本80k 迭代、4 类。注意 PP-MobileSeg 配置中的upsample: intepolate注释说明导出部署模型时若需使用 VIM 上采样需将该字段改为vim。5. 训练模型使用 tools/train.py 启动训练关键是要追加--use_multilabel以适配多标签模式的评估python tools/train.py \ --config configs/multilabelseg/pp_mobileseg_tiny_uwmgi_256x256_80k_withaux.yml \ --save_dir output/pp_mobileseg_tiny_uwmgi_256x256_80k_withaux \ --num_workers 8 \ --do_eval \ --use_vdl \ --save_interval 2000 \ --use_multilabel参数说明--config训练配置文件路径此处指向 withaux 配置--save_dir模型与日志保存目录--num_workersDataLoader 进程数--do_eval训练过程中周期性执行评估启用时必须同时加上--use_multilabel否则评估逻辑会按单标签模式处理多通道掩膜而产生错误--use_vdl开启 VisualDL 可视化日志--save_interval 2000每 2000 次迭代保存一次 checkpoint--use_multilabel开启多标签模式开关。--use_multilabel开关贯穿了训练、评估与推理整条链路在 paddleseg/core/val.py、paddleseg/core/predict.py、paddleseg/core/infer.py 中该参数会传递给推理函数infer.inference/infer.aug_inference、面积统计metrics.calculate_area见 paddleseg/utils/metrics.py以及可视化paddleseg/utils/visualize.py从而切换到多标签的独立二分类判定、面积累计与掩膜绘制逻辑。6. 评估模型使用 tools/val.py 对最佳模型进行评估同样必须携带--use_multilabelpython tools/val.py \ --config configs/multilabelseg/pp_mobileseg_tiny_uwmgi_256x256_80k_withaux.yml \ --model_path output/pp_mobileseg_tiny_uwmgi_256x256_80k_withaux/best_model/model.pdparams \ --use_multilabel从 paddleseg/core/val.py 的实现可以确认多标签模式下评估的核心差异在于推理时对每个类别独立应用 sigmoid 阈值判定输出多通道预测掩膜metrics.calculate_area在use_multilabelTrue时对每个类别通道分别统计交集面积、预测面积与标签面积进而计算每个类别的 IoU 与整体 mIoU。7. 执行预测与可视化使用 tools/predict.py 对单张图像执行推理可视化同样需要--use_multilabel参数适配python tools/predict.py \ --config configs/multilabelseg/pp_mobileseg_tiny_uwmgi_256x256_80k_withaux.yml \ --model_path output/pp_mobileseg_tiny_uwmgi_256x256_80k_withaux/best_model/model.pdparams \ --image_path data/UWMGI/images/val/case122_day18_slice_0089.jpg \ --use_multilabel执行后预测结果会以彩色掩膜叠加在原始图像上输出。若期望更多调试信息可配合--save_dir指定结果保存目录。整个流程覆盖了从原始数据到可视化结果的完整闭环。8. 总结与进一步阅读本文围绕 PaddleSeg 的多标签语义分割能力梳理了以下关键链路数据格式多标签掩膜采用(img_h, num_classes × img_w)的水平拼接结构每段对应一个类别的二值掩膜数据转换使用 tools/data/convert_multilabel.py 可将 UWMGIRLE 格式或 COCO 格式数据一键转换为 Dataset 可读的目录与 txt 清单损失设计以BCELoss LovaszHingeLoss的MixedLoss组合各 0.5 权重训练兼顾逐像素二分类与 IoU 代理优化configs/base/uwmgi.yml类别不均衡处理通过AddMultiLabelAuxiliaryCategory增加辅助背景通道并同步将num_classes加 1全流程命令训练、评估、推理均须追加--use_multilabel其底层实现贯穿 paddleseg/core/val.py、paddleseg/core/infer.py、paddleseg/utils/metrics.py 与 paddleseg/utils/visualize.py。如果你的业务同样存在像素级多标签需求例如多器官重叠、多目标共存标注可以直接复用 configs/multilabelseg/ 下的配置模板将dataset_root、train_path、val_path、num_classes与模型结构替换为自有数据即可快速迁移。关于 PP-MobileSeg 模型的更多细节可参考 PP-MobileSeg 配置文档。赞分享人工智能计算机视觉预训练【免费下载链接】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点击查看免费下载相关推荐Apache Arrow Gandiva 表达式、Projector 与 Filter 使用指南CApache Arrow Gandiva 表达式、Projector 与 Filter 使用指南C 导读 本文围绕 Apache Arrow C 子人工智能计算机视觉预训练Envoy Listener Filters 详解在连接建立前操纵元数据、匹配 Filter Chain 的架构与实现Envoy Listener Filters 详解在连接建立前操纵元数据、匹配 Filter Chain 的架构与实现 本篇技术指南基于 Envoy 官方架构人工智能计算机视觉预训练DeepLab 在 ADE20K 语义分割数据集上的完整实战指南数据下载与 TFRecord 转换、Xception_65 训练及评估可视化DeepLab 在 ADE20K 语义分割数据集上的完整实战指南数据下载与 TFRecord 转换、Xception_65 训练及评估可视化 本指南系统讲解如人工智能深度学习计算机视觉NLP语音上一篇iOS 国际化测试终极指南MJRefresh 多语言自动化测试完整解决方案下一篇3步搭建SQLPad让数据查询像聊天一样简单创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
@emoji-mart/react 集成指南:在 React 应用中嵌入 Emoji Mart 表情选择器 前端UI组件 【免费下载链接】emoji-mart 🏪 One component to pick them all 项目地址: https://gitcode.com/gh_mirrors/em/emoji-mart 点击查看 免费下载 emoji-mart/react 是 Emoji Mart 官方为 React 生态提供的桥接包装层,它把基于 Pre… · 2026/9/25 3:45:02
AgentScope 2.0实战:多Agent调用与RAG as Service企业级落地 最近在中文开发者社区里,AgentScope 这个系统可以说是刷屏级别的存在。AgentScope 2.0、AgentScope Java、RAG as Service、多Agent调用这几个热词,几乎每隔几天就会冒出来一篇新文章,我在好几个技术社群里都被问到过同一个问题:这… · 2026/9/25 3:45:02
OBJ模型贴图丢失的三大根源:路径、UV与材质绑定 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 3:44:55
xiaozhi-robot WiFi配置详解:3步搞定AI语音模块联网,新手零门槛 xiaozhi-robot WiFi配置详解:3步搞定AI语音模块联网,新手零门槛 【免费下载链接】xiaozhi-robot 源师兄扩展项目: 小智 | 由源师兄组织创建 项目地址: https://gitcode.com/yuanshixiong/xiaozhi-robot
xiaozhi-robot 是源师兄平台的"AI语音… · 2026/9/25 3:44:55
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37