赞
踩
Github开源地址,内有数据集设置规则。
参考博客:docs/whole_process_cn.md · PaddlePaddle/PaddleSeg - Gitee.com
开源数据集:
https://paddleseg.bj.bcebos.com/dataset/optic_disc_seg.zip
目录
参考官方安装文档
这里paddleseg既支持灰度图也支持伪彩色图
通常我们数据集二值化后为像素值为0 255这里伪彩色标注图像素为 0 1归一化,如果有2类就是0 1 如果有3类就是0 1 2 以此类推(这一步很重要)
如果使用0 255 进行训练就会出现如下情况
而且loss很快会变为0
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>
数据格式如下,图片要求24深度jpg格式,标签要求8深度png格式,分类为几项则从0到几
对于所有原始图像和标注图像,需要按照比例划分为训练集、验证集、测试集。
PaddleSeg提供了切分数据并生成文件列表的脚本
split_dataset_list.py
此代码为默认比例7 :3 :1
python tools/split_dataset_list.py <dataset_root> <images_dir_name> <labels_dir_name> ${FLAGS}
参数说明:
使用示例:
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为分类种类数如图 ,需要自行设置
这里也可以使用这个切分方法,无需使用脚本。
至此,数据集准备完毕
配置文件均位于configs中,建议自己建一个文件夹,需要哪个模型复制哪个
建议将所有需要的配置复制到一个中,避免重复
避免这种情况,还要去_base_中再去找
准备好配置文件后,在PaddleSeg根目录下执行如下命令,使用train.py
脚本进行单卡模型训练
- export CUDA_VISIBLE_DEVICES=0 # 设置1张可用的卡
-
- **windows下请执行以下命令**
- **set CUDA_VISIBLE_DEVICES=0**
- python train.py \
- --config configs/quick_start/pp_liteseg_optic_disc_512x512_1k.yml \
- --save_interval 500 \
- --do_eval \
- --use_vdl \
- --save_dir output
在pycharm中train下右击
上述训练命令解释:
--config
指定配置文件。--save_interval
指定每训练特定轮数后,就进行一次模型保存或者评估(如果开启模型评估)。--do_eval
开启模型评估。具体而言,在训练save_interval指定的轮数后,会进行模型评估。--use_vdl
开启写入VisualDL日志信息,用于VisualDL可视化训练过程。--save_dir
指定模型和visualdl日志文件的保存根路径。train.py文件说明
添加一行resume_model 选择保存的iter
- python train.py \
- --config configs/quick_start/pp_liteseg_optic_disc_512x512_1k.yml \
- --resume_model output/iter_500 \
- --do_eval \
- --use_vdl \
- --save_interval 500 \
- --save_dir output
将config中model中的pretrained配置为自己训练的模型即可
1.首先安装visualdl
pip install --upgrade --pre visualdl
2.输入命令 ,需要存在log文件
- visualdl --logdir ./log --port 8080
-
- # 或者写在自己的文件夹
- visualdl --logdir ./output/fcnclass3 --port 8080
在predict.py中将此代码放入
其中image_path
可以是一个图片路径,也可以是一个目录。如果是一个目录,将对目录内的所有图片进行预测并保存可视化结果图。
同样的,可以通过--aug_pred
开启多尺度翻转预测, --is_slide
开启滑窗预测。
- python predict.py \
- --config configs/quick_start/pp_liteseg_optic_disc_512x512_1k.yml \
- --model_path output/best_model/model.pdparams \
- --image_path data/optic_disc_seg/JPEGImages/H0002.jpg \
- --save_dir output/result
(1)在export.py中输入如下命令,将模型转为静态
- python export.py \
- --config configs/quick_start/pp_liteseg_optic_disc_512x512_1k.yml \
- --model_path output/best_model/model.pdparams \
- --save_dir output/infer_model
- --input_shape 1 3 512 512
会生成4个文件如图
- output/infer_model
- ├── deploy.yaml # 部署相关的配置文件
- ├── model.pdiparams # 静态图模型参数
- ├── model.pdiparams.info # 参数额外信息,一般无需关注
- └── model.pdmodel # 静态图模型文件,可以使用netron软件进行可视化查看
(2).利用onnxruntime转为.onnx格式
需要安装onnxruntime库
- # 安装cpu版本
- pip install onnxruntime
-
- # 安装gpu版本
- pip install onnxruntime-gpu
利用pycharm或者cmd都可以在终端输入,需要在中间添加空格,进入paddle环境中输入命令
- # 使用paddle2onnx将paddle模型格式转化到ONNX模型格式。
- ! paddle2onnx --model_dir ./output/ \
- --model_filename model.pdmodel \
- --params_filename model.pdiparams \
- --save_file segonnx/model.onnx \
- --opset_version 11
- --save_file test.onnx
最后转出的模型为
目前支持的模型
利用onnx格式进行整张图像的预测
paddleseg的代码格式,这里是官方提供的格式说明文件
- PaddleSeg
- ├── configs #配置文件文件夹
- ├── paddleseg #训练部署的核心代码
- ├── core # 启动模型训练,评估与预测的接口
- ├── cvlibs # Config类定义在该文件夹中。它保存了数据集、模型配置、主干网络、损失函数等所有的超参数。
- ├── callbacks.py
- └── ...
- ├── datasets #PaddleSeg支持的数据格式,包括ade、citycapes等多种格式
- ├── ade.py
- ├── citycapes.py
- └── ...
- ├── models #该文件夹下包含了PaddleSeg组网的各个部分
- ├── backbone # paddleseg的使用的主干网络
- ├── hrnet.py
- ├── resnet_vd.py
- └── ...
- ├── layers # 一些组件,例如attention机制
- ├── activation.py
- ├── attention.py
- └── ...
- ├── losses #该文件夹下包含了PaddleSeg所用到的损失函数
- ├── dice_loss.py
- ├── lovasz_loss.py
- └── ...
- ├── ann.py #该文件表示的是PaddleSeg所支持的算法模型,这里表示ann算法。
- ├── deeplab.py #该文件表示的是PaddleSeg所支持的算法模型,这里表示Deeplab算法。
- ├── unet.py #该文件表示的是PaddleSeg所支持的算法模型,这里表示unet算法。
- └── ...
- ├── transforms #进行数据预处理的操作,包括各种数据增强策略
- ├── functional.py
- └── transforms.py
- └── utils
- ├── config_check.py
- ├── visualize.py
- └── ...
- ├── train.py # 训练入口文件,该文件里描述了参数的解析,训练的启动方法,以及为训练准备的资源等。
- ├── predict.py # 预测文件
- └── ...
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。