Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleX
提交
35a1019e
P
PaddleX
项目概览
PaddlePaddle
/
PaddleX
通知
138
Star
4
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
43
列表
看板
标记
里程碑
合并请求
5
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleX
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
43
Issue
43
列表
看板
标记
里程碑
合并请求
5
合并请求
5
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
35a1019e
编写于
6月 11, 2020
作者:
F
FlyingQianMM
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add fastscnn for segmentation
上级
0e8fd3f5
变更
13
隐藏空白更改
内联
并排
Showing
13 changed file
with
120 addition
and
29 deletion
+120
-29
docs/apis/models/semantic_segmentation.md
docs/apis/models/semantic_segmentation.md
+90
-5
new_tutorials/train/README.md
new_tutorials/train/README.md
+3
-0
paddlex/cv/models/__init__.py
paddlex/cv/models/__init__.py
+1
-0
paddlex/cv/models/deeplabv3p.py
paddlex/cv/models/deeplabv3p.py
+1
-1
paddlex/cv/models/hrnet.py
paddlex/cv/models/hrnet.py
+1
-6
paddlex/cv/models/unet.py
paddlex/cv/models/unet.py
+1
-6
paddlex/cv/models/utils/pretrain_weights.py
paddlex/cv/models/utils/pretrain_weights.py
+15
-4
paddlex/cv/nets/__init__.py
paddlex/cv/nets/__init__.py
+1
-0
paddlex/cv/nets/segmentation/__init__.py
paddlex/cv/nets/segmentation/__init__.py
+1
-0
paddlex/cv/nets/segmentation/deeplabv3p.py
paddlex/cv/nets/segmentation/deeplabv3p.py
+0
-1
paddlex/cv/nets/segmentation/hrnet.py
paddlex/cv/nets/segmentation/hrnet.py
+0
-1
paddlex/cv/nets/segmentation/unet.py
paddlex/cv/nets/segmentation/unet.py
+5
-5
paddlex/seg.py
paddlex/seg.py
+1
-0
未找到文件。
docs/apis/models/semantic_segmentation.md
浏览文件 @
35a1019e
...
@@ -40,12 +40,12 @@ train(self, num_epochs, train_dataset, train_batch_size=2, eval_dataset=None, ev
...
@@ -40,12 +40,12 @@ train(self, num_epochs, train_dataset, train_batch_size=2, eval_dataset=None, ev
> > - **save_interval_epochs** (int): 模型保存间隔(单位:迭代轮数)。默认为1。
> > - **save_interval_epochs** (int): 模型保存间隔(单位:迭代轮数)。默认为1。
> > - **log_interval_steps** (int): 训练日志输出间隔(单位:迭代次数)。默认为2。
> > - **log_interval_steps** (int): 训练日志输出间隔(单位:迭代次数)。默认为2。
> > - **save_dir** (str): 模型保存路径。默认'output'
> > - **save_dir** (str): 模型保存路径。默认'output'
> > - **pretrain_weights** (str): 若指定为路径时,则加载路径下预训练模型;若为字符串'IMAGENET',则自动下载在ImageNet图片数据上预训练的模型权重;若为字符串'COCO',则自动下载在COCO数据集上预训练的模型权重(注意:暂未提供Xception41、MobileNetV2_x0.25、MobileNetV2_x0.5、MobileNetV2_x1.5、MobileNetV2_x2.0的COCO预训练模型);若为字符串'CITYSCAPES',则自动下载在CITYSCAPES数据集上预训练的模型权重(注意:暂未提供Xception41、MobileNetV2_x0.25、MobileNetV2_x0.5、MobileNetV2_x1.5、MobileNetV2_x2.0的CITYSCAPES预训练模型);为None,则不使用预训练模型。默认'IMAGENET'。
> > - **pretrain_weights** (str): 若指定为路径时,则加载路径下预训练模型;若为字符串'IMAGENET',则自动下载在ImageNet图片数据上预训练的模型权重;若为字符串'COCO',则自动下载在COCO数据集上预训练的模型权重(注意:暂未提供Xception41、MobileNetV2_x0.25、MobileNetV2_x0.5、MobileNetV2_x1.5、MobileNetV2_x2.0的COCO预训练模型);若为字符串'CITYSCAPES',则自动下载在CITYSCAPES数据集上预训练的模型权重(注意:暂未提供Xception41、MobileNetV2_x0.25、MobileNetV2_x0.5、MobileNetV2_x1.5、MobileNetV2_x2.0的CITYSCAPES预训练模型);
若
为None,则不使用预训练模型。默认'IMAGENET'。
> > - **optimizer** (paddle.fluid.optimizer): 优化器。当该参数为None时,使用默认的优化器:使用fluid.optimizer.Momentum优化方法,polynomial的学习率衰减策略。
> > - **optimizer** (paddle.fluid.optimizer): 优化器。当该参数为None时,使用默认的优化器:使用fluid.optimizer.Momentum优化方法,polynomial的学习率衰减策略。
> > - **learning_rate** (float): 默认优化器的初始学习率。默认0.01。
> > - **learning_rate** (float): 默认优化器的初始学习率。默认0.01。
> > - **lr_decay_power** (float): 默认优化器学习率衰减指数。默认0.9。
> > - **lr_decay_power** (float): 默认优化器学习率衰减指数。默认0.9。
> > - **use_vdl** (bool): 是否使用VisualDL进行可视化。默认False。
> > - **use_vdl** (bool): 是否使用VisualDL进行可视化。默认False。
> > - **sensitivities_file** (str): 若指定为路径时,则加载路径下敏感度信息进行裁剪;若为字符串'DEFAULT',则自动下载在
ImageNet
图片数据上获得的敏感度信息进行裁剪;若为None,则不进行裁剪。默认为None。
> > - **sensitivities_file** (str): 若指定为路径时,则加载路径下敏感度信息进行裁剪;若为字符串'DEFAULT',则自动下载在
Cityscapes
图片数据上获得的敏感度信息进行裁剪;若为None,则不进行裁剪。默认为None。
> > - **eval_metric_loss** (float): 可容忍的精度损失。默认为0.05。
> > - **eval_metric_loss** (float): 可容忍的精度损失。默认为0.05。
> > - **early_stop** (bool): 是否使用提前终止训练策略。默认值为False。
> > - **early_stop** (bool): 是否使用提前终止训练策略。默认值为False。
> > - **early_stop_patience** (int): 当使用提前终止训练策略时,如果验证集精度在`early_stop_patience`个epoch内连续下降或持平,则终止训练。默认值为5。
> > - **early_stop_patience** (int): 当使用提前终止训练策略时,如果验证集精度在`early_stop_patience`个epoch内连续下降或持平,则终止训练。默认值为5。
...
@@ -129,7 +129,7 @@ train(self, num_epochs, train_dataset, train_batch_size=2, eval_dataset=None, ev
...
@@ -129,7 +129,7 @@ train(self, num_epochs, train_dataset, train_batch_size=2, eval_dataset=None, ev
> > - **learning_rate** (float): 默认优化器的初始学习率。默认0.01。
> > - **learning_rate** (float): 默认优化器的初始学习率。默认0.01。
> > - **lr_decay_power** (float): 默认优化器学习率衰减指数。默认0.9。
> > - **lr_decay_power** (float): 默认优化器学习率衰减指数。默认0.9。
> > - **use_vdl** (bool): 是否使用VisualDL进行可视化。默认False。
> > - **use_vdl** (bool): 是否使用VisualDL进行可视化。默认False。
> > - **sensitivities_file** (str): 若指定为路径时,则加载路径下敏感度信息进行裁剪;若为字符串'DEFAULT',则自动下载在
ImageNet
图片数据上获得的敏感度信息进行裁剪;若为None,则不进行裁剪。默认为None。
> > - **sensitivities_file** (str): 若指定为路径时,则加载路径下敏感度信息进行裁剪;若为字符串'DEFAULT',则自动下载在
Cityscapes
图片数据上获得的敏感度信息进行裁剪;若为None,则不进行裁剪。默认为None。
> > - **eval_metric_loss** (float): 可容忍的精度损失。默认为0.05。
> > - **eval_metric_loss** (float): 可容忍的精度损失。默认为0.05。
> > - **early_stop** (float): 是否使用提前终止训练策略。默认值为False。
> > - **early_stop** (float): 是否使用提前终止训练策略。默认值为False。
> > - **early_stop_patience** (int): 当使用提前终止训练策略时,如果验证集精度在`early_stop_patience`个epoch内连续下降或持平,则终止训练。默认值为5。
> > - **early_stop_patience** (int): 当使用提前终止训练策略时,如果验证集精度在`early_stop_patience`个epoch内连续下降或持平,则终止训练。默认值为5。
...
@@ -209,12 +209,12 @@ train(self, num_epochs, train_dataset, train_batch_size=2, eval_dataset=None, ev
...
@@ -209,12 +209,12 @@ train(self, num_epochs, train_dataset, train_batch_size=2, eval_dataset=None, ev
> > - **save_interval_epochs** (int): 模型保存间隔(单位:迭代轮数)。默认为1。
> > - **save_interval_epochs** (int): 模型保存间隔(单位:迭代轮数)。默认为1。
> > - **log_interval_steps** (int): 训练日志输出间隔(单位:迭代次数)。默认为2。
> > - **log_interval_steps** (int): 训练日志输出间隔(单位:迭代次数)。默认为2。
> > - **save_dir** (str): 模型保存路径。默认'output'
> > - **save_dir** (str): 模型保存路径。默认'output'
> > - **pretrain_weights** (str): 若指定为路径时,则加载路径下预训练模型;若为字符串'IMAGENET',则自动下载在ImageNet数据集上预训练的模型权重;若为字符串'CITYSCAPES',则自动下载在CITYSCAPES图片数据上预训练的模型权重(注意:目前仅提供`width`取值为18的CITYSCAPES预训练模型);为None,则不使用预训练模型。默认'IMAGENET'。
> > - **pretrain_weights** (str): 若指定为路径时,则加载路径下预训练模型;若为字符串'IMAGENET',则自动下载在ImageNet数据集上预训练的模型权重;若为字符串'CITYSCAPES',则自动下载在CITYSCAPES图片数据上预训练的模型权重(注意:目前仅提供`width`取值为18的CITYSCAPES预训练模型);
若
为None,则不使用预训练模型。默认'IMAGENET'。
> > - **optimizer** (paddle.fluid.optimizer): 优化器。当该参数为None时,使用默认的优化器:使用fluid.optimizer.Momentum优化方法,polynomial的学习率衰减策略。
> > - **optimizer** (paddle.fluid.optimizer): 优化器。当该参数为None时,使用默认的优化器:使用fluid.optimizer.Momentum优化方法,polynomial的学习率衰减策略。
> > - **learning_rate** (float): 默认优化器的初始学习率。默认0.01。
> > - **learning_rate** (float): 默认优化器的初始学习率。默认0.01。
> > - **lr_decay_power** (float): 默认优化器学习率衰减指数。默认0.9。
> > - **lr_decay_power** (float): 默认优化器学习率衰减指数。默认0.9。
> > - **use_vdl** (bool): 是否使用VisualDL进行可视化。默认False。
> > - **use_vdl** (bool): 是否使用VisualDL进行可视化。默认False。
> > - **sensitivities_file** (str): 若指定为路径时,则加载路径下敏感度信息进行裁剪;若为字符串'DEFAULT',则自动下载在
ImageNet
图片数据上获得的敏感度信息进行裁剪;若为None,则不进行裁剪。默认为None。
> > - **sensitivities_file** (str): 若指定为路径时,则加载路径下敏感度信息进行裁剪;若为字符串'DEFAULT',则自动下载在
Cityscapes
图片数据上获得的敏感度信息进行裁剪;若为None,则不进行裁剪。默认为None。
> > - **eval_metric_loss** (float): 可容忍的精度损失。默认为0.05。
> > - **eval_metric_loss** (float): 可容忍的精度损失。默认为0.05。
> > - **early_stop** (float): 是否使用提前终止训练策略。默认值为False。
> > - **early_stop** (float): 是否使用提前终止训练策略。默认值为False。
> > - **early_stop_patience** (int): 当使用提前终止训练策略时,如果验证集精度在`early_stop_patience`个epoch内连续下降或持平,则终止训练。默认值为5。
> > - **early_stop_patience** (int): 当使用提前终止训练策略时,如果验证集精度在`early_stop_patience`个epoch内连续下降或持平,则终止训练。默认值为5。
...
@@ -258,3 +258,88 @@ predict(self, im_file, transforms=None):
...
@@ -258,3 +258,88 @@ predict(self, im_file, transforms=None):
> **返回值**
> **返回值**
> >
> >
> > - **dict**: 包含关键字'label_map'和'score_map', 'label_map'存储预测结果灰度图,像素值表示对应的类别,'score_map'存储各类别的概率,shape=(h, w, num_classes)。
> > - **dict**: 包含关键字'label_map'和'score_map', 'label_map'存储预测结果灰度图,像素值表示对应的类别,'score_map'存储各类别的概率,shape=(h, w, num_classes)。
## FastSCNN类
```
python
paddlex
.
seg
.
FastSCNN
(
num_classes
=
2
,
use_bce_loss
=
False
,
use_dice_loss
=
False
,
class_weight
=
None
,
ignore_index
=
255
,
multi_loss_weight
=
[
1.0
])
```
> 构建FastSCNN分割器。
> **参数**
> > - **num_classes** (int): 类别数。
> > - **use_bce_loss** (bool): 是否使用bce loss作为网络的损失函数,只能用于两类分割。可与dice loss同时使用。默认False。
> > - **use_dice_loss** (bool): 是否使用dice loss作为网络的损失函数,只能用于两类分割,可与bce loss同时使用。当use_bce_loss和use_dice_loss都为False时,使用交叉熵损失函数。默认False。
> > - **class_weight** (list/str): 交叉熵损失函数各类损失的权重。当`class_weight`为list的时候,长度应为`num_classes`。当`class_weight`为str时, weight.lower()应为'dynamic',这时会根据每一轮各类像素的比重自行计算相应的权重,每一类的权重为:每类的比例 * num_classes。class_weight取默认值None是,各类的权重1,即平时使用的交叉熵损失函数。
> > - **ignore_index** (int): label上忽略的值,label为`ignore_index`的像素不参与损失函数的计算。默认255。
> > - **multi_loss_weight** (list): 多分支上的loss权重。默认计算一个分支上的loss,即默认值为[1.0]。也支持计算两个分支或三个分支上的loss,权重按[fusion_branch_weight, higher_branch_weight, lower_branch_weight]排列,fusion_branch_weight为空间细节分支和全局上下文分支融合后的分支上的loss权重,higher_branch_weight为空间细节分支上的loss权重,lower_branch_weight为全局上下文分支上的loss权重,若higher_branch_weight和lower_branch_weight未设置则不会计算这两个分支上的loss。
### train 训练接口
```
python
train
(
self
,
num_epochs
,
train_dataset
,
train_batch_size
=
2
,
eval_dataset
=
None
,
eval_batch_size
=
1
,
save_interval_epochs
=
1
,
log_interval_steps
=
2
,
save_dir
=
'output'
,
pretrain_weights
=
'CITYSCAPES'
,
optimizer
=
None
,
learning_rate
=
0.01
,
lr_decay_power
=
0.9
,
use_vdl
=
False
,
sensitivities_file
=
None
,
eval_metric_loss
=
0.05
,
early_stop
=
False
,
early_stop_patience
=
5
,
resume_checkpoint
=
None
):
```
> FastSCNN模型训练接口。
> **参数**
> >
> > - **num_epochs** (int): 训练迭代轮数。
> > - **train_dataset** (paddlex.datasets): 训练数据读取器。
> > - **train_batch_size** (int): 训练数据batch大小。同时作为验证数据batch大小。默认2。
> > - **eval_dataset** (paddlex.datasets): 评估数据读取器。
> > - **save_interval_epochs** (int): 模型保存间隔(单位:迭代轮数)。默认为1。
> > - **log_interval_steps** (int): 训练日志输出间隔(单位:迭代次数)。默认为2。
> > - **save_dir** (str): 模型保存路径。默认'output'
> > - **pretrain_weights** (str): 若指定为路径时,则加载路径下预训练模型;若为字符串'CITYSCAPES',则自动下载在CITYSCAPES图片数据上预训练的模型权重;若为None,则不使用预训练模型。默认'CITYSCAPES'。
> > - **optimizer** (paddle.fluid.optimizer): 优化器。当该参数为None时,使用默认的优化器:使用fluid.optimizer.Momentum优化方法,polynomial的学习率衰减策略。
> > - **learning_rate** (float): 默认优化器的初始学习率。默认0.01。
> > - **lr_decay_power** (float): 默认优化器学习率衰减指数。默认0.9。
> > - **use_vdl** (bool): 是否使用VisualDL进行可视化。默认False。
> > - **sensitivities_file** (str): 若指定为路径时,则加载路径下敏感度信息进行裁剪;若为字符串'DEFAULT',则自动下载在Cityscapes图片数据上获得的敏感度信息进行裁剪;若为None,则不进行裁剪。默认为None。
> > - **eval_metric_loss** (float): 可容忍的精度损失。默认为0.05。
> > - **early_stop** (float): 是否使用提前终止训练策略。默认值为False。
> > - **early_stop_patience** (int): 当使用提前终止训练策略时,如果验证集精度在`early_stop_patience`个epoch内连续下降或持平,则终止训练。默认值为5。
> > - **resume_checkpoint** (str): 恢复训练时指定上次训练保存的模型路径。若为None,则不会恢复训练。默认值为None。
#### evaluate 评估接口
```
evaluate(self, eval_dataset, batch_size=1, epoch_id=None, return_details=False):
```
> FastSCNN模型评估接口。
> **参数**
> >
> > - **eval_dataset** (paddlex.datasets): 评估数据读取器。
> > - **batch_size** (int): 评估时的batch大小。默认1。
> > - **epoch_id** (int): 当前评估模型所在的训练轮数。
> > - **return_details** (bool): 是否返回详细信息。默认False。
> **返回值**
> >
> > - **dict**: 当return_details为False时,返回dict。包含关键字:'miou'、'category_iou'、'macc'、
> > 'category_acc'和'kappa',分别表示平均iou、各类别iou、平均准确率、各类别准确率和kappa系数。
> > - **tuple** (metrics, eval_details):当return_details为True时,增加返回dict (eval_details),
> > 包含关键字:'confusion_matrix',表示评估的混淆矩阵。
#### predict 预测接口
```
predict(self, im_file, transforms=None):
```
> FastSCNN模型预测接口。需要注意的是,只有在训练过程中定义了eval_dataset,模型在保存时才会将预测时的图像处理流程保存在`UNet.test_transforms`和`UNet.eval_transforms`中。如未在训练时定义eval_dataset,那在调用预测`predict`接口时,用户需要再重新定义test_transforms传入给`predict`接口。
> **参数**
> >
> > - **img_file** (str): 预测图像路径。
> > - **transforms** (paddlex.seg.transforms): 数据预处理操作。
> **返回值**
> >
> > - **dict**: 包含关键字'label_map'和'score_map', 'label_map'存储预测结果灰度图,像素值表示对应的类别,'score_map'存储各类别的概率,shape=(h, w, num_classes)。
new_tutorials/train/README.md
浏览文件 @
35a1019e
...
@@ -10,6 +10,9 @@
...
@@ -10,6 +10,9 @@
|detection/mask_rcnn_f50_fpn.py | 实例分割MaskRCNN | 垃圾分拣 |
|detection/mask_rcnn_f50_fpn.py | 实例分割MaskRCNN | 垃圾分拣 |
|segmentation/deeplabv3p.py | 语义分割DeepLabV3| 视盘分割 |
|segmentation/deeplabv3p.py | 语义分割DeepLabV3| 视盘分割 |
|segmentation/unet.py | 语义分割UNet | 视盘分割 |
|segmentation/unet.py | 语义分割UNet | 视盘分割 |
|segmentation/hrnet.py | 语义分割HRNet | 视盘分割 |
|segmentation/fast_scnn.py | 语义分割FastSCNN | 视盘分割 |
## 开始训练
## 开始训练
在安装PaddleX后,使用如下命令开始训练
在安装PaddleX后,使用如下命令开始训练
...
...
paddlex/cv/models/__init__.py
浏览文件 @
35a1019e
...
@@ -42,5 +42,6 @@ from .mask_rcnn import MaskRCNN
...
@@ -42,5 +42,6 @@ from .mask_rcnn import MaskRCNN
from
.unet
import
UNet
from
.unet
import
UNet
from
.deeplabv3p
import
DeepLabv3p
from
.deeplabv3p
import
DeepLabv3p
from
.hrnet
import
HRNet
from
.hrnet
import
HRNet
from
.fast_scnn
import
FastSCNN
from
.load_model
import
load_model
from
.load_model
import
load_model
from
.slim
import
prune
from
.slim
import
prune
paddlex/cv/models/deeplabv3p.py
浏览文件 @
35a1019e
...
@@ -251,7 +251,7 @@ class DeepLabv3p(BaseAPI):
...
@@ -251,7 +251,7 @@ class DeepLabv3p(BaseAPI):
lr_decay_power (float): 默认优化器学习率衰减指数。默认0.9。
lr_decay_power (float): 默认优化器学习率衰减指数。默认0.9。
use_vdl (bool): 是否使用VisualDL进行可视化。默认False。
use_vdl (bool): 是否使用VisualDL进行可视化。默认False。
sensitivities_file (str): 若指定为路径时,则加载路径下敏感度信息进行裁剪;若为字符串'DEFAULT',
sensitivities_file (str): 若指定为路径时,则加载路径下敏感度信息进行裁剪;若为字符串'DEFAULT',
则自动下载在
ImageNet
图片数据上获得的敏感度信息进行裁剪;若为None,则不进行裁剪。默认为None。
则自动下载在
Cityscapes
图片数据上获得的敏感度信息进行裁剪;若为None,则不进行裁剪。默认为None。
eval_metric_loss (float): 可容忍的精度损失。默认为0.05。
eval_metric_loss (float): 可容忍的精度损失。默认为0.05。
early_stop (bool): 是否使用提前终止训练策略。默认值为False。
early_stop (bool): 是否使用提前终止训练策略。默认值为False。
early_stop_patience (int): 当使用提前终止训练策略时,如果验证集精度在`early_stop_patience`个epoch内
early_stop_patience (int): 当使用提前终止训练策略时,如果验证集精度在`early_stop_patience`个epoch内
...
...
paddlex/cv/models/hrnet.py
浏览文件 @
35a1019e
...
@@ -93,11 +93,6 @@ class HRNet(DeepLabv3p):
...
@@ -93,11 +93,6 @@ class HRNet(DeepLabv3p):
if
mode
==
'train'
:
if
mode
==
'train'
:
self
.
optimizer
.
minimize
(
model_out
)
self
.
optimizer
.
minimize
(
model_out
)
outputs
[
'loss'
]
=
model_out
outputs
[
'loss'
]
=
model_out
elif
mode
==
'eval'
:
outputs
[
'loss'
]
=
model_out
[
0
]
outputs
[
'pred'
]
=
model_out
[
1
]
outputs
[
'label'
]
=
model_out
[
2
]
outputs
[
'mask'
]
=
model_out
[
3
]
else
:
else
:
outputs
[
'pred'
]
=
model_out
[
0
]
outputs
[
'pred'
]
=
model_out
[
0
]
outputs
[
'logit'
]
=
model_out
[
1
]
outputs
[
'logit'
]
=
model_out
[
1
]
...
@@ -158,7 +153,7 @@ class HRNet(DeepLabv3p):
...
@@ -158,7 +153,7 @@ class HRNet(DeepLabv3p):
lr_decay_power (float): 默认优化器学习率多项式衰减系数。默认0.9。
lr_decay_power (float): 默认优化器学习率多项式衰减系数。默认0.9。
use_vdl (bool): 是否使用VisualDL进行可视化。默认False。
use_vdl (bool): 是否使用VisualDL进行可视化。默认False。
sensitivities_file (str): 若指定为路径时,则加载路径下敏感度信息进行裁剪;若为字符串'DEFAULT',
sensitivities_file (str): 若指定为路径时,则加载路径下敏感度信息进行裁剪;若为字符串'DEFAULT',
则自动下载在
ImageNet
图片数据上获得的敏感度信息进行裁剪;若为None,则不进行裁剪。默认为None。
则自动下载在
Cityscapes
图片数据上获得的敏感度信息进行裁剪;若为None,则不进行裁剪。默认为None。
eval_metric_loss (float): 可容忍的精度损失。默认为0.05。
eval_metric_loss (float): 可容忍的精度损失。默认为0.05。
early_stop (bool): 是否使用提前终止训练策略。默认值为False。
early_stop (bool): 是否使用提前终止训练策略。默认值为False。
early_stop_patience (int): 当使用提前终止训练策略时,如果验证集精度在`early_stop_patience`个epoch内
early_stop_patience (int): 当使用提前终止训练策略时,如果验证集精度在`early_stop_patience`个epoch内
...
...
paddlex/cv/models/unet.py
浏览文件 @
35a1019e
...
@@ -95,11 +95,6 @@ class UNet(DeepLabv3p):
...
@@ -95,11 +95,6 @@ class UNet(DeepLabv3p):
if
mode
==
'train'
:
if
mode
==
'train'
:
self
.
optimizer
.
minimize
(
model_out
)
self
.
optimizer
.
minimize
(
model_out
)
outputs
[
'loss'
]
=
model_out
outputs
[
'loss'
]
=
model_out
elif
mode
==
'eval'
:
outputs
[
'loss'
]
=
model_out
[
0
]
outputs
[
'pred'
]
=
model_out
[
1
]
outputs
[
'label'
]
=
model_out
[
2
]
outputs
[
'mask'
]
=
model_out
[
3
]
else
:
else
:
outputs
[
'pred'
]
=
model_out
[
0
]
outputs
[
'pred'
]
=
model_out
[
0
]
outputs
[
'logit'
]
=
model_out
[
1
]
outputs
[
'logit'
]
=
model_out
[
1
]
...
@@ -141,7 +136,7 @@ class UNet(DeepLabv3p):
...
@@ -141,7 +136,7 @@ class UNet(DeepLabv3p):
lr_decay_power (float): 默认优化器学习率多项式衰减系数。默认0.9。
lr_decay_power (float): 默认优化器学习率多项式衰减系数。默认0.9。
use_vdl (bool): 是否使用VisualDL进行可视化。默认False。
use_vdl (bool): 是否使用VisualDL进行可视化。默认False。
sensitivities_file (str): 若指定为路径时,则加载路径下敏感度信息进行裁剪;若为字符串'DEFAULT',
sensitivities_file (str): 若指定为路径时,则加载路径下敏感度信息进行裁剪;若为字符串'DEFAULT',
则自动下载在
ImageNet
图片数据上获得的敏感度信息进行裁剪;若为None,则不进行裁剪。默认为None。
则自动下载在
Cityscapes
图片数据上获得的敏感度信息进行裁剪;若为None,则不进行裁剪。默认为None。
eval_metric_loss (float): 可容忍的精度损失。默认为0.05。
eval_metric_loss (float): 可容忍的精度损失。默认为0.05。
early_stop (bool): 是否使用提前终止训练策略。默认值为False。
early_stop (bool): 是否使用提前终止训练策略。默认值为False。
early_stop_patience (int): 当使用提前终止训练策略时,如果验证集精度在`early_stop_patience`个epoch内
early_stop_patience (int): 当使用提前终止训练策略时,如果验证集精度在`early_stop_patience`个epoch内
...
...
paddlex/cv/models/utils/pretrain_weights.py
浏览文件 @
35a1019e
...
@@ -115,7 +115,9 @@ cityscapes_pretrain = {
...
@@ -115,7 +115,9 @@ cityscapes_pretrain = {
'DeepLabv3p_Xception65_CITYSCAPES'
:
'DeepLabv3p_Xception65_CITYSCAPES'
:
'https://paddleseg.bj.bcebos.com/models/xception65_bn_cityscapes.tgz'
,
'https://paddleseg.bj.bcebos.com/models/xception65_bn_cityscapes.tgz'
,
'HRNet_W18_CITYSCAPES'
:
'HRNet_W18_CITYSCAPES'
:
'https://paddleseg.bj.bcebos.com/models/hrnet_w18_bn_cityscapes.tgz'
'https://paddleseg.bj.bcebos.com/models/hrnet_w18_bn_cityscapes.tgz'
,
'FastSCNN_CITYSCAPES'
:
'https://paddleseg.bj.bcebos.com/models/fast_scnn_cityscape.tar'
}
}
...
@@ -137,6 +139,10 @@ def get_pretrain_weights(flag, class_name, backbone, save_dir):
...
@@ -137,6 +139,10 @@ def get_pretrain_weights(flag, class_name, backbone, save_dir):
elif
class_name
==
'HRNet'
:
elif
class_name
==
'HRNet'
:
logging
.
warning
(
warning_info
.
format
(
class_name
,
flag
,
'IMAGENET'
))
logging
.
warning
(
warning_info
.
format
(
class_name
,
flag
,
'IMAGENET'
))
flag
=
'IMAGENET'
flag
=
'IMAGENET'
elif
class_name
==
'FastSCNN'
:
logging
.
warning
(
warning_info
.
format
(
class_name
,
flag
,
'CITYSCAPES'
))
flag
=
'CITYSCAPES'
elif
flag
==
'CITYSCAPES'
:
elif
flag
==
'CITYSCAPES'
:
model_name
=
'{}_{}'
.
format
(
class_name
,
backbone
)
model_name
=
'{}_{}'
.
format
(
class_name
,
backbone
)
if
class_name
==
'UNet'
:
if
class_name
==
'UNet'
:
...
@@ -153,9 +159,14 @@ def get_pretrain_weights(flag, class_name, backbone, save_dir):
...
@@ -153,9 +159,14 @@ def get_pretrain_weights(flag, class_name, backbone, save_dir):
model_name
=
'{}_{}'
.
format
(
class_name
,
backbone
)
model_name
=
'{}_{}'
.
format
(
class_name
,
backbone
)
logging
.
warning
(
warning_info
.
format
(
model_name
,
flag
,
'IMAGENET'
))
logging
.
warning
(
warning_info
.
format
(
model_name
,
flag
,
'IMAGENET'
))
flag
=
'IMAGENET'
flag
=
'IMAGENET'
elif
flag
==
'IMAGENET'
and
class_name
==
'UNet'
:
elif
flag
==
'IMAGENET'
:
logging
.
warning
(
warning_info
.
format
(
class_name
,
flag
,
'COCO'
))
if
class_name
==
'UNet'
:
flag
=
'COCO'
logging
.
warning
(
warning_info
.
format
(
class_name
,
flag
,
'COCO'
))
flag
=
'COCO'
elif
class_name
==
'FastSCNN'
:
logging
.
warning
(
warning_info
.
format
(
class_name
,
flag
,
'CITYSCAPES'
))
flag
=
'CITYSCAPES'
if
flag
==
'IMAGENET'
:
if
flag
==
'IMAGENET'
:
new_save_dir
=
save_dir
new_save_dir
=
save_dir
...
...
paddlex/cv/nets/__init__.py
浏览文件 @
35a1019e
...
@@ -20,6 +20,7 @@ from .mobilenet_v2 import MobileNetV2
...
@@ -20,6 +20,7 @@ from .mobilenet_v2 import MobileNetV2
from
.mobilenet_v3
import
MobileNetV3
from
.mobilenet_v3
import
MobileNetV3
from
.segmentation
import
UNet
from
.segmentation
import
UNet
from
.segmentation
import
DeepLabv3p
from
.segmentation
import
DeepLabv3p
from
.segmentation
import
FastSCNN
from
.xception
import
Xception
from
.xception
import
Xception
from
.densenet
import
DenseNet
from
.densenet
import
DenseNet
from
.shufflenet_v2
import
ShuffleNetV2
from
.shufflenet_v2
import
ShuffleNetV2
...
...
paddlex/cv/nets/segmentation/__init__.py
浏览文件 @
35a1019e
...
@@ -15,5 +15,6 @@
...
@@ -15,5 +15,6 @@
from
.unet
import
UNet
from
.unet
import
UNet
from
.deeplabv3p
import
DeepLabv3p
from
.deeplabv3p
import
DeepLabv3p
from
.hrnet
import
HRNet
from
.hrnet
import
HRNet
from
.fast_scnn
import
FastSCNN
from
.model_utils
import
libs
from
.model_utils
import
libs
from
.model_utils
import
loss
from
.model_utils
import
loss
paddlex/cv/nets/segmentation/deeplabv3p.py
浏览文件 @
35a1019e
...
@@ -28,7 +28,6 @@ from .model_utils.libs import sigmoid_to_softmax
...
@@ -28,7 +28,6 @@ from .model_utils.libs import sigmoid_to_softmax
from
.model_utils.loss
import
softmax_with_loss
from
.model_utils.loss
import
softmax_with_loss
from
.model_utils.loss
import
dice_loss
from
.model_utils.loss
import
dice_loss
from
.model_utils.loss
import
bce_loss
from
.model_utils.loss
import
bce_loss
import
paddlex.utils.logging
as
logging
from
paddlex.cv.nets.xception
import
Xception
from
paddlex.cv.nets.xception
import
Xception
from
paddlex.cv.nets.mobilenet_v2
import
MobileNetV2
from
paddlex.cv.nets.mobilenet_v2
import
MobileNetV2
...
...
paddlex/cv/nets/segmentation/hrnet.py
浏览文件 @
35a1019e
...
@@ -27,7 +27,6 @@ from .model_utils.loss import softmax_with_loss
...
@@ -27,7 +27,6 @@ from .model_utils.loss import softmax_with_loss
from
.model_utils.loss
import
dice_loss
from
.model_utils.loss
import
dice_loss
from
.model_utils.loss
import
bce_loss
from
.model_utils.loss
import
bce_loss
import
paddlex
import
paddlex
import
paddlex.utils.logging
as
logging
class
HRNet
(
object
):
class
HRNet
(
object
):
...
...
paddlex/cv/nets/segmentation/unet.py
浏览文件 @
35a1019e
...
@@ -27,7 +27,6 @@ from .model_utils.libs import sigmoid_to_softmax
...
@@ -27,7 +27,6 @@ from .model_utils.libs import sigmoid_to_softmax
from
.model_utils.loss
import
softmax_with_loss
from
.model_utils.loss
import
softmax_with_loss
from
.model_utils.loss
import
dice_loss
from
.model_utils.loss
import
dice_loss
from
.model_utils.loss
import
bce_loss
from
.model_utils.loss
import
bce_loss
import
paddlex.utils.logging
as
logging
class
UNet
(
object
):
class
UNet
(
object
):
...
@@ -106,7 +105,8 @@ class UNet(object):
...
@@ -106,7 +105,8 @@ class UNet(object):
name
=
'weights'
,
name
=
'weights'
,
regularizer
=
fluid
.
regularizer
.
L2DecayRegularizer
(
regularizer
=
fluid
.
regularizer
.
L2DecayRegularizer
(
regularization_coeff
=
0.0
),
regularization_coeff
=
0.0
),
initializer
=
fluid
.
initializer
.
TruncatedNormal
(
loc
=
0.0
,
scale
=
0.33
))
initializer
=
fluid
.
initializer
.
TruncatedNormal
(
loc
=
0.0
,
scale
=
0.33
))
with
scope
(
"conv0"
):
with
scope
(
"conv0"
):
data
=
bn_relu
(
data
=
bn_relu
(
conv
(
conv
(
...
@@ -140,8 +140,7 @@ class UNet(object):
...
@@ -140,8 +140,7 @@ class UNet(object):
name
=
'weights'
,
name
=
'weights'
,
regularizer
=
fluid
.
regularizer
.
L2DecayRegularizer
(
regularizer
=
fluid
.
regularizer
.
L2DecayRegularizer
(
regularization_coeff
=
0.0
),
regularization_coeff
=
0.0
),
initializer
=
fluid
.
initializer
.
XavierInitializer
(),
initializer
=
fluid
.
initializer
.
XavierInitializer
(),
)
)
with
scope
(
"up"
):
with
scope
(
"up"
):
if
self
.
upsample_mode
==
'bilinear'
:
if
self
.
upsample_mode
==
'bilinear'
:
short_cut_shape
=
fluid
.
layers
.
shape
(
short_cut
)
short_cut_shape
=
fluid
.
layers
.
shape
(
short_cut
)
...
@@ -197,7 +196,8 @@ class UNet(object):
...
@@ -197,7 +196,8 @@ class UNet(object):
name
=
'weights'
,
name
=
'weights'
,
regularizer
=
fluid
.
regularizer
.
L2DecayRegularizer
(
regularizer
=
fluid
.
regularizer
.
L2DecayRegularizer
(
regularization_coeff
=
0.0
),
regularization_coeff
=
0.0
),
initializer
=
fluid
.
initializer
.
TruncatedNormal
(
loc
=
0.0
,
scale
=
0.01
))
initializer
=
fluid
.
initializer
.
TruncatedNormal
(
loc
=
0.0
,
scale
=
0.01
))
with
scope
(
"logit"
):
with
scope
(
"logit"
):
data
=
conv
(
data
=
conv
(
data
,
data
,
...
...
paddlex/seg.py
浏览文件 @
35a1019e
...
@@ -18,5 +18,6 @@ from . import cv
...
@@ -18,5 +18,6 @@ from . import cv
UNet
=
cv
.
models
.
UNet
UNet
=
cv
.
models
.
UNet
DeepLabv3p
=
cv
.
models
.
DeepLabv3p
DeepLabv3p
=
cv
.
models
.
DeepLabv3p
HRNet
=
cv
.
models
.
HRNet
HRNet
=
cv
.
models
.
HRNet
FastSCNN
=
cv
.
models
.
FastSCNN
transforms
=
cv
.
transforms
.
seg_transforms
transforms
=
cv
.
transforms
.
seg_transforms
visualize
=
cv
.
models
.
utils
.
visualize
.
visualize_segmentation
visualize
=
cv
.
models
.
utils
.
visualize
.
visualize_segmentation
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录