人工智能计算机视觉预训练【免费下载链接】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点击查看免费下载在语义分割任务中类别分布往往严重失衡——例如道路与建筑占据了城市街景的大部分像素而围栏、摩托车、墙壁等类别却十分稀少工业缺陷检测、道路提取、病区提取等场景更是如此。此时以像素级交叉熵为代表的常规损失容易被多数类主导导致少数类别的 mIoU 长期低迷。PaddleSeg 在 paddleseg/models/losses/lovasz_loss.py 中实现了发表于 CVPR 2018 的 Lovasz-Softmax Loss直接以 Jaccard indexIoU的凸代理convex surrogate作为优化目标。阅读完本文你将掌握该损失的核心原理、ignore_index与classes两个参数的语义、PaddlePaddle 源码级的实现细节以及在 YAML 配置与分布式训练中组合使用的完整实战方案。一、为什么需要 Lovasz-Softmax Loss从像素精度到 IoU 优化交叉熵损失在逐像素层面独立求损失对每个像素一视同仁因此当某类像素占比极小时它对总损失的贡献微乎其微模型倾向于忽略这些类别。而语义分割的评测指标 mIoU 计算的是类别层面的交并比天然对少数类敏感。Lovasz-Softmax Loss 的核心思想是将离散、不可导的 IoU 指标通过子模函数submodular function的Lovasz 扩展Lovász extension转化为一个可导的凸代理损失从而让网络训练时直接朝着提升 mIoU的方向优化。该工作由 Berman、Rannen Triki 与 Blaschko 发表于 CVPR 2018论文标题为The Lovász-Softmax loss: a tractable surrogate for the optimization of the intersection-over-union measure in neural networks。Lovasz 损失按分割目标类别数分为两类PaddleSeg 中均已实现并注册进损失组件管理器paddleseg/models/losses/init.pyLovaszSoftmaxLoss适用于多分类问题即本文主角LovaszHingeLoss适用于二分类问题详见 docs/module/loss/LovaszHingeLoss_en.md。二、API 与参数详解PaddleSeg 官方文档 docs/module/loss/LovaszSoftmaxLoss_en.md 给出的类签名如下class paddleseg.models.losses.LovaszSoftmaxLoss( ignore_index 255, classes present )两个参数的具体语义如下参数类型默认值含义ignore_indexint64255指定在标注图中要忽略的像素值这些像素对输入梯度不产生任何贡献。当标注图中存在无法标注或很难标注的像素时可将其标注为某特定灰度值如边缘、未知区域计算损失时这些位置不会作为损失函数的自变量classesstr | listpresent参与损失计算的类别集合all表示所有类别都参与present表示只计算标签中实际存在的类别也可传入一个类别编号列表如[0, 1, 5]对这些指定类别做平均在 paddleseg/models/losses/lovasz_loss.py 中类的构造与前向计算如下manager.LOSSES.add_component class LovaszSoftmaxLoss(nn.Layer): def __init__(self, ignore_index255, classespresent): super(LovaszSoftmaxLoss, self).__init__() self.ignore_index ignore_index self.classes classes def forward(self, logits, labels): probas F.softmax(logits, axis1) vprobas, vlabels flatten_probas(probas, labels, self.ignore_index) loss lovasz_softmax_flat(vprobas, vlabels, classesself.classes) return losslogits形状为[N, C, H, W]的网络原始输出取值范围为负无穷到正无穷labels形状为[N, 1, H, W]或[N, H, W]的真值标签取值范围0 ~ C-1。前向流程共三步先对 logits 沿类别轴做 softmax 得到概率probas再经flatten_probas将概率与标签展平并剔除ignore_index对应的像素最后调用lovasz_softmax_flat计算最终损失。三、源码级实现剖析三个核心函数理解实现细节有助于你在调参时做出正确判断。以下三个函数位于 paddleseg/models/losses/lovasz_loss.py它们构成了整个损失的计算链路。3.1flatten_probas展平 忽略像素过滤见 paddleseg/models/losses/lovasz_loss.py。该函数先将[N, C, H, W]的概率张量转置为[N, H, W, C]并重塑为[P, C]P 为全部像素数标签重塑为[P]随后通过valid labels ! ignore构造有效掩码用paddle.nonzero与paddle.gather仅保留有效像素同时用stop_gradient True切断标签与索引的梯度传播。3.2lovasz_softmax_flat逐类别计算 Lovasz 扩展见 paddleseg/models/losses/lovasz_loss.py。核心逻辑为若probas.numel() 0全部像素都被忽略直接返回 0 梯度损失依据classes参数确定类别集合classes_to_sumall/present时取list(range(C))全部类别否则取用户传入的类别列表对每个类别c构造前景指示量fg (labels c)若classes present且该类别在标签中不存在fg.sum() 0则跳过该类计算该类别的误差向量errors |fg - class_pred|其中class_pred probas[:, c]按误差降序排序argsortdescending将排序后的fg_sorted送入lovasz_grad得到按论文 Algorithm 1 计算的梯度权重累加sum(errors_sorted * grad)得到该类别损失若最终只计算了单个类别则直接返回多个类别则用paddle.stackpaddle.mean取平均。3.3lovasz_gradLovasz 扩展的梯度公式见 paddleseg/models/losses/lovasz_loss.py。它实现了论文 Algorithm 1对按误差降序排列的 ground-truth 序列gt_sorted用cumsum计算累计交集与并集得到jaccard 1 - intersection / union再对相邻位置做差分得到每个排序位置对应的梯度系数单像素情形p 1被单独覆盖以避免除零。四、在训练配置中使用与交叉熵加权组合Lovasz-Softmax Loss 的官方建议是不要单独直接训练而是采用以下两种策略之一加权组合与交叉熵损失或 BCE 损失通过MixedLoss按系数加权同时使用两阶段微调先用交叉熵/BCE 训练再用 Lovasz 损失微调。PaddleSeg 中的MixedLosspaddleseg/models/losses/mixed_loss.py可在不改动网络代码的前提下对多个损失加权求和其forward会将每个子损失乘以其系数后返回。4.1 单输出网络常规场景loss: types: - type: MixedLoss losses: - type: CrossEntropyLoss - type: LovaszSoftmaxLoss coef: [0.8, 0.2] coef: [1]4.2 多输出网络以 2 个输出为例loss: types: - type: MixedLoss losses: - type: CrossEntropyLoss - type: LovaszSoftmaxLoss coef: [0.8, 0.2] - type: MixedLoss losses: - type: CrossEntropyLoss - type: LovaszSoftmaxLoss coef: [0.8, 0.2] coef: [1, 0.4]仓库中的真实配置 configs/ocrnet/ocrnet_hrnetw18_cityscapes_1024x512_160k_lovasz_softmax.yml 正是多输出写法OCRNet 两个输出分支各配一组CrossEntropyLoss LovaszSoftmaxLoss系数[0.8, 0.2]分支间再按coef: [1, 0.4]加权。移动端配置 configs/pp_mobileseg/pp_mobileseg_base_cityscapes_1024x512_80k.yml 则使用单输出写法。此外 contrib/PP-HumanSeg/configs 下的多个人体分割配置也大量采用LovaszSoftmaxLoss与BCELoss/CrossEntropyLoss组合可作为参考。需要说明的是type: LovaszSoftmaxLoss之所以能直接在 YAML 中通过字符串引用是因为该损失类通过manager.LOSSES.add_component注册进了组件管理器paddleseg/cvlibs/manager.py训练时由 paddleseg/cvlibs/builder.py 依据type字段自动实例化ignore_index、classes等参数可直接在配置项中以键值对形式传入。五、启动训练命令与配置以 Cityscapes 数据集19 类、类别不平衡为例使用 OCRNet HRNet w18 骨干官方推荐命令为CUDA_VISIBLE_DEVICES0,1,2,3 python -u -m paddle.distributed.launch tools/train.py \ --config configs/ocrnet/ocrnet_hrnetw18_cityscapes_1024x512_160k_lovasz_softmax.yml \ --use_vdl --num_workers 3 --do_eval要点说明--config指向使用了 Lovasz-Softmax Loss 的完整训练配置内含数据集 base 配置、SGD 优化器、PolynomialDecay 学习率策略等CUDA_VISIBLE_DEVICES0,1,2,3指定 4 卡分布式训练-m paddle.distributed.launch为 PaddlePaddle 的分布式启动方式--use_vdl开启 VisualDL 可视化--do_eval在训练过程中周期性评估 mIoU数据集准备请参考 docs/data/README.md 与 docs/whole_process_cn.md。若需对照实验可将配置替换为使用纯交叉熵的 configs/ocrnet/ocrnet_hrnetw18_cityscapes_1024x512_160k.yml其余参数保持一致。六、实验对比Lovasz-Softmax 交叉熵 vs 纯交叉熵在 Cityscapes 数据集上OCRNet HRNet w18官方对比实验的训练 mIoU 曲线如下图中蓝色曲线为 Lovasz-Softmax Loss 交叉熵绿色曲线为纯交叉熵。可以看出引入 Lovasz-Softmax Loss 后整条精度曲线基本高于基线最佳 mIoU 提升约 1 个百分点Lossbest mIoUcross entropy loss80.46%lovasz softmax loss cross entropy loss81.53%对比实验中类别不平衡的典型例子road、building出现频繁而fence、motorcycle、wall相对稀少这正好发挥了 Lovasz 损失直接优化 IoU 的优势。同类结论在二分类道路提取任务docs/module/loss/lovasz_loss_en.md中同样成立Lovasz-Hinge 交叉熵相比纯交叉熵将 mIoU 从 78.69% 提升至 79.18%。七、使用建议与注意事项权重系数组合使用时建议交叉熵占主导如[0.8, 0.2]Lovasz 损失作为 mIoU 导向的辅助项二分类场景下 Lovasz-Hinge 的系数通常更小参考coef: [1, 0.02]可从源码结构与官方示例推断其梯度尺度相对更大忽略像素默认ignore_index255与 PaddleSeg 多数分割数据集的 ignore 约定一致若你的标签使用其他灰度值如 0 作背景且需忽略务必在配置中显式传入对应ignore_index类别选择classespresent会自动跳过当前 batch 中不存在的类别对类别极度稀疏的场景更稳定all则对所有类别求平均也可显式传入需要重点优化的少数类别列表不适用于二分类二分类场景请改用同文件中的LovaszHingeLosspaddleseg/models/losses/lovasz_loss.py它会将双通道 logits 转为单通道binary_channel_to_unary后再计算 hinge 形式的 Lovasz 扩展与 Dice 类损失的取舍PaddleSeg 同样提供 DiceLoss 等不平衡场景损失Lovasz 损失的优势在于与 mIoU 指标直接对齐可依据你的评测指标与训练稳定性综合选择。八、总结Lovasz-Softmax Loss 为多分类语义分割中的类别不平衡问题提供了一个与 mIoU 直接对齐的可导优化目标。PaddleSeg 通过 paddleseg/models/losses/lovasz_loss.py 完整复现了 CVPR 2018 论文的算法流程并将其无缝接入组件管理器与MixedLoss组合机制使得用户只需在 YAML 中声明LovaszSoftmaxLoss即可开启训练官方实验表明其可为 Cityscapes 等不平衡数据集带来约 1% 的 mIoU 提升。从参数语义、源码链路到配置实战本文已覆盖完整的使用闭环你可以直接基于 configs/ocrnet/ocrnet_hrnetw18_cityscapes_1024x512_160k_lovasz_softmax.yml 开始你的不平衡分割实验。赞分享人工智能计算机视觉预训练【免费下载链接】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 类别不均衡分割利器Lovasz LossLovasz-Softmax / Lovasz-Hinge原理、配置与实战对比PaddleSeg 类别不均衡分割利器Lovasz LossLovasz Softmax / Lovasz Hinge原理、配置与实战对比 在图像分割任务人工智能计算机视觉预训练StarRocks Toolchains 开发环境基础镜像构建指南CentOS 7 / Ubuntu / Rocky Linux 9 全平台实践StarRocks Toolchains 开发环境基础镜像构建指南CentOS 7 / Ubuntu / Rocky Linux 9 全平台实践 本篇技术指南人工智能计算机视觉预训练如何使用Lovász-Softmax损失函数提升图像分割IoU指标完整指南如何使用Lovász Softmax损失函数提升图像分割IoU指标完整指南 Lovász Softmax损失函数是一种专为优化交并比IoU设计的深度学习损上一篇终极AMD Ryzen调试工具5分钟掌握处理器隐藏性能的完整指南下一篇WarcraftHelper终极指南3步解决魔兽争霸3所有兼容性问题让经典游戏焕发新生创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
Laravel Lang 捷克语(cs)语言包翻译缺口全解析:15 个待翻译键的来源与补齐实战 后端 【免费下载链接】lang List of 128 languages for Laravel Framework, Laravel Jetstream, Laravel Fortify, Laravel Breeze, Laravel Cashier, Laravel Nova and Laravel UI. 项目地址: https://gitcode.com/gh_mirrors/la/lang 点击查看 免费下载 本篇指南… · 2026/9/27 21:40:43
揭秘YC总裁开源的顶级Claude工作流:给你的项目做一套 MBTI 测试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 22:05:45
告别浏览器复制:我把腾讯在线文档读取封装成了一个Skill,顺手接上了TaoToken /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 22:05:45
human in the loop 实战:用 TaoToken 统一 Key 给 Cline 加人工审批断点 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 22:05:45
Cursor 配 TaoToken:对比 Copilot、通义灵码、roocode 的 IDE 接入配置骨架 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 22:05:32
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01