当前位置:   article > 正文

利用paddleseg训练自己的数据集

paddleseg

Github开源地址,内有数据集设置规则。

参考博客:docs/whole_process_cn.md · PaddlePaddle/PaddleSeg - Gitee.com

开源数据集:

https://paddleseg.bj.bcebos.com/dataset/optic_disc_seg.zip

目录

 1.环境安装

2. 配置数据集

2.1 打开项目后,界面如图 

2.2 对于数据集的修改脚本都在tools中

 2.2.1 tools中工具说明

2.3 整理数据

 2.4 切分数据

3.准备配置文件

4.模型训练

 1.单卡训练

2.恢复训练

3.加载预训练模型 

6.训练可视化

7.模型预测

8.模型导出(2步导出)

9.二次开发 


 1.环境安装

参考官方安装文档

2. 配置数据集

2.1 打开项目后,界面如图 

2.2 对于数据集的修改脚本都在tools中

这里paddleseg既支持灰度图也支持伪彩色图

通常我们数据集二值化后为像素值为0 255这里伪彩色标注图像素为 0 1归一化,如果有2类就是0 1 如果有3类就是0 1 2  以此类推(这一步很重要)

 如果使用0 255 进行训练就会出现如下情况

而且loss很快会变为0

 2.2.1 tools中工具说明

1) 灰度标注图转换为伪彩色标注图 (非必须)

python tools/gray2pseudo_color.py <dir_or_file> <output_dir>

 

脚本使用方法,以下类似

在此文件目录下cmd,将路径替换掉,绝对路径即可中间空格隔开

 如果仅希望将指定数据集中的部分灰度标注图转换为伪彩色标注图,则执行以下命令。

python tools/gray2pseudo_color.py <dir_or_file> <output_dir> --dataset_dir <dataset directory> --file_separator <file list separator>

 

2.3 整理数据

 数据格式如下,图片要求24深度jpg格式,标签要求8深度png格式,分类为几项则从0到几

 2.4 切分数据

对于所有原始图像和标注图像,需要按照比例划分为训练集、验证集、测试集。

PaddleSeg提供了切分数据并生成文件列表的脚本

split_dataset_list.py

此代码为默认比例7 :3 :1 

python tools/split_dataset_list.py <dataset_root> <images_dir_name> <labels_dir_name> ${FLAGS}

 参数说明:

  • dataset_root: 数据集根目录
  • images_dir_name: 原始图像目录名
  • labels_dir_name: 标注图像目录名

 使用示例:

python tools/split_dataset_list.py <dataset_root> images annotations --split 0.6 0.2 0.2 --format jpg png

 切分完成后将生成3个或者2个txt文件

这里的lables.txt为分类种类数如图 ,需要自行设置 

 

这里也可以使用这个切分方法,无需使用脚本。

至此,数据集准备完毕

3.准备配置文件

配置文件均位于configs中,建议自己建一个文件夹,需要哪个模型复制哪个

建议将所有需要的配置复制到一个中,避免重复

 

避免这种情况,还要去_base_中再去找

配置文件说明说的非常清楚

4.模型训练

 1.单卡训练

准备好配置文件后,在PaddleSeg根目录下执行如下命令,使用train.py脚本进行单卡模型训练

  1. export CUDA_VISIBLE_DEVICES=0 # 设置1张可用的卡
  2. **windows下请执行以下命令**
  3. **set CUDA_VISIBLE_DEVICES=0**
  4. python train.py \
  5. --config configs/quick_start/pp_liteseg_optic_disc_512x512_1k.yml \
  6. --save_interval 500 \
  7. --do_eval \
  8. --use_vdl \
  9. --save_dir output

 在pycharm中train下右击

上述训练命令解释:

  • --config指定配置文件。
  • --save_interval指定每训练特定轮数后,就进行一次模型保存或者评估(如果开启模型评估)。
  • --do_eval开启模型评估。具体而言,在训练save_interval指定的轮数后,会进行模型评估。
  • --use_vdl开启写入VisualDL日志信息,用于VisualDL可视化训练过程。
  • --save_dir指定模型和visualdl日志文件的保存根路径。

train.py文件说明

2.恢复训练

 添加一行resume_model 选择保存的iter

  1. python train.py \
  2. --config configs/quick_start/pp_liteseg_optic_disc_512x512_1k.yml \
  3. --resume_model output/iter_500 \
  4. --do_eval \
  5. --use_vdl \
  6. --save_interval 500 \
  7. --save_dir output

3.加载预训练模型 

将config中model中的pretrained配置为自己训练的模型即可

6.训练可视化

官方文档

1.首先安装visualdl

pip install --upgrade --pre visualdl

2.输入命令 ,需要存在log文件

  1. visualdl --logdir ./log --port 8080
  2. # 或者写在自己的文件夹
  3. visualdl --logdir ./output/fcnclass3 --port 8080

 

7.模型预测

在predict.py中将此代码放入

其中image_path可以是一个图片路径,也可以是一个目录。如果是一个目录,将对目录内的所有图片进行预测并保存可视化结果图。

同样的,可以通过--aug_pred开启多尺度翻转预测, --is_slide开启滑窗预测。

  1. python predict.py \
  2. --config configs/quick_start/pp_liteseg_optic_disc_512x512_1k.yml \
  3. --model_path output/best_model/model.pdparams \
  4. --image_path data/optic_disc_seg/JPEGImages/H0002.jpg \
  5. --save_dir output/result

8.模型导出(2步导出)

(1)在export.py中输入如下命令,将模型转为静态

  1. python export.py \
  2. --config configs/quick_start/pp_liteseg_optic_disc_512x512_1k.yml \
  3. --model_path output/best_model/model.pdparams \
  4. --save_dir output/infer_model
  5. --input_shape 1 3 512 512

会生成4个文件如图

 

  1. output/infer_model
  2. ├── deploy.yaml # 部署相关的配置文件
  3. ├── model.pdiparams # 静态图模型参数
  4. ├── model.pdiparams.info # 参数额外信息,一般无需关注
  5. └── model.pdmodel # 静态图模型文件,可以使用netron软件进行可视化查看

(2).利用onnxruntime转为.onnx格式

需要安装onnxruntime库

  1. # 安装cpu版本
  2. pip install onnxruntime
  3. # 安装gpu版本
  4. pip install onnxruntime-gpu

利用pycharm或者cmd都可以在终端输入,需要在中间添加空格,进入paddle环境中输入命令

  1. # 使用paddle2onnx将paddle模型格式转化到ONNX模型格式。
  2. ! paddle2onnx --model_dir ./output/ \
  3. --model_filename model.pdmodel \
  4. --params_filename model.pdiparams \
  5. --save_file segonnx/model.onnx \
  6. --opset_version 11
  7. --save_file test.onnx

最后转出的模型为

 目前支持的模型

利用onnx格式进行整张图像的预测

9.二次开发 

paddleseg的代码格式,这里是官方提供的格式说明文件

  1. PaddleSeg
  2. ├── configs #配置文件文件夹
  3. ├── paddleseg #训练部署的核心代码
  4. ├── core # 启动模型训练,评估与预测的接口
  5. ├── cvlibs # Config类定义在该文件夹中。它保存了数据集、模型配置、主干网络、损失函数等所有的超参数。
  6. ├── callbacks.py
  7. └── ...
  8. ├── datasets #PaddleSeg支持的数据格式,包括ade、citycapes等多种格式
  9. ├── ade.py
  10. ├── citycapes.py
  11. └── ...
  12. ├── models #该文件夹下包含了PaddleSeg组网的各个部分
  13. ├── backbone # paddleseg的使用的主干网络
  14. ├── hrnet.py
  15. ├── resnet_vd.py
  16. └── ...
  17. ├── layers # 一些组件,例如attention机制
  18. ├── activation.py
  19. ├── attention.py
  20. └── ...
  21. ├── losses #该文件夹下包含了PaddleSeg所用到的损失函数
  22. ├── dice_loss.py
  23. ├── lovasz_loss.py
  24. └── ...
  25. ├── ann.py #该文件表示的是PaddleSeg所支持的算法模型,这里表示ann算法。
  26. ├── deeplab.py #该文件表示的是PaddleSeg所支持的算法模型,这里表示Deeplab算法。
  27. ├── unet.py #该文件表示的是PaddleSeg所支持的算法模型,这里表示unet算法。
  28. └── ...
  29. ├── transforms #进行数据预处理的操作,包括各种数据增强策略
  30. ├── functional.py
  31. └── transforms.py
  32. └── utils
  33. ├── config_check.py
  34. ├── visualize.py
  35. └── ...
  36. ├── train.py # 训练入口文件,该文件里描述了参数的解析,训练的启动方法,以及为训练准备的资源等。
  37. ├── predict.py # 预测文件
  38. └── ...

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/510367
推荐阅读
相关标签
  

闽ICP备14008679号