Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleSeg
提交
77218811
P
PaddleSeg
项目概览
PaddlePaddle
/
PaddleSeg
通知
289
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看板
提交
77218811
编写于
9月 04, 2019
作者:
W
wuzewu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update README.md
上级
aa03cbaf
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
519 addition
and
123 deletion
+519
-123
README.md
README.md
+50
-27
docs/check.md
docs/check.md
+57
-0
docs/data_prepare.md
docs/data_prepare.md
+0
-58
docs/model_export.md
docs/model_export.md
+21
-0
docs/usage.md
docs/usage.md
+14
-37
pretrained_model/download_model.py
pretrained_model/download_model.py
+31
-1
turtorial/finetune_deeplabv3plus.md
turtorial/finetune_deeplabv3plus.md
+124
-0
turtorial/finetune_icnet.md
turtorial/finetune_icnet.md
+111
-0
turtorial/finetune_unet.md
turtorial/finetune_unet.md
+111
-0
未找到文件。
README.md
浏览文件 @
77218811
...
@@ -6,14 +6,14 @@
...
@@ -6,14 +6,14 @@
## 简介
## 简介
PaddleSeg是基于
[
PaddlePaddle
](
https://www.paddlepaddle.org.cn
)
开发的语义分割库,覆盖了DeepLabv3+, U-Net, ICNet三类主流的分割模型。通过统一的配置,帮助用户更便捷地完成从训练到部署的全流程图像分割应用。
PaddleSeg是基于
[
PaddlePaddle
](
https://www.paddlepaddle.org.cn
)
开发的语义分割库,覆盖了DeepLabv3+, U-Net, ICNet三类主流的分割模型。通过统一的配置,帮助用户更便捷地完成从训练到部署的全流程图像分割应用。
具备高性能、丰富的数据增强、工业级部署、全流程应用的特点。
PaddleSeg具备高性能、丰富的数据增强、工业级部署、全流程应用的特点:
-
**丰富的数据增强**
-
**丰富的数据增强**
-
基于百度视觉技术部的实际业务经验,内置10+种数据增强策略,可结合实际业务场景进行定制组合,提升模型泛化能力和鲁棒性。
-
基于百度视觉技术部的实际业务经验,内置10+种数据增强策略,可结合实际业务场景进行定制组合,提升模型泛化能力和鲁棒性。
-
**主流模型覆盖**
-
**主流模型覆盖**
-
支持U-Net, DeepLabv3+, ICNet三类主流分割网络,结合预训练模型和可调节的骨干网络,满足不同性能和精度的要求。
-
支持U-Net, DeepLabv3+, ICNet三类主流分割网络,结合预训练模型和可调节的骨干网络,满足不同性能和精度的要求。
...
@@ -21,43 +21,61 @@ PaddleSeg是基于[PaddlePaddle](https://www.paddlepaddle.org.cn)开发的语义
...
@@ -21,43 +21,61 @@ PaddleSeg是基于[PaddlePaddle](https://www.paddlepaddle.org.cn)开发的语义
-
**高性能**
-
**高性能**
-
PaddleSeg支持多进程IO、多卡并行、多卡Batch Norm同步等训练加速策略,结合飞桨核心框架的显存优化算法,可以大幅度减少分割模型的显存开销,更快完成分割模型训练。
-
PaddleSeg支持多进程IO、多卡并行、多卡Batch Norm同步等训练加速策略,结合飞桨核心框架的显存优化算法,可以大幅度减少分割模型的显存开销,更快完成分割模型训练。
-
**工业级部署**
-
**工业级部署**
-
基于
[
Paddle Serving
](
https://github.com/PaddlePaddle/Serving
)
和PaddlePaddle高性能预测引擎,结合百度开放的AI能力,轻松搭建人像分割和车道线分割服务。
-
基于
[
Paddle Serving
](
https://github.com/PaddlePaddle/Serving
)
和PaddlePaddle高性能预测引擎,结合百度开放的AI能力,轻松搭建人像分割和车道线分割服务。
</br>
</br>
更多模型信息与技术细节请查看
[
模型介绍
](
./docs/models.md
)
和
[
预训练模型
](
./docs/model_zoo.md
)
## 在线体验
## AI Studio教程
PaddleSeg提供了多种预训练模型,并且以NoteBook的方式提供了在线体验的教程,欢迎体验:
### 快速开始
|教程|链接|
|-|-|
|U-Net宠物分割|
[
点击体验
](
https://aistudio.baidu.com/aistudio/projectDetail/102889
)
|
|PaddleSeg人像分割|
[
点击体验
](
https://aistudio.baidu.com/aistudio/projectDetail/100798
)
|
|DeepLabv3+图像分割|
[
点击体验
](
https://aistudio.baidu.com/aistudio/projectDetail/101696
)
|
通过
[
PaddleSeg人像分割
](
https://aistudio.baidu.com/aistudio/projectDetail/100798
)
教程可快速体验PaddleSeg人像分割模型的效果。
</br>
</br>
##
# 入门
教程
##
使用
教程
入门教程以经典的U-Net模型为例, 结合Oxford-IIIT宠物数据集,快速熟悉PaddleSeg使用流程, 详情请点击
[
U-Net宠物分割
](
https://aistudio.baidu.com/aistudio/projectDetail/102889
)
。
我们提供了一系列的使用教程,来说明如何使用PaddleSeg完成一个语义分割模型的训练、评估、部署
。
### 高级教程
这一系列的文档被分为
`快速入门`
、
`基础功能`
、
`预测部署`
、
`高级功能`
四个部分,四个教程由浅至深地介绍PaddleSeg的设计思路和使用方法。
高级教程以DeepLabv3+模型为例,结合Cityscapes数据集,快速了解ASPP, Backbone网络切换,多卡Batch Norm同步等策略,详情请点击
[
DeepLabv3+图像分割
](
https://aistudio.baidu.com/aistudio/projectDetail/101696
)
。
### 快速入门
### 垂类模型
*
[
安装说明
](
./docs/installation.md
)
*
[
训练/评估/可视化
](
./docs/usage.md
)
更多特色垂类分割模型如LIP人体部件分割、人像分割、车道线分割模型可以参考
[
contrib
](
./contrib
)
### 基础功能
## 使用文档
*
[
模型列表与简介
](
./docs/models.md
)
*
[
预训练模型列表
](
./docs/model_zoo.md
)
*
[
自定义数据的准备与标注
](
./docs/data_prepare.md
)
*
[
数据和配置校验
](
./docs/check.md
)
*
[
使用DeepLabv3+预训练模型
](
./turtorial/finetune_deeplabv3plus.md
)
*
[
使用UNet预训练模型
](
./turtorial/finetune_unet.md
)
*
[
使用ICNet预训练模型
](
./turtorial/finetune_icnet.md
)
*
[
安装说明
](
./docs/installation.md
)
### 预测部署
*
[
数据准备
](
./docs/data_prepare.md
)
*
[
数据增强
](
./docs/data_aug.md
)
*
[
预训练模型
](
./docs/model_zoo.md
)
*
[
训练/评估/预测(可视化)
](
./docs/usage.md
)
*
[
预测库集成
](
./inference/README.md
)
*
[
服务端部署
](
./serving/README.md
)
*
[
垂类分割模型
](
./contrib/README.md
)
*
[
模型导出
](
./docs/model_export.md
)
*
[
预测库使用
](
./inference
)
*
[
模型部署与Serving
](
./serving
)
### 高级功能
*
[
PaddleSeg的数据增强
](
./docs/data_aug.md
)
*
[
特色垂类模型使用
](
./contrib
)
</br>
</br>
## FAQ
## FAQ
...
@@ -69,15 +87,20 @@ A: 数据增强的配置可以参考文档[数据增强](./docs/data_aug.md)
...
@@ -69,15 +87,20 @@ A: 数据增强的配置可以参考文档[数据增强](./docs/data_aug.md)
A: 降低Batch size,使用Group Norm策略等。
A: 降低Batch size,使用Group Norm策略等。
</br>
</br>
## 更新日志
## 更新日志
###
2019.08.26
*
2019.08.26
#### v0.1.0
**`v0.1.0`**
*
PaddleSeg分割库初始版本发布,包含DeepLabv3+, U-Net, ICNet三类分割模型, 其中DeepLabv3+支持Xception, MobileNet两种可调节的骨干网络。
*
CVPR 19' LIP人体部件分割比赛冠军预测模型发布
[
ACE2P
](
./contrib/ACE2P
)
*
预置基于DeepLabv3+网络的
[
人像分割
](
./contrib/HumanSeg/
)
和
[
车道线分割
](
./contrib/RoadLine
)
预测模型发布
*
PaddleSeg分割库初始版本发布,包含DeepLabv3+, U-Net, ICNet三类分割模型, 其中DeepLabv3+支持Xception, MobileNet两种可调节的骨干网络。
</br>
*
CVPR 19' LIP人体部件分割比赛冠军预测模型发布
[
ACE2P
](
./contrib/ACE2P
)
</br>
*
预置基于DeepLabv3+网络的人像分割和车道线分割预测模型发布
## 如何贡献代码
## 如何贡献代码
...
...
docs/check.md
0 → 100644
浏览文件 @
77218811
# 配置/数据校验
对用户自定义的数据集和yaml配置进行校验,帮助用户排查基本的数据和配置问题。
数据校验脚本如下,支持通过
`YAML_FILE_PATH`
来指定配置文件。
```
# YAML_FILE_PATH为yaml配置文件路径
python pdseg/check.py --cfg ${YAML_FILE_PATH}
```
运行后,命令行将显示校验结果的概览信息,详细信息可到detail.log文件中查看。
### 1 列表分割符校验
判断在
`TRAIN_FILE_LIST`
,
`VAL_FILE_LIST`
和
`TEST_FILE_LIST`
列表文件中的分隔符
`DATASET.SEPARATOR`
设置是否正确。
### 2 数据集读取校验
通过是否能成功读取
`DATASET.TRAIN_FILE_LIST`
,
`DATASET.VAL_FILE_LIST`
,
`DATASET.TEST_FILE_LIST`
中所有图片,判断这3项设置是否正确。
若不正确返回错误信息。错误可能有多种情况,如数据集路径设置错误、图片损坏等。
### 3 标注格式校验
检查标注图像是否为PNG格式。
**NOTE:**
标注图像请使用PNG无损压缩格式的图片,若使用其他格式则可能影响精度。
### 4 标注通道数校验
检查标注图的通道数。正确的标注图应该为单通道图像。
### 5 标注类别校验
检查实际标注类别是否和配置参数
`DATASET.NUM_CLASSES`
,
`DATASET.IGNORE_INDEX`
匹配。
**NOTE:**
标注图像类别数值必须在[0~(
`DATASET.NUM_CLASSES`
-1)]范围内或者为
`DATASET.IGNORE_INDEX`
。
标注类别最好从0开始,否则可能影响精度。
### 6 标注像素统计
统计每种类别像素数量,显示以供参考。
### 7 图像格式校验
检查图片类型
`DATASET.IMAGE_TYPE`
是否设置正确。
**NOTE:**
当数据集包含三通道图片时
`DATASET.IMAGE_TYPE`
设置为rgb;
当数据集全部为四通道图片时
`DATASET.IMAGE_TYPE`
设置为rgba;
### 8 图像与标注图尺寸一致性校验
验证图像尺寸和对应标注图尺寸是否一致。
### 9 模型验证参数`EVAL_CROP_SIZE`校验
验证
`EVAL_CROP_SIZE`
是否设置正确,共有3种情形:
-
当
`AUG.AUG_METHOD`
为unpadding时,
`EVAL_CROP_SIZE`
的宽高应不小于
`AUG.FIX_RESIZE_SIZE`
的宽高。
-
当
`AUG.AUG_METHOD`
为stepscaling时,
`EVAL_CROP_SIZE`
的宽高应不小于原图中最大的宽高。
-
当
`AUG.AUG_METHOD`
为rangscaling时,
`EVAL_CROP_SIZE`
的宽高应不小于缩放后图像中最大的宽高。
我们将计算并给出
`EVAL_CROP_SIZE`
的建议值。
### 10 数据增强参数`AUG.INF_RESIZE_VALUE`校验
验证
`AUG.INF_RESIZE_VALUE`
是否在[
`AUG.MIN_RESIZE_VALUE`
~
`AUG.MAX_RESIZE_VALUE`
]范围内。若在范围内,则通过校验。
docs/data_prepare.md
浏览文件 @
77218811
...
@@ -58,61 +58,3 @@ PaddleSeg采用通用的文件列表方式组织训练集、验证集和测试
...
@@ -58,61 +58,3 @@ PaddleSeg采用通用的文件列表方式组织训练集、验证集和测试


完整的配置信息可以参考
[
`./dataset/cityscapes_demo`
](
../dataset/cityscapes_demo/
)
目录下的yaml和文件列表。
完整的配置信息可以参考
[
`./dataset/cityscapes_demo`
](
../dataset/cityscapes_demo/
)
目录下的yaml和文件列表。
## 数据校验
对用户自定义的数据集和yaml配置进行校验,帮助用户排查基本的数据和配置问题。
数据校验脚本如下,支持通过
`YAML_FILE_PATH`
来指定配置文件。
```
# YAML_FILE_PATH为yaml配置文件路径
python pdseg/check.py --cfg ${YAML_FILE_PATH}
```
运行后,命令行将显示校验结果的概览信息,详细信息可到detail.log文件中查看。
### 1 列表分割符校验
判断在
`TRAIN_FILE_LIST`
,
`VAL_FILE_LIST`
和
`TEST_FILE_LIST`
列表文件中的分隔符
`DATASET.SEPARATOR`
设置是否正确。
### 2 数据集读取校验
通过是否能成功读取
`DATASET.TRAIN_FILE_LIST`
,
`DATASET.VAL_FILE_LIST`
,
`DATASET.TEST_FILE_LIST`
中所有图片,判断这3项设置是否正确。
若不正确返回错误信息。错误可能有多种情况,如数据集路径设置错误、图片损坏等。
### 3 标注格式校验
检查标注图像是否为PNG格式。
**NOTE:**
标注图像请使用PNG无损压缩格式的图片,若使用其他格式则可能影响精度。
### 4 标注通道数校验
检查标注图的通道数。正确的标注图应该为单通道图像。
### 5 标注类别校验
检查实际标注类别是否和配置参数
`DATASET.NUM_CLASSES`
,
`DATASET.IGNORE_INDEX`
匹配。
**NOTE:**
标注图像类别数值必须在[0~(
`DATASET.NUM_CLASSES`
-1)]范围内或者为
`DATASET.IGNORE_INDEX`
。
标注类别最好从0开始,否则可能影响精度。
### 6 标注像素统计
统计每种类别像素数量,显示以供参考。
### 7 图像格式校验
检查图片类型
`DATASET.IMAGE_TYPE`
是否设置正确。
**NOTE:**
当数据集包含三通道图片时
`DATASET.IMAGE_TYPE`
设置为rgb;
当数据集全部为四通道图片时
`DATASET.IMAGE_TYPE`
设置为rgba;
### 8 图像与标注图尺寸一致性校验
验证图像尺寸和对应标注图尺寸是否一致。
### 9 模型验证参数`EVAL_CROP_SIZE`校验
验证
`EVAL_CROP_SIZE`
是否设置正确,共有3种情形:
-
当
`AUG.AUG_METHOD`
为unpadding时,
`EVAL_CROP_SIZE`
的宽高应不小于
`AUG.FIX_RESIZE_SIZE`
的宽高。
-
当
`AUG.AUG_METHOD`
为stepscaling时,
`EVAL_CROP_SIZE`
的宽高应不小于原图中最大的宽高。
-
当
`AUG.AUG_METHOD`
为rangscaling时,
`EVAL_CROP_SIZE`
的宽高应不小于缩放后图像中最大的宽高。
我们将计算并给出
`EVAL_CROP_SIZE`
的建议值。
### 10 数据增强参数`AUG.INF_RESIZE_VALUE`校验
验证
`AUG.INF_RESIZE_VALUE`
是否在[
`AUG.MIN_RESIZE_VALUE`
~
`AUG.MAX_RESIZE_VALUE`
]范围内。若在范围内,则通过校验。
docs/model_export.md
0 → 100644
浏览文件 @
77218811
# 模型导出
通过训练得到一个满足要求的模型后,如果想要将该模型接入到C++预测库或者Serving服务,我们需要通过
`pdseg/export_model.py`
来导出该模型。
该脚本的使用方法和
`train.py/eval.py/vis.py`
完全一样
# FLAGS
|FLAG|用途|默认值|备注|
|-|-|-|-|
|--cfg|配置文件路径|None||
# 使用示例
我们使用
[
训练/评估/可视化
](
./usage.md
)
一节中训练得到的模型进行试用,脚本如下
```
shell
python pdseg/export_model.py
--cfg
configs/unet_pet.yaml TEST.TEST_MODEL
test
/saved_models/unet_pet/final
```
模型会导出到freeze_model目录
docs/usage.md
浏览文件 @
77218811
# 训练/评估/
预测(可视化)
# 训练/评估/
可视化
PaddleSeg提供了
`训练`
/
`评估`
/
`
预测(可视化)`
/
`模型导出`
等四个功能的使用脚本。四个脚本都支持通过不同的Flags来开启特定功能,也支持通过Options来修改默认的
[
训练配置
](
./config.md
)
。四
者的使用方式非常接近,如下:
PaddleSeg提供了
`训练`
/
`评估`
/
`
可视化`
等三个功能的使用脚本。三个脚本都支持通过不同的Flags来开启特定功能,也支持通过Options来修改默认的
[
训练配置
](
./config.md
)
。三
者的使用方式非常接近,如下:
```
shell
```
shell
# 训练
# 训练
python pdseg/train.py
${
FLAGS
}
${
OPTIONS
}
python pdseg/train.py
${
FLAGS
}
${
OPTIONS
}
# 评估
# 评估
python pdseg/eval.py
${
FLAGS
}
${
OPTIONS
}
python pdseg/eval.py
${
FLAGS
}
${
OPTIONS
}
#
预测/
可视化
# 可视化
python pdseg/vis.py
${
FLAGS
}
${
OPTIONS
}
python pdseg/vis.py
${
FLAGS
}
${
OPTIONS
}
# 模型导出
python pdseg/export_model.py
${
FLAGS
}
${
OPTIONS
}
```
```
`Note`
:
`Note`
:
...
@@ -27,7 +25,7 @@ python pdseg/export_model.py ${FLAGS} ${OPTIONS}
...
@@ -27,7 +25,7 @@ python pdseg/export_model.py ${FLAGS} ${OPTIONS}
|FLAG|支持脚本|用途|默认值|备注|
|FLAG|支持脚本|用途|默认值|备注|
|-|-|-|-|-|
|-|-|-|-|-|
|--cfg|ALL|配置文件路径|None||
|--cfg|ALL|配置文件路径|None||
|--use_gpu|
train/eval/vis
|是否使用GPU进行训练|False||
|--use_gpu|
ALL
|是否使用GPU进行训练|False||
|--use_mpio|train/eval|是否使用多线程进行IO处理|False|打开该开关会占用一定量的CPU内存,但是可以提高训练速度。
</br>
NOTE:windows平台下不支持该功能, 建议使用自定义数据初次训练时不打开,打开会导致数据读取异常不可见。
</br>
|
|--use_mpio|train/eval|是否使用多线程进行IO处理|False|打开该开关会占用一定量的CPU内存,但是可以提高训练速度。
</br>
NOTE:windows平台下不支持该功能, 建议使用自定义数据初次训练时不打开,打开会导致数据读取异常不可见。
</br>
|
|--use_tb|train|是否使用TensorBoard记录训练数据|False||
|--use_tb|train|是否使用TensorBoard记录训练数据|False||
|--log_steps|train|训练日志的打印周期(单位为step)|10||
|--log_steps|train|训练日志的打印周期(单位为step)|10||
...
@@ -54,22 +52,19 @@ python pdseg/export_model.py ${FLAGS} ${OPTIONS}
...
@@ -54,22 +52,19 @@ python pdseg/export_model.py ${FLAGS} ${OPTIONS}
### 下载预训练模型
### 下载预训练模型
```
shell
```
shell
# 下载预训练模型
# 下载预训练模型并进行解压
wget https://bj.bcebos.com/v1/paddleseg/models/unet_coco_init.tgz
python pretrained_model/download_model unet_bn_coco
# 解压缩到当前路径下
tar
xvzf unet_coco_init.tgz
```
```
### 下载Oxford-IIIT数据集
### 下载mini_pet数据集
我们使用了Oxford-IIIT中的猫和狗两个类别数据制作了一个小数据集mini_pet,用于快速体验
```
shell
```
shell
# 下载Oxford-IIIT Pet数据集
# 下载预训练模型并进行解压
wget https://paddleseg.bj.bcebos.com/dataset/mini_pet.zip
--no-check-certificate
python dataset/download_pet.py
# 解压缩到当前路径下
unzip mini_pet.zip
```
```
### 模型训练
### 模型训练
为了方便体验,我们在configs目录下放置了
Oxford-IIIT P
et所对应的配置文件
`unet_pet.yaml`
,可以通过
`--cfg`
指向该文件来设置训练配置。
为了方便体验,我们在configs目录下放置了
mini_p
et所对应的配置文件
`unet_pet.yaml`
,可以通过
`--cfg`
指向该文件来设置训练配置。
我们选择GPU 0号卡进行训练,这可以通过环境变量
`CUDA_VISIBLE_DEVICES`
来指定。
我们选择GPU 0号卡进行训练,这可以通过环境变量
`CUDA_VISIBLE_DEVICES`
来指定。
...
@@ -81,19 +76,14 @@ python pdseg/train.py --use_gpu \
...
@@ -81,19 +76,14 @@ python pdseg/train.py --use_gpu \
--tb_log_dir train_log \
--tb_log_dir train_log \
--cfg configs/unet_pet.yaml \
--cfg configs/unet_pet.yaml \
BATCH_SIZE 4 \
BATCH_SIZE 4 \
TRAIN.PRETRAINED_MODEL unet_coco_init \
TRAIN.PRETRAINED_MODEL pretrained_model/unet_bn_coco \
DATASET.DATA_DIR mini_pet \
DATASET.TEST_FILE_LIST mini_pet/file_list/test_list.txt \
DATASET.TRAIN_FILE_LIST mini_pet/file_list/train_list.txt \
DATASET.VAL_FILE_LIST mini_pet/file_list/val_list.txt \
DATASET.VIS_FILE_LIST mini_pet/file_list/val_list.txt \
TRAIN.SYNC_BATCH_NORM True \
TRAIN.SYNC_BATCH_NORM True \
SOLVER.LR 5e-5
SOLVER.LR 5e-5
```
```
`NOTE`
:
`NOTE`
:
> * 上述示例中,一共存在三套配置方案: PaddleSeg默认配置/unet_pet.yaml/OPTIONS,三者的优先级顺序为 OPTIONS > yaml > 默认配置。这个原则对于train.py/eval.py/vis.py
/export_model.py
都适用
> * 上述示例中,一共存在三套配置方案: PaddleSeg默认配置/unet_pet.yaml/OPTIONS,三者的优先级顺序为 OPTIONS > yaml > 默认配置。这个原则对于train.py/eval.py/vis.py都适用
>
>
> * 如果发现因为内存不足而Crash。请适当调低BATCH_SIZE。如果本机GPU内存充足,则可以调高BATCH_SIZE的大小以获得更快的训练速度
> * 如果发现因为内存不足而Crash。请适当调低BATCH_SIZE。如果本机GPU内存充足,则可以调高BATCH_SIZE的大小以获得更快的训练速度
...
@@ -121,30 +111,17 @@ NOTE:
...
@@ -121,30 +111,17 @@ NOTE:
```
shell
```
shell
python pdseg/eval.py
--use_gpu
\
python pdseg/eval.py
--use_gpu
\
--cfg
configs/unet_pet.yaml
\
--cfg
configs/unet_pet.yaml
\
DATASET.DATA_DIR mini_pet
\
DATASET.VAL_FILE_LIST mini_pet/file_list/val_list.txt
\
TEST.TEST_MODEL
test
/saved_models/unet_pet/final
TEST.TEST_MODEL
test
/saved_models/unet_pet/final
```
```
### 模型
预测/
可视化
### 模型可视化
通过vis.py来评估模型效果,我们选择最后保存的模型进行效果的评估:
通过vis.py来评估模型效果,我们选择最后保存的模型进行效果的评估:
```
shell
```
shell
python pdseg/vis.py
--use_gpu
\
python pdseg/vis.py
--use_gpu
\
--cfg
configs/unet_pet.yaml
\
--cfg
configs/unet_pet.yaml
\
DATASET.DATA_DIR mini_pet
\
DATASET.TEST_FILE_LIST mini_pet/file_list/test_list.txt
\
TEST.TEST_MODEL
test
/saved_models/unet_pet/final
TEST.TEST_MODEL
test
/saved_models/unet_pet/final
```
```
`NOTE`
`NOTE`
1.
可视化的图片会默认保存在visual/visual_results目录下,可以通过
`--vis_dir`
来指定输出目录
1.
可视化的图片会默认保存在visual/visual_results目录下,可以通过
`--vis_dir`
来指定输出目录
2.
训练过程中会使用DATASET.VIS_FILE_LIST中的图片进行可视化显示,而vis.py则会使用DATASET.TEST_FILE_LIST
2.
训练过程中会使用DATASET.VIS_FILE_LIST中的图片进行可视化显示,而vis.py则会使用DATASET.TEST_FILE_LIST
### 模型导出
当确定模型效果满足预期后,我们需要通过export_model.py来导出可用于C++预测库部署的模型:
```
shell
python pdseg/export_model.py
--cfg
configs/unet_pet.yaml
\
TEST.TEST_MODEL
test
/saved_models/unet_pet/final
```
模型会导出到freeze_model目录,接下来就是进行模型的部署,相关步骤请查看
[
模型部署
](
../inference/README.md
)
pretrained_model/download_model.py
浏览文件 @
77218811
...
@@ -22,9 +22,39 @@ sys.path.append(TEST_PATH)
...
@@ -22,9 +22,39 @@ sys.path.append(TEST_PATH)
from
test_utils
import
download_file_and_uncompress
from
test_utils
import
download_file_and_uncompress
model_urls
=
{
model_urls
=
{
# ImageNet Pretrained
"mobilnetv2-2-0_bn_imagenet"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV2_x2_0_pretrained.tar"
,
"mobilnetv2-1-5_bn_imagenet"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV2_x1_5_pretrained.tar"
,
"mobilnetv2-1-0_bn_imagenet"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV2_pretrained.tar"
,
"mobilnetv2-0-5_bn_imagenet"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV2_x0_5_pretrained.tar"
,
"mobilnetv2-0-25_bn_imagenet"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV2_x0_25_pretrained.tar"
,
"xception41_imagenet"
:
"https://paddleseg.bj.bcebos.com/models/Xception41_pretrained.tgz"
,
"xception65_imagenet"
:
"https://paddleseg.bj.bcebos.com/models/Xception65_pretrained.tgz"
,
# COCO pretrained
"deeplabv3p_mobilnetv2-1-0_bn_coco"
:
"https://bj.bcebos.com/v1/paddleseg/deeplabv3plus_coco_bn_init.tgz"
,
"deeplabv3p_xception65_bn_coco"
:
"https://paddleseg.bj.bcebos.com/models/xception65_coco.tgz"
,
"unet_bn_coco"
:
"https://paddleseg.bj.bcebos.com/models/unet_coco_v3.tgz"
,
# Cityscapes pretrained
"deeplabv3plus_mobilenetv2-1-0_bn_cityscapes"
:
"deeplabv3plus_mobilenetv2-1-0_bn_cityscapes"
:
"https://paddleseg.bj.bcebos.com/models/mobilenet_cityscapes.tgz"
,
"https://paddleseg.bj.bcebos.com/models/mobilenet_cityscapes.tgz"
,
"unet_bn_coco"
:
"https://paddleseg.bj.bcebos.com/models/unet_coco_v3.tgz"
"deeplabv3p_xception65_gn_cityscapes"
:
"https://paddleseg.bj.bcebos.com/models/deeplabv3p_xception65_cityscapes.tgz"
,
"deeplabv3p_xception65_bn_cityscapes"
:
"https://paddleseg.bj.bcebos.com/models/xception65_bn_cityscapes.tgz"
,
"unet_bn_coco"
:
"https://paddleseg.bj.bcebos.com/models/unet_coco_v3.tgz"
,
"icnet_bn_cityscapes"
:
"https://paddleseg.bj.bcebos.com/models/icnet6831.tar.gz"
}
}
if
__name__
==
"__main__"
:
if
__name__
==
"__main__"
:
...
...
turtorial/finetune_deeplabv3plus.md
0 → 100644
浏览文件 @
77218811
# 关于本教程
*
本教程旨在介绍如何通过使用PaddleSeg提供的
***`DeeplabV3+/Xception65/BatchNorm`**
*
预训练模型在自定义数据集上进行训练。除了该配置之外,DeeplabV3+还支持以下不同
[
模型组合
](
#模型组合
)
的预训练模型,如果需要使用对应模型作为预训练模型,将下述内容中的Xception Backbone中的内容进行替换即可
*
在阅读本教程前,请确保您已经了解过PaddleSeg的
[
快速入门
](
../README.md#快速入门
)
和
[
基础功能
](
../README.md#基础功能
)
等章节,以便对PaddleSeg有一定的了解
*
本教程的所有命令都基于PaddleSeg主目录进行执行
## 一. 准备待训练数据
我们提前准备好了一份数据集,通过以下代码进行下载
```
shell
python dataset/download_pet.py
```
## 二. 下载预训练模型
关于PaddleSeg支持的所有预训练模型的列表,我们可以从
[
模型组合
](
#模型组合
)
中查看我们所需模型的名字和配置
接着下载对应的预训练模型
```
shell
python pretrained_model/download_model.py deeplabv3p_xception65_bn_cityscapes
```
## 三. 准备配置
在开始训练和评估之前,我们需要确定相关配置,从本教程的角度,配置分为三部分:
*
数据集
*
训练集主目录
*
训练集文件列表
*
测试集文件列表
*
评估集文件列表
*
预训练模型
*
预训练模型名称
*
预训练模型的backbone网络
*
预训练模型的Normalization类型
*
预训练模型路径
*
其他
*
学习率
*
Batch大小
*
...
在三者中,预训练模型的配置尤为重要,如果模型或者BACKBONE配置错误,会导致预训练的参数没有加载,进而影响收敛速度。预训练模型相关的配置如第二步所展示。
数据集的配置和数据路径有关,在本教程中,数据存放在
`dataset/mini_pet`
中
其他配置则根据数据集和机器环境的情况进行调节,最终我们保存一个如下内容的yaml配置文件,存放路径为
`configs/test_pet.yaml`
```
yaml
# 数据集配置
DATASET
:
DATA_DIR
:
"
./dataset/mini_pet/"
NUM_CLASSES
:
3
TEST_FILE_LIST
:
"
./dataset/mini_pet/file_list/test_list.txt"
TRAIN_FILE_LIST
:
"
./dataset/mini_pet/file_list/train_list.txt"
VAL_FILE_LIST
:
"
./dataset/mini_pet/file_list/val_list.txt"
VIS_FILE_LIST
:
"
./dataset/mini_pet/file_list/test_list.txt"
# 预训练模型配置
MODEL
:
MODEL_NAME
:
"
deeplabv3p"
DEFAULT_NORM_TYPE
:
"
bn"
DEEPLAB
:
BACKBONE
:
"
xception_65"
TRAIN
:
PRETRAINED_MODEL
:
"
./pretrained_model/deeplabv3p_xception65_bn_pet/"
# 其他配置
TRAIN_CROP_SIZE
:
(512, 512)
EVAL_CROP_SIZE
:
(512, 512)
AUG
:
AUG_METHOD
:
"
unpadding"
FIX_RESIZE_SIZE
:
(512, 512)
BATCH_SIZE
:
4
TRAIN
:
MODEL_SAVE_DIR
:
"
./finetune/deeplabv3p_xception65_bn_pet/"
RESUME
:
False
SNAPSHOT_EPOCH
:
10
TEST
:
TEST_MODEL
:
"
./finetune/deeplabv3p_xception65_bn_pet/final"
SOLVER
:
NUM_EPOCHS
:
500
LR
:
0.005
LR_POLICY
:
"
poly"
OPTIMIZER
:
"
adam"
```
## 四. 开始训练
使用下述命令启动训练
```
shell
python pdseg/train.py
--use_gpu
--cfg
./configs/test_pet.yaml
```
## 五. 进行评估
使用下述命令启动评估
```
shell
python pdseg/eval.py
--use_gpu
--cfg
./configs/test_pet.yaml
```
## 模型组合
|预训练模型名称|BackBone|Norm|数据集|配置|
|-|-|-|-|-|
|mobilnetv2-2-0_bn_imagenet|-|bn|ImageNet|MODEL.MODEL_NAME: deeplabv3p
<br>
MODEL.DEEPLAB.BACKBONE: mobilenet
<br>
MODEL.DEEPLAB.DEPTH_MULTIPLIER: 2.0
<br>
MODEL.DEFAULT_NORM_TYPE: bn|
|mobilnetv2-1-5_bn_imagenet|-|bn|ImageNet|MODEL.MODEL_NAME: deeplabv3p
<br>
MODEL.DEEPLAB.BACKBONE: mobilenet
<br>
MODEL.DEEPLAB.DEPTH_MULTIPLIER: 1.5
<br>
MODEL.DEFAULT_NORM_TYPE: bn|
|mobilnetv2-1-0_bn_imagenet|-|bn|ImageNet|MODEL.MODEL_NAME: deeplabv3p
<br>
MODEL.DEEPLAB.BACKBONE: mobilenet
<br>
MODEL.DEEPLAB.DEPTH_MULTIPLIER: 1.0
<br>
MODEL.DEFAULT_NORM_TYPE: bn|
|mobilnetv2-0-5_bn_imagenet|-|bn|ImageNet|MODEL.MODEL_NAME: deeplabv3p
<br>
MODEL.DEEPLAB.BACKBONE: mobilenet
<br>
MODEL.DEEPLAB.DEPTH_MULTIPLIER: 0.5
<br>
MODEL.DEFAULT_NORM_TYPE: bn|
|mobilnetv2-0-25_bn_imagenet|-|bn|ImageNet|MODEL.MODEL_NAME: deeplabv3p
<br>
MODEL.DEEPLAB.BACKBONE: mobilenet
<br>
MODEL.DEEPLAB.DEPTH_MULTIPLIER: 0.25
<br>
MODEL.DEFAULT_NORM_TYPE: bn|
|xception41_imagenet|-|bn|ImageNet|MODEL.MODEL_NAME: deeplabv3p
<br>
MODEL.DEEPLAB.BACKBONE: xception_41
<br>
MODEL.DEFAULT_NORM_TYPE: bn|
|xception65_imagenet|-|bn|ImageNet|MODEL.MODEL_NAME: deeplabv3p
<br>
MODEL.DEEPLAB.BACKBONE: xception_65
<br>
MODEL.DEFAULT_NORM_TYPE: bn|
|deeplabv3p_mobilnetv2-1-0_bn_coco|MobileNet V2|bn|COCO|MODEL.MODEL_NAME: deeplabv3p
<br>
MODEL.DEEPLAB.BACKBONE: mobilenet
<br>
MODEL.DEEPLAB.DEPTH_MULTIPLIER: 1.0
<br>
MODEL.DEFAULT_NORM_TYPE: bn|
|deeplabv3p_xception65_bn_coco|Xception|bn|COCO|MODEL.MODEL_NAME: deeplabv3p
<br>
MODEL.DEEPLAB.BACKBONE: xception_65
<br>
MODEL.DEFAULT_NORM_TYPE: bn |
|deeplabv3p_mobilnetv2-1-0_bn_cityscapes|MobileNet V2|bn|Cityscapes|MODEL.MODEL_NAME: deeplabv3p
<br>
MODEL.DEEPLAB.BACKBONE: xception_65
<br>
MODEL.DEFAULT_NORM_TYPE: bn|
|deeplabv3p_xception65_gn_cityscapes|Xception|gn|Cityscapes|MODEL.MODEL_NAME: deeplabv3p
<br>
MODEL.DEEPLAB.BACKBONE: xception_65
<br>
MODEL.DEFAULT_NORM_TYPE: gn|
|
**deeplabv3p_xception65_bn_cityscapes**
|Xception|bn|Cityscapes||
turtorial/finetune_icnet.md
0 → 100644
浏览文件 @
77218811
# 关于本教程
*
本教程旨在介绍如何通过使用PaddleSeg提供的
***`ICNet`**
*
预训练模型在自定义数据集上进行训练
*
在阅读本教程前,请确保您已经了解过PaddleSeg的
[
快速入门
](
../README.md#快速入门
)
和
[
基础功能
](
../README.md#基础功能
)
等章节,以便对PaddleSeg有一定的了解
*
本教程的所有命令都基于PaddleSeg主目录进行执行
## 一. 准备待训练数据
我们提前准备好了一份数据集,通过以下代码进行下载
```
shell
python dataset/download_pet.py
```
## 二. 下载预训练模型
关于PaddleSeg支持的所有预训练模型的列表,我们可以从
[
模型组合
](
#模型组合
)
中查看我们所需模型的名字和配置。
接着下载对应的预训练模型
```
shell
python pretrained_model/download_model.py icnet_bn_cityscapes
```
## 三. 准备配置
在开始训练和评估之前,我们需要确定相关配置,从本教程的角度,配置分为三部分:
*
数据集
*
训练集主目录
*
训练集文件列表
*
测试集文件列表
*
评估集文件列表
*
预训练模型
*
预训练模型名称
*
预训练模型的backbone网络
*
预训练模型的Normalization类型
*
预训练模型路径
*
其他
*
学习率
*
Batch大小
*
...
在三者中,预训练模型的配置尤为重要,如果模型或者BACKBONE配置错误,会导致预训练的参数没有加载,进而影响收敛速度。预训练模型相关的配置如第二步所展示。
数据集的配置和数据路径有关,在本教程中,数据存放在
`dataset/mini_pet`
中
其他配置则根据数据集和机器环境的情况进行调节,最终我们保存一个如下内容的yaml配置文件,存放路径为
`configs/test_pet.yaml`
```
yaml
# 数据集配置
DATASET
:
DATA_DIR
:
"
./dataset/mini_pet/"
NUM_CLASSES
:
3
TEST_FILE_LIST
:
"
./dataset/mini_pet/file_list/test_list.txt"
TRAIN_FILE_LIST
:
"
./dataset/mini_pet/file_list/train_list.txt"
VAL_FILE_LIST
:
"
./dataset/mini_pet/file_list/val_list.txt"
VIS_FILE_LIST
:
"
./dataset/mini_pet/file_list/test_list.txt"
# 预训练模型配置
MODEL
:
MODEL_NAME
:
"
icnet"
DEFAULT_NORM_TYPE
:
"
bn"
TRAIN
:
PRETRAINED_MODEL
:
"
./pretrained_model/icnet_bn_cityscapes/"
# 其他配置
TRAIN_CROP_SIZE
:
(512, 512)
EVAL_CROP_SIZE
:
(512, 512)
AUG
:
AUG_METHOD
:
"
unpadding"
FIX_RESIZE_SIZE
:
(512, 512)
BATCH_SIZE
:
4
TRAIN
:
MODEL_SAVE_DIR
:
"
./finetune/icnet_pet/"
RESUME
:
False
SNAPSHOT_EPOCH
:
10
TEST
:
TEST_MODEL
:
"
./finetune/icnet_pet/final"
SOLVER
:
NUM_EPOCHS
:
500
LR
:
0.005
LR_POLICY
:
"
poly"
OPTIMIZER
:
"
adam"
```
## 四. 开始训练
使用下述命令启动训练
```
shell
python pdseg/train.py
--use_gpu
--cfg
./configs/test_pet.yaml
```
## 五. 进行评估
使用下述命令启动评估
```
shell
python pdseg/eval.py
--use_gpu
--cfg
./configs/test_pet.yaml
```
## 模型组合
|预训练模型名称|BackBone|Norm|数据集|配置|
|-|-|-|-|-|
|icnet_bn_cityscapes|-|bn|Cityscapes|MODEL.MODEL_NAME: icnet
<br>
MODEL.DEFAULT_NORM_TYPE: bn|
turtorial/finetune_unet.md
0 → 100644
浏览文件 @
77218811
# 关于本教程
*
本教程旨在介绍如何通过使用PaddleSeg提供的
***`UNet`**
*
预训练模型在自定义数据集上进行训练
*
在阅读本教程前,请确保您已经了解过PaddleSeg的
[
快速入门
](
../README.md#快速入门
)
和
[
基础功能
](
../README.md#基础功能
)
等章节,以便对PaddleSeg有一定的了解
*
本教程的所有命令都基于PaddleSeg主目录进行执行
## 一. 准备待训练数据
我们提前准备好了一份数据集,通过以下代码进行下载
```
shell
python dataset/download_pet.py
```
## 二. 下载预训练模型
关于PaddleSeg支持的所有预训练模型的列表,我们可以从
[
模型组合
](
#模型组合
)
中查看我们所需模型的名字和配置。
接着下载对应的预训练模型
```
shell
python pretrained_model/download_model.py unet_bn_coco
```
## 三. 准备配置
在开始训练和评估之前,我们需要确定相关配置,从本教程的角度,配置分为三部分:
*
数据集
*
训练集主目录
*
训练集文件列表
*
测试集文件列表
*
评估集文件列表
*
预训练模型
*
预训练模型名称
*
预训练模型的backbone网络
*
预训练模型的Normalization类型
*
预训练模型路径
*
其他
*
学习率
*
Batch大小
*
...
在三者中,预训练模型的配置尤为重要,如果模型或者BACKBONE配置错误,会导致预训练的参数没有加载,进而影响收敛速度。预训练模型相关的配置如第二步所展示。
数据集的配置和数据路径有关,在本教程中,数据存放在
`dataset/mini_pet`
中
其他配置则根据数据集和机器环境的情况进行调节,最终我们保存一个如下内容的yaml配置文件,存放路径为
`configs/test_pet.yaml`
```
yaml
# 数据集配置
DATASET
:
DATA_DIR
:
"
./dataset/mini_pet/"
NUM_CLASSES
:
3
TEST_FILE_LIST
:
"
./dataset/mini_pet/file_list/test_list.txt"
TRAIN_FILE_LIST
:
"
./dataset/mini_pet/file_list/train_list.txt"
VAL_FILE_LIST
:
"
./dataset/mini_pet/file_list/val_list.txt"
VIS_FILE_LIST
:
"
./dataset/mini_pet/file_list/test_list.txt"
# 预训练模型配置
MODEL
:
MODEL_NAME
:
"
unet"
DEFAULT_NORM_TYPE
:
"
bn"
TRAIN
:
PRETRAINED_MODEL
:
"
./pretrained_model/unet_bn_coco/"
# 其他配置
TRAIN_CROP_SIZE
:
(512, 512)
EVAL_CROP_SIZE
:
(512, 512)
AUG
:
AUG_METHOD
:
"
unpadding"
FIX_RESIZE_SIZE
:
(512, 512)
BATCH_SIZE
:
4
TRAIN
:
MODEL_SAVE_DIR
:
"
./finetune/unet_pet/"
RESUME
:
False
SNAPSHOT_EPOCH
:
10
TEST
:
TEST_MODEL
:
"
./finetune/unet_pet/final"
SOLVER
:
NUM_EPOCHS
:
500
LR
:
0.005
LR_POLICY
:
"
poly"
OPTIMIZER
:
"
adam"
```
## 四. 开始训练
使用下述命令启动训练
```
shell
python pdseg/train.py
--use_gpu
--cfg
./configs/test_pet.yaml
```
## 五. 进行评估
使用下述命令启动评估
```
shell
python pdseg/eval.py
--use_gpu
--cfg
./configs/test_pet.yaml
```
## 模型组合
|预训练模型名称|BackBone|Norm|数据集|配置|
|-|-|-|-|-|
|unet_bn_coco|-|bn|Cityscapes|MODEL.MODEL_NAME: unet
<br>
MODEL.DEFAULT_NORM_TYPE: bn|
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录