Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleSeg
提交
84f82fd9
P
PaddleSeg
项目概览
PaddlePaddle
/
PaddleSeg
通知
287
Star
8
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
53
列表
看板
标记
里程碑
合并请求
3
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleSeg
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
53
Issue
53
列表
看板
标记
里程碑
合并请求
3
合并请求
3
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
84f82fd9
编写于
6月 18, 2020
作者:
L
LutaoChu
提交者:
GitHub
6月 18, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
polish lovasz_loss.md
上级
3fa10538
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
27 addition
and
29 deletion
+27
-29
docs/lovasz_loss.md
docs/lovasz_loss.md
+27
-29
未找到文件。
docs/lovasz_loss.md
浏览文件 @
84f82fd9
...
...
@@ -4,15 +4,16 @@
Lovasz loss基于子模损失(submodular losses)的凸Lovasz扩展,对神经网络的mean IoU损失进行优化。Lovasz loss根据分割目标的类别数量可分为两种:lovasz hinge loss和lovasz softmax loss. 其中lovasz hinge loss适用于二分类问题,lovasz softmax loss适用于多分类问题。该工作发表在CVPR 2018上,可点击
[
参考文献
](
#参考文献
)
查看具体原理。
## Lovasz hinge loss
### 使用指南
## Lovasz loss使用指南
接下来介绍如何使用lovasz loss进行训练。需要注意的是,通常的直接训练方式并一定管用,我们推荐另外2种训练方式:
-
(1)与softmax loss或bce loss(binary cross-entropy loss)加权结合使用。
-
(2)先使用softmax loss或bec loss进行训练,再使用lovasz softmax loss或lovasz hinge loss进行finetuning.
PaddleSeg通过
`cfg.SOLVER.LOSS`
参数可以选择训练时的损失函数,
如
`cfg.SOLVER.LOSS=['lovasz_hinge_loss','bce_loss']`
将指定训练loss为
`lovasz hinge loss`
与
`bce loss`
(binary cross-entropy loss)的组合。
配置lovasz loss仅需要设定2个参数:
Lovasz hinge loss有3种使用方式:(1)直接训练使用。(2)bce loss结合使用。(3)先使用bec loss进行训练,再使用lovasz hinge loss进行finetuning. 第1种方式不一定达到理想效果,推荐使用后两种方式。本文以第2种方式为例
。
首先通过
`cfg.SOLVER.LOSS`
参数选择训练时的损失函数, 例如
`cfg.SOLVER.LOSS=['lovasz_hinge_loss','bce_loss']`
将指定训练loss为lovasz hinge loss与bce loss的组合。
`cfg.SOLVER.LOSS=['lovasz_softmax_loss','softmax_loss']`
将指定训练loss为lovasz softmax loss与softmax loss的组合
。
同时,也可以通过
`cfg.SOLVER.LOSS_WEIGHT`
参数对不同loss进行权重配比,灵活运用于训练调参。如下所示
其次,也可以通过
`cfg.SOLVER.LOSS_WEIGHT`
参数对不同loss进行权重配比,从而灵活地进行训练调参。Lovasz hinge loss配置位于
`PaddleSeg/configs/lovasz_hinge_deeplabv3p_mobilenet_road.yaml`
,如下所示:
```
yaml
SOLVER
:
LOSS
:
[
"
lovasz_hinge_loss"
,
"
bce_loss"
]
...
...
@@ -21,15 +22,24 @@ SOLVER:
BCE_LOSS
:
0.5
```
### 实验对比
Lovasz softmax loss配置位于
`PaddleSeg/configs/lovasz_softmax_deeplabv3p_mobilenet_pascal.yaml`
,如下所示:
```
yaml
SOLVER
:
LOSS
:
[
"
lovasz_softmax_loss"
,
"
softmax_loss"
]
LOSS_WEIGHT
:
LOVASZ_SOFTMAX_LOSS
:
0.2
SOFTMAX_LOSS
:
0.8
```
## Lovasz hinge loss实验对比
我们以道路提取任务为例应用lovasz hinge loss.
基于MiniDeepGlobeRoadExtraction数据集与bce loss进行了实验对比。
该数据集来源于DeepGlobe比赛的Road Extraction单项,训练数据道路占比为:4.5%.
如下为其图片样例
:
该数据集来源于DeepGlobe比赛的Road Extraction单项,训练数据道路占比为:4.5%.
道路在整张图片中的比例很小,是典型的类别不均衡场景。图片样例如下
:
<p
align=
"center"
>
<img
src=
"./imgs/deepglobe.png"
hspace=
'10'
/>
<br
/>
</p>
可以看出道路在整张图片中的比例很小。
为进行快速体验,这里使用DeepLabv3+模型,backbone为MobileNetV2.
...
...
@@ -62,33 +72,21 @@ python pdseg/eval.py --cfg ./configs/lovasz_hinge_deeplabv3p_mobilenet_road.yaml
*
结果比较
lovasz hinge loss + bce loss和softmax loss的
对比结果
如下图所示。
lovasz hinge loss + bce loss和softmax loss的
mIoU曲线
如下图所示。
<p
align=
"center"
>
<img
src=
"./imgs/lovasz-hinge.png"
hspace=
'10'
/>
<br
/>
</p>
图中蓝色曲线为lovasz hinge loss + bce loss,最高mIoU为76.2%,橙色曲线为softmax loss, 最高mIoU为73.44%,相比提升2.76个百分点。
分割效果如下:
<p
align=
"center"
>
<img
src=
"./imgs/lovasz-hinge-vis.png"
hspace=
'10'
/>
<br
/>
</p>
可以看出,softmax loss训练的结果中道路并不连续,主干道部分缺失尤为严重。而lovasz loss训练的结果提升显著,主干道并无缺失,连小路也基本连续。
## Lovasz softmax loss
### 使用指南
PaddleSeg通过
`cfg.SOLVER.LOSS`
参数可以选择训练时的损失函数,
如
`cfg.SOLVER.LOSS=['lovasz_softmax_loss','softmax_loss']`
将指定训练loss为
`lovasz softmax loss`
与
`softmax loss`
的组合。
Lovasz softmax loss有3种使用方式:(1)直接训练使用。(2)softmax loss结合使用。(3)先使用softmax loss进行训练,再使用lovasz softmax loss进行finetuning. 第1种方式不一定达到理想效果,推荐使用后两种方式。本文以第2种方式为例。
同时,也可以通过
`cfg.SOLVER.LOSS_WEIGHT`
参数对不同loss进行权重配比,灵活运用于训练调参。如下所示
```
yaml
SOLVER
:
LOSS
:
[
"
lovasz_softmax_loss"
,
"
softmax_loss"
]
LOSS_WEIGHT
:
LOVASZ_SOFTMAX_LOSS
:
0.2
SOFTMAX_LOSS
:
0.8
```
### 实验对比
## Lovasz softmax loss实验对比
接下来以PASCAL VOC 2012数据集为例应用lovasz softmax loss. 我们将lovasz softmax loss与softmax loss进行了实验对比。为进行快速体验,这里使用DeepLabv3+模型,backbone为MobileNetV2.
...
...
@@ -125,7 +123,7 @@ python pdseg/eval.py --cfg ./configs/lovasz_softmax_deeplabv3p_mobilenet_pascal.
*
结果比较
lovasz softmax loss + softmax loss和softmax loss的
对比结果
如下图所示。
lovasz softmax loss + softmax loss和softmax loss的
mIoU曲线
如下图所示。
<p
align=
"center"
>
<img
src=
"./imgs/lovasz-softmax.png"
hspace=
'10'
/>
<br
/>
</p>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录