usage.md 4.6 KB
Newer Older
L
LutaoChu 已提交
1
# PaddleSeg快速入门
Z
Zeyu Chen 已提交
2

L
LutaoChu 已提交
3
本教程通过一个简单的示例,说明如何基于PaddleSeg启动训练(训练可视化)、评估和可视化。我们选择基于COCO数据集预训练的unet模型作为预训练模型,以一个眼底医疗分割数据集为例。
W
wuzewu 已提交
4

L
LutaoChu 已提交
5 6 7 8 9 10 11 12
- [1.准备工作](#1准备工作)
- [2.下载待训练数据](#2下载待训练数据)
- [3.下载预训练模型](#3下载预训练模型) 
- [4.模型训练](#4模型训练)
- [5.训练过程可视化](#5训练过程可视化)
- [6.模型评估](#6模型评估)
- [7.模型可视化](#7模型可视化)
- [在线体验](#在线体验)
W
wuzewu 已提交
13 14


L
LutaoChu 已提交
15
## 1.准备工作
W
wuzewu 已提交
16
在开始教程前,请先确认准备工作已经完成:
Z
Zeyu Chen 已提交
17
1. 正确安装了PaddlePaddle
W
wuzewu 已提交
18 19
2. PaddleSeg相关依赖已经安装

L
LutaoChu 已提交
20 21 22 23 24 25 26
如果有不确认的地方,请参考[首页安装说明](../README.md#安装)

## 2.下载待训练数据

![](../turtorial/imgs/optic.png)

我们提前准备好了一份眼底医疗分割数据集--视盘分割(optic disc segmentation),包含267张训练图片、76张验证图片、38张测试图片。通过以下命令进行下载:
W
wuzewu 已提交
27 28

```shell
L
LutaoChu 已提交
29 30
# 下载待训练数据集
python dataset/download_optic.py
W
wuzewu 已提交
31
```
Z
Zeyu Chen 已提交
32

L
LutaoChu 已提交
33
## 3.下载预训练模型
W
wuzewu 已提交
34
```shell
W
wuzewu 已提交
35
# 下载预训练模型并进行解压
L
LutaoChu 已提交
36
python pretrained_model/download_model.py unet_bn_coco
W
wuzewu 已提交
37 38
```

L
LutaoChu 已提交
39
## 4.模型训练
Z
Zeyu Chen 已提交
40

L
LutaoChu 已提交
41
为了方便体验,我们在configs目录下放置了配置文件`unet_optic.yaml`,可以通过`--cfg`指向该文件来设置训练配置。
W
wuzewu 已提交
42

L
LutaoChu 已提交
43
可以通过环境变量`CUDA_VISIBLE_DEVICES`来指定GPU卡号。
W
wuzewu 已提交
44 45

```
L
LutaoChu 已提交
46
# 指定GPU卡号(以0号卡为例)
Z
Zeyu Chen 已提交
47
export CUDA_VISIBLE_DEVICES=0
L
LutaoChu 已提交
48 49 50
# 训练
python pdseg/train.py --cfg configs/unet_optic.yaml \
                      --use_gpu \
W
wuzewu 已提交
51
                      --do_eval \
W
wuzewu 已提交
52 53
                      --use_tb \
                      --tb_log_dir train_log \
W
wuzewu 已提交
54
                      BATCH_SIZE 4 \
L
LutaoChu 已提交
55 56 57 58 59 60
                      SOLVER.LR 0.001
                      
```
若需要使用多块GPU,以0、1、2号卡为例,可输入
```
export CUDA_VISIBLE_DEVICES=0,1,2
W
wuzewu 已提交
61 62
```

Z
Zeyu Chen 已提交
63

Z
Zeyu Chen 已提交
64
**NOTE:**
W
wuzewu 已提交
65

L
LutaoChu 已提交
66
* 如果发现因为内存不足而Crash。请适当调低`BATCH_SIZE`。如果本机GPU内存充足,则可以调高`BATCH_SIZE`的大小以获得更快的训练速度,`BATCH_SIZE`增大时,可以适当调高学习率`SOLVER.LR`.
Z
Zeyu Chen 已提交
67 68 69

* 如果在Linux系统下训练,可以使用`--use_mpio`使用多进程I/O,通过提升数据增强的处理速度进而大幅度提升GPU利用率。

W
wuzewu 已提交
70

L
LutaoChu 已提交
71
## 5.训练过程可视化
W
wuzewu 已提交
72

Z
Zeyu Chen 已提交
73
当打开do_eval和use_tb两个开关后,我们可以通过TensorBoard查看边训练边评估的效果。
Z
Zeyu Chen 已提交
74

W
wuzewu 已提交
75 76 77 78 79
```shell
tensorboard --logdir train_log --host {$HOST_IP} --port {$PORT}
```

NOTE:
L
LutaoChu 已提交
80 81
1. 上述示例中,$HOST\_IP为机器IP地址,请替换为实际IP,$PORT请替换为可访问的端口。
2. 数据量较大时,前端加载速度会比较慢,请耐心等待。
W
wuzewu 已提交
82

L
LutaoChu 已提交
83 84
启动TensorBoard命令后,我们可以在浏览器中查看对应的训练数据。
`SCALAR`这个tab中,查看训练loss、iou、acc的变化趋势。
W
wuzewu 已提交
85
![](./imgs/tensorboard_scalar.JPG)
W
wuzewu 已提交
86

L
LutaoChu 已提交
87
`IMAGE`这个tab中,查看样本图片。
W
wuzewu 已提交
88
![](./imgs/tensorboard_image.JPG)
W
wuzewu 已提交
89

L
LutaoChu 已提交
90 91
## 6.模型评估
训练完成后,我们可以通过eval.py来评估模型效果。由于我们设置的训练EPOCH数量为10,保存间隔为5,因此一共会产生2个定期保存的模型,加上最终保存的final模型,一共有3个模型。我们选择最后保存的模型进行效果的评估:
Z
Zeyu Chen 已提交
92

W
wuzewu 已提交
93 94
```shell
python pdseg/eval.py --use_gpu \
L
LutaoChu 已提交
95 96
                     --cfg configs/unet_optic.yaml \
                     TEST.TEST_MODEL saved_model/unet_optic/final
W
wuzewu 已提交
97 98
```

L
LutaoChu 已提交
99
可以看到,在经过训练后,模型在验证集上的mIoU指标达到了0.85+(由于随机种子等因素的影响,效果会有小范围波动,属于正常情况)。
W
wuzewu 已提交
100

L
LutaoChu 已提交
101 102
## 7.模型可视化
通过vis.py进行测试和可视化,以选择最后保存的模型进行测试为例:
W
wuzewu 已提交
103 104
```shell
python pdseg/vis.py --use_gpu \
L
LutaoChu 已提交
105 106
                     --cfg configs/unet_optic.yaml \
                     TEST.TEST_MODEL saved_model/unet_optic/final
W
wuzewu 已提交
107
```
L
LutaoChu 已提交
108
执行上述脚本后,会在主目录下产生一个visual文件夹,里面存放着测试集图片的预测结果,我们选择其中1张图片进行查看:
W
wuzewu 已提交
109 110 111

![](./imgs/usage_vis_demo.jpg)

W
wuzewu 已提交
112
`NOTE`
L
LutaoChu 已提交
113 114
1. 可视化的图片会默认保存在visual目录下,可以通过`--vis_dir`来指定输出目录。
2. 训练过程中会使用`DATASET.VIS_FILE_LIST`中的图片进行可视化显示,而vis.py则会使用`DATASET.TEST_FILE_LIST`.
L
LutaoChu 已提交
115 116 117 118

## 在线体验

PaddleSeg在AI Studio平台上提供了在线体验的快速入门教程,欢迎[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/100798)