Skip to content

Latest commit

 

History

History
131 lines (104 loc) · 5.61 KB

tutorial_cn.md

File metadata and controls

131 lines (104 loc) · 5.61 KB

English | 简体中文

这里我们对参数配置、训练、评估、部署等进行了详细的介绍。

1. 参数配置

配置文件的结构如下所示:

├── _base_                   # 一级基础配置,后面所有的二级配置都需要继承它,你可以在这里设置自定义的数据路径,确保它有足够的空间来存储数据。
│   └── global_configs.yml
├── lung_coronavirus         # 每个数据集/器官有个独立的文件夹,这里是 COVID-19 CT scans 数据集的路径。
│   ├── lung_coronavirus.yml # 二级配置,继承一级配置,关于损失、数据、优化器等配置在这里。
│   ├── README.md  
│   └── vnet_lung_coronavirus_128_128_128_15k.yml    # 三级配置,关于模型的配置,不同的模型可以轻松拥有相同的二级配置。
└── schedulers              # 用于规划两阶段的配置,暂时还没有使用它。
    └── two_stage_coarseseg_fineseg.yml

2. 数据准备

我们使用数据准备脚本来进行一键自动化的数据下载、预处理变换、和数据集切分。只需要运行下面的脚本就可以一键准备好数据:

python tools/prepare_lung_coronavirus.py  # 以 CONVID-19 CT scans 为例。

3. 训练、评估

准备好配置之后,只需要一键运行 run-vnet.sh 就可以进行训练和评估。让我们看看这个脚本中的命令是什么样子的:

# 设置使用的单卡 GPU id
export CUDA_VISIBLE_DEVICES=0

# 设置配置文件名称和保存路径
yml=vnet_lung_coronavirus_128_128_128_15k
save_dir=saved_model/${yml}
mkdir save_dir

# 训练模型
python3 train.py --config configs/lung_coronavirus/${yml}.yml \
--save_dir  $save_dir \
--save_interval 500 --log_iters 100 \
--num_workers 6 --do_eval --use_vdl \
--keep_checkpoint_max 5  --seed 0  >> $save_dir/train.log

# 评估模型
python3 val.py --config configs/lung_coronavirus/${yml}.yml \
--save_dir  $save_dir/best_model --model_path $save_dir/best_model/model.pdparams

4. 模型部署

得到训练好的模型之后,我们可以将它导出为静态图来进行推理加速,下面的步骤就可以进行导出和部署,详细的教程则可以参考这里

cd MedicalSeg/

# 用训练好的模型进行静态图导出
python export.py --config configs/lung_coronavirus/vnet_lung_coronavirus_128_128_128_15k.yml --model_path /path/to/your/trained/model

# 使用 Paddle Inference 进行推理
python deploy/python/infer.py \
    --config /path/to/model/deploy.yaml \
    --image_path /path/to/image/path/or/dir/
    --benchmark True   # 在安装了 AutoLog 之后,打开benchmark可以看到推理速度等信息,安装方法可以见 ../deploy/python/README.md

如果有“Finish” 输出,说明导出成功,并且可以进行推理加速。

5. 在自己的数据上训练

如果你想在自己的数据集上训练,你需要增加一个数据集代码, 一个 数据预处理代码, 一个和这个数据集相关的配置目录, 一份 训练脚本。下面我们分步骤来看这些部分都需要增加什么:

5.1 增加配置目录

首先,我们如下图所示,增加一个和你的数据集相关的配置目录:

├── _base_
│   └── global_configs.yml
├── lung_coronavirus
│   ├── lung_coronavirus.yml
│   ├── README.md
│   └── vnet_lung_coronavirus_128_128_128_15k.yml

5.2 增加数据集预处理文件

所有数据需要经过预处理转换成 numpy 数据并进行数据集划分,参考这个数据预处理代码

├── lung_coronavirus_phase0  # 预处理后的文件路径
│   ├── images
│   │   ├── imagexx.npy
│   │   ├── ...
│   ├── labels
│   │   ├── labelxx.npy
│   │   ├── ...
│   ├── train_list.txt       # 训练数据,格式:  /path/to/img_name_xxx.npy /path/to/label_names_xxx.npy
│   └── val_list.txt         # 评估数据,格式:  img_name_xxx.npy label_names_xxx.npy

5.3 增加数据集文件

所有的数据集都继承了 MedicalDataset 基类,并通过上一步生成的 train_list.txt 和 val_list.txt 来获取数据。代码示例在这里

5.4 增加训练脚本

训练脚本能自动化训练推理过程,我们提供了一个训练脚本示例 用于参考,只需要复制,并按照需要修改就可以进行一键训练推理:

# 设置使用的单卡 GPU id
export CUDA_VISIBLE_DEVICES=3

# 设置配置文件名称和保存路径
config_name=vnet_lung_coronavirus_128_128_128_15k
yml=lung_coronavirus/${config_name}
save_dir_all=saved_model
save_dir=saved_model/${config_name}
mkdir -p $save_dir

# 模型训练
python3 train.py --config configs/${yml}.yml \
--save_dir  $save_dir \
--save_interval 500 --log_iters 100 \
--num_workers 6 --do_eval --use_vdl \
--keep_checkpoint_max 5  --seed 0  >> $save_dir/train.log

# 模型评估
python3 val.py --config configs/${yml}.yml \
--save_dir  $save_dir/best_model --model_path $save_dir/best_model/model.pdparams \

# 模型导出
python export.py --config configs/${yml}.yml \
--model_path $save_dir/best_model/model.pdparams

# 模型预测
python deploy/python/infer.py  --config output/deploy.yaml --image_path data/lung_coronavirus/lung_coronavirus_phase0/images/coronacases_org_007.npy  --benchmark True