提交 2956a4f1 编写于 作者: L LutaoChu 提交者: Zeyu Chen

Polish documents (#136)

* update all docs involving color label

* modify usage.md

* usage.md

* Update data_prepare.md

* Update jingling2seg.md

* Update jingling2seg.md

* Update labelme2seg.md

* Update jingling2seg.md

* a

* Update config.md

* Update config.md

* Update config.py

* Update config.py

* Update config.py

* Update config.md

* Update basic_group.md

* Update basic_group.md

* Update data_aug.md

* Update config.md

* Update finetune_pspnet.md

* Update finetune_pspnet.md

* Update finetune_unet.md

* Update finetune_unet.md

* Update finetune_icnet.md

* Update finetune_pspnet.md

* Update finetune_hrnet.md

* Update README.md

* Update finetune_deeplabv3plus.md

* Update finetune_deeplabv3plus.md

* Update README.md

* Update config.md

* Update train_group.md

* Update models.md

* Update model_group.md

* Update model_group.md

* Update train_group.md

* Update train_group.md

* Update model_group.md

* Update model_group.md

* Update README.md

* Update README.md

* Update models.md

* Add files via upload

* Add files via upload

* Update models.md

* Update models.md

* Add files via upload

* Update README.md

* Update models.md

* Update models.md

* Update models.md

* Update models.md

* Update models.md

* Update models.md

* Update models.md

* Update models.md

* Update models.md

* Add files via upload

* Update models.md

* Update models.md

* Update loss_select.md

* Update README.md

* Update loss_select.md

* Add files via upload

* Update loss_select.md

* Add files via upload

* Update loss_select.md

* Update README.md
上级 8837d0f9
...@@ -106,7 +106,7 @@ pip install -r requirements.txt ...@@ -106,7 +106,7 @@ pip install -r requirements.txt
### 高级功能 ### 高级功能
* [PaddleSeg的数据增强](./docs/data_aug.md) * [PaddleSeg的数据增强](./docs/data_aug.md)
* [PaddleSeg的loss选择](./docs/loss_select.md) * [如何解决二分类中类别不均衡问题](./docs/loss_select.md)
* [特色垂类模型使用](./contrib) * [特色垂类模型使用](./contrib)
* [多进程训练和混合精度训练](./docs/multiple_gpus_train_and_mixed_precision_train.md) * [多进程训练和混合精度训练](./docs/multiple_gpus_train_and_mixed_precision_train.md)
...@@ -118,10 +118,10 @@ pip install -r requirements.txt ...@@ -118,10 +118,10 @@ pip install -r requirements.txt
|-|-| |-|-|
|快速开始|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/100798)| |快速开始|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/100798)|
|U-Net宠物分割|[点击体验](https://aistudio.baidu.com/aistudio/projectDetail/102889)| |U-Net宠物分割|[点击体验](https://aistudio.baidu.com/aistudio/projectDetail/102889)|
|DeepLabv3+图像分割|[点击体验](https://aistudio.baidu.com/aistudio/projectDetail/101696)| |DeepLabv3+图像分割|[点击体验](https://aistudio.baidu.com/aistudio/projectDetail/226703)|
|工业质检(零件瑕疵检测)|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/184392)| |工业质检(零件瑕疵检测)|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/184392)|
|人像分割|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/188833)| |人像分割|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/188833)|
|PaddleSeg特色垂类模型|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/115541)| |PaddleSeg特色垂类模型|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/226710)|
</br> </br>
......
docs/imgs/unet.png

35.7 KB | W: | H:

docs/imgs/unet.png

175.6 KB | W: | H:

docs/imgs/unet.png
docs/imgs/unet.png
docs/imgs/unet.png
docs/imgs/unet.png
  • 2-up
  • Swipe
  • Onion skin
# dice loss解决二分类中样本不均衡问题 # 如何解决二分类中类别不均衡问题
对于二类图像分割任务中,经常出现类别分布不均匀的情况,例如:工业产品的瑕疵检测、道路提取及病变区域提取等。
对于二类图像分割任务中,往往存在类别分布不均的情况,如:瑕疵检测,道路提取及病变区域提取等等。 目前PaddleSeg提供了三种loss函数,分别为softmax loss(sotfmax with cross entroy loss)、dice loss(dice coefficient loss)和bce loss(binary cross entroy loss). 我们可使用dice loss解决这个问题。
在DeepGlobe比赛的Road Extraction中,训练数据道路占比为:%4.5。如下为其图片样例:
<p align="center"> 注:dice loss和bce loss仅支持二分类。
<img src="./imgs/deepglobe.png" hspace='10'/> <br />
</p>
可以看出道路在整张图片中的比例很小。
## 数据集下载
我们从DeepGlobe比赛的Road Extraction的训练集中随机抽取了800张图片作为训练集,200张图片作为验证集,
制作了一个小型的道路提取数据集[MiniDeepGlobeRoadExtraction](https://paddleseg.bj.bcebos.com/dataset/MiniDeepGlobeRoadExtraction.zip)
## dice loss ## Dice loss
dice loss的定义如下: Dice loss的定义如下:
<p align="center"> <p align="center">
<img src="./imgs/dice.png" hspace='10' height="46" width="200"/> <br /> <img src="./imgs/dice.png" hspace='10' height="46" width="200"/> <br />
...@@ -30,13 +24,20 @@ dice loss的定义如下: ...@@ -30,13 +24,20 @@ dice loss的定义如下:
**Note:** 在标注图片中,务必保证前景像素值为1,背景像素值为0. **Note:** 在标注图片中,务必保证前景像素值为1,背景像素值为0.
dice系数请参见[维基百科](https://zh.wikipedia.org/wiki/Dice%E7%B3%BB%E6%95%B0) Dice系数请参见[维基百科](https://zh.wikipedia.org/wiki/Dice%E7%B3%BB%E6%95%B0)
**为什么在类别不均衡问题上,dice loss效果比softmax loss更好?**
**为什么在正负样本不均衡问题上,dice loss效果比softmax loss更好?** 首先来看softmax loss的定义:
<p align="center">
<img src="./imgs/softmax_loss.png" height="130" /> <br />
</p>
其中 y 表示ground truth,p 表示网络输出。
在图像分割中,`softmax loss`评估每一个像素点的类别预测,然后平均所有的像素点。这个本质上就是对图片上的每个像素进行平等的学习。这就造成了一个问题,如果在图像上的多种类别有不平衡的表征,那么训练会由最主流的类别主导。以上面DeepGlobe道路提取的数据为例子,网络将偏向于背景的学习,降低了网络对前景目标的提取能力。 在图像分割中,`softmax loss`评估每一个像素点的类别预测,然后平均所有的像素点。这个本质上就是对图片上的每个像素进行平等的学习。这就造成了一个问题,如果在图像上的多种类别有不平衡的表征,那么训练会由最主流的类别主导。以上面DeepGlobe道路提取的数据为例子,网络将偏向于背景的学习,降低了网络对前景目标的提取能力。
`dice loss(dice coefficient loss)`通过预测和标注的交集除以它们的总体像素进行计算,它将一个类别的所有像素作为一个整体作为考量,而且计算交集在总体中的占比,所以不受大量背景像素的影响。 `dice loss(dice coefficient loss)`通过预测和标注的交集除以它们的总体像素进行计算,它将一个类别的所有像素作为一个整体作为考量,而且计算交集在总体中的占比,所以不受大量背景像素的影响,能够取得更好的效果。
,能够取得更好的效果。
在实际应用中`dice loss`往往与`bce loss(binary cross entroy loss)`结合使用,提高模型训练的稳定性。 在实际应用中`dice loss`往往与`bce loss(binary cross entroy loss)`结合使用,提高模型训练的稳定性。
...@@ -46,7 +47,20 @@ dice系数请参见[维基百科](https://zh.wikipedia.org/wiki/Dice%E7%B3%BB%E6 ...@@ -46,7 +47,20 @@ dice系数请参见[维基百科](https://zh.wikipedia.org/wiki/Dice%E7%B3%BB%E6
PaddleSeg通过`cfg.SOLVER.LOSS`参数可以选择训练时的损失函数, PaddleSeg通过`cfg.SOLVER.LOSS`参数可以选择训练时的损失函数,
`cfg.SOLVER.LOSS=['dice_loss','bce_loss']`将指定训练loss为`dice loss``bce loss`的组合 `cfg.SOLVER.LOSS=['dice_loss','bce_loss']`将指定训练loss为`dice loss``bce loss`的组合
## 实验比较 ## Dice loss解决类别不均衡问题的示例
我们以道路提取任务为例应用dice loss.
在DeepGlobe比赛的Road Extraction中,训练数据道路占比为:4.5%. 如下为其图片样例:
<p align="center">
<img src="./imgs/deepglobe.png" hspace='10'/> <br />
</p>
可以看出道路在整张图片中的比例很小。
### 数据集下载
我们从DeepGlobe比赛的Road Extraction的训练集中随机抽取了800张图片作为训练集,200张图片作为验证集,
制作了一个小型的道路提取数据集[MiniDeepGlobeRoadExtraction](https://paddleseg.bj.bcebos.com/dataset/MiniDeepGlobeRoadExtraction.zip)
### 实验比较
在MiniDeepGlobeRoadExtraction数据集进行了实验比较。 在MiniDeepGlobeRoadExtraction数据集进行了实验比较。
...@@ -84,5 +98,4 @@ softmax loss和dice loss + bce loss实验结果如下图所示。 ...@@ -84,5 +98,4 @@ softmax loss和dice loss + bce loss实验结果如下图所示。
<img src="./imgs/loss_comparison.png" hspace='10' height="208" width="516"/> <br /> <img src="./imgs/loss_comparison.png" hspace='10' height="208" width="516"/> <br />
</p> </p>
# PaddleSeg 分割模型介绍 # PaddleSeg 分割模型介绍
### U-Net - [U-Net](#U-Net)
U-Net [1] 起源于医疗图像分割,整个网络是标准的encoder-decoder网络,特点是参数少,计算快,应用性强,对于一般场景适应度很高。 - [DeepLabv3+](#DeepLabv3)
- [ICNet](#ICNet)
- [PSPNet](#PSPNet)
- [HRNet](#HRNet)
## U-Net
U-Net [1] 起源于医疗图像分割,整个网络是标准的encoder-decoder网络,特点是参数少,计算快,应用性强,对于一般场景适应度很高。U-Net最早于2015年提出,并在ISBI 2015 Cell Tracking Challenge取得了第一。经过发展,目前有多个变形和应用。
原始U-Net的结构如下图所示,由于网络整体结构类似于大写的英文字母U,故得名U-net。左侧可视为一个编码器,右侧可视为一个解码器。编码器有四个子模块,每个子模块包含两个卷积层,每个子模块之后通过max pool进行下采样。由于卷积使用的是valid模式,故实际输出比输入图像小一些。具体来说,后一个子模块的分辨率=(前一个子模块的分辨率-4)/2。U-Net使用了Overlap-tile 策略用于补全输入图像的上下信息,使得任意大小的输入图像都可获得无缝分割。同样解码器也包含四个子模块,分辨率通过上采样操作依次上升,直到与输入图像的分辨率基本一致。该网络还使用了跳跃连接,以拼接的方式将解码器和编码器中相同分辨率的feature map进行特征融合,帮助解码器更好地恢复目标的细节。
![](./imgs/unet.png) ![](./imgs/unet.png)
### DeepLabv3+ ## DeepLabv3+
DeepLabv3+ [2] 是DeepLab系列的最后一篇文章,其前作有 DeepLabv1,DeepLabv2, DeepLabv3, DeepLabv3+ [2] 是DeepLab系列的最后一篇文章,其前作有 DeepLabv1,DeepLabv2, DeepLabv3,
在最新作中,DeepLab的作者通过encoder-decoder进行多尺度信息的融合,同时保留了原来的空洞卷积和ASSP层, 在最新作中,DeepLab的作者通过encoder-decoder进行多尺度信息的融合,同时保留了原来的空洞卷积和ASSP层,
...@@ -21,7 +30,7 @@ DeepLabv3+ [2] 是DeepLab系列的最后一篇文章,其前作有 DeepLabv1, ...@@ -21,7 +30,7 @@ DeepLabv3+ [2] 是DeepLab系列的最后一篇文章,其前作有 DeepLabv1,
DeepLabv3+原始实现的backbone网络,兼顾了精度和性能,适用于服务端部署。 DeepLabv3+原始实现的backbone网络,兼顾了精度和性能,适用于服务端部署。
### ICNet ## ICNet
Image Cascade Network(ICNet) [3] 主要用于图像实时语义分割。相较于其它压缩计算的方法,ICNet即考虑了速度,也考虑了准确性。 ICNet的主要思想是将输入图像变换为不同的分辨率,然后用不同计算复杂度的子网络计算不同分辨率的输入,然后将结果合并。ICNet由三个子网络组成,计算复杂度高的网络处理低分辨率输入,计算复杂度低的网络处理分辨率高的网络,通过这种方式在高分辨率图像的准确性和低复杂度网络的效率之间获得平衡。 Image Cascade Network(ICNet) [3] 主要用于图像实时语义分割。相较于其它压缩计算的方法,ICNet即考虑了速度,也考虑了准确性。 ICNet的主要思想是将输入图像变换为不同的分辨率,然后用不同计算复杂度的子网络计算不同分辨率的输入,然后将结果合并。ICNet由三个子网络组成,计算复杂度高的网络处理低分辨率输入,计算复杂度低的网络处理分辨率高的网络,通过这种方式在高分辨率图像的准确性和低复杂度网络的效率之间获得平衡。
...@@ -29,7 +38,7 @@ Image Cascade Network(ICNet) [3] 主要用于图像实时语义分割。相较 ...@@ -29,7 +38,7 @@ Image Cascade Network(ICNet) [3] 主要用于图像实时语义分割。相较
![](./imgs/icnet.png) ![](./imgs/icnet.png)
### PSPNet ## PSPNet
Pyramid Scene Parsing Network (PSPNet) [4] 起源于场景解析(Scene Parsing)领域。如下图所示,普通FCN [5] 面向复杂场景出现三种误分割现象:(1)关系不匹配。将船误分类成车,显然车一般不会出现在水面上。(2)类别混淆。摩天大厦和建筑物这两个类别相近,误将摩天大厦分类成建筑物。(3)类别不显著。枕头区域较小且纹理与床相近,误将枕头分类成床。 Pyramid Scene Parsing Network (PSPNet) [4] 起源于场景解析(Scene Parsing)领域。如下图所示,普通FCN [5] 面向复杂场景出现三种误分割现象:(1)关系不匹配。将船误分类成车,显然车一般不会出现在水面上。(2)类别混淆。摩天大厦和建筑物这两个类别相近,误将摩天大厦分类成建筑物。(3)类别不显著。枕头区域较小且纹理与床相近,误将枕头分类成床。
...@@ -39,6 +48,16 @@ PSPNet的出发点是在算法中引入更多的上下文信息来解决上述 ...@@ -39,6 +48,16 @@ PSPNet的出发点是在算法中引入更多的上下文信息来解决上述
![](./imgs/pspnet.png) ![](./imgs/pspnet.png)
### HRNet
High-Resolution Network (HRNet) [6] 在整个训练过程中始终维持高分辨率表示。
HRNet具有两个特点:(1)从高分辨率到低分辨率并行连接各子网络,(2)反复交换跨分辨率子网络信息。这两个特点使HRNet网络能够学习到更丰富的语义信息和细节信息。
HRNet在人体姿态估计、语义分割和目标检测领域都取得了显著的性能提升。
整个网络结构如下:
![](./imgs/hrnet.png)
## 参考文献 ## 参考文献
[1] [U-Net: Convolutional Networks for Biomedical Image Segmentation](https://arxiv.org/abs/1505.04597) [1] [U-Net: Convolutional Networks for Biomedical Image Segmentation](https://arxiv.org/abs/1505.04597)
...@@ -51,3 +70,5 @@ PSPNet的出发点是在算法中引入更多的上下文信息来解决上述 ...@@ -51,3 +70,5 @@ PSPNet的出发点是在算法中引入更多的上下文信息来解决上述
[5] [Fully Convolutional Networks for Semantic Segmentation](https://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn.pdf) [5] [Fully Convolutional Networks for Semantic Segmentation](https://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn.pdf)
[6] [Deep High-Resolution Representation Learning for Visual Recognition](https://arxiv.org/abs/1908.07919)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册