前言
本文主要用于记录我在使用python做图像识别语义分割训练集的过程,由于在这一过程中踩坑排除BUG过多,因此也希望想做这部分内容的同学们可以少走些弯路。
本文是python语义分割与街景识别第四篇,关于程序的内容,也是差不多最后一部分的内容,后续可能还会更新几个相关后续操作的文档。
一、使用PaddlePaddle框架训练
框架下载地址
https//github.com/PaddlePaddle/PaddleSeg/blob/release/2.4/README_CN.md
笔者的文件夹是PaddleSeg-release-2.8打开如下
(1)configs文件夹下是不同的网络模型配置文件
(2)deploy文件夹下是不同模型部署
二、程序
将dataset文件夹放到paddlepaddle的文件夹下
2.1 配置yml文件
新建一个名为my.yml的文件放在PaddleSeg-release-2.8文件夹下,代码如下
batch_size: 4
iters: 1000
train_dataset:
type: Dataset
dataset_root: dataset
train_path: dataset/train.txt
num_classes: 30
transforms:
- type: Resize
target_size: [512,512]
- type: RandomHorizontalFlip
- type: Normalize
mode: train
val_dataset:
type: Dataset
dataset_root: dataset
val_path: dataset/val.txt
num_classes: 30
transforms:
- type: Resize
target_size: [512,512]
- type: RandomHorizontalFlip
- type: Normalize
mode: val
optimizer:
type: sgd
momentum: 0.9
weight_decay: 4.0e-5
lr_scheduler:
type: PolynomialDecay
learning_rate: 0.01
end_lr: 0
power: 0.9
loss:
types:
- type: CrossEntropyLoss
coef: [1,1,1,1,1]
model:
type: BiSeNetV2
pretrained: Null
说明:
(1)batch_size可根据显存大小自行更改
(2)iters是迭代多少次
(3)train_dataset和val_dataset的路径需要根据实际文件位置修改
(4)model的type这里选择是BisNetV2,可根据需要自行更改其他模型
2.2 运行程序
在PaddleSeg-release-2.8文件夹下按住shift右键打开命令行输入
python ./tools/train.py --config my.yml --do_eval --use_vdl --save_interval 200 --save_dir output
说明:
(1)找到train.py的路径,不同版本不太一样,这里是在tools文件夹下;
(2)--save_interval 200是指每迭代200次保存一次
(3)--save_dir output是运行结果的保存位置,若没有output文件夹手动新建一个
脚本开始运行则表明正常,可以查看最后的准确度指标检测训练程度,一般在60%~70%,加大训练量和迭代数量能大幅提高准确度