使用PP-LiteSeg模型对道路进行分割
1 准备环境
参考上一篇:Windows PaddleSeg c++部署
2 样本
车道线分割实战的智能车数据集
#标签
'背景':0, 0.05
'单实线-黄': 1,
'单实线-白': 2,
'双实线-黄(包括一黄一白)': 3,
'双实线-白': 4,
'单虚线-黄': 5,
'单虚线-白': 6,
'双虚线-> 黄(包扩一黄一白)': 7,
'双虚线-白': 8,
'一实一虚-黄(包括一黄一白)': 9,
'一实一虚-白': 10,
'多条车道线(线>2,不区分虚实与颜色)': 11,
'实线减速车道线': 12,
'虚线减速车道线': 13,
'锯齿线(可变车道线)': 14
3 准备config文件
参考下面两个文件
(1). 遥感道路分割的配置文件PaddleSeg-road/configs/road_seg/pp_liteseg_stdc1_deepglobe_1024x1024_80k.yml
(2). 车道线分割实战的配置文件
PaddleSeg/configs/ocrnet/ocrnet_hrnetw18_cityscapes_1024x512_160k_lovasz_softmax.yml
编写 pp_liteseg_stdc1_lane_1024x512.yml
batch_size: 8
iters: 35000
optimizer:
type: sgd
momentum: 0.9
weight_decay: 5.0e-4
lr_scheduler:
type: PolynomialDecay
learning_rate: 0.0025
end_lr: 0
power: 0.9
warmup_iters: 1000
warmup_start_lr: 1.0e-5
loss:
types:
- type: OhemCrossEntropyLoss
min_kept: 260000
- type: OhemCrossEntropyLoss
min_kept: 260000
- type: OhemCrossEntropyLoss
min_kept: 260000
coef: [1, 1, 1]
train_dataset:
type: Dataset
dataset_root: dataset/zhinengche
num_classes: 15
mode: train
train_path: dataset/zhinengche/train_list.txt
transforms:
- type: ResizeStepScaling
min_scale_factor: 0.5
max_scale_factor: 2.0
scale_step_size: 0.25
- type: RandomRotation
max_rotation: 90
- type: RandomPaddingCrop
crop_size: [768, 768]
- type: RandomHorizontalFlip
- type: RandomVerticalFlip
- type: RandomDistort
brightness_range: 0.3
brightness_prob: 0.5
contrast_range: 0.3
contrast_prob: 0.5
saturation_range: 0.3
saturation_prob: 0.5
hue_range: 15
hue_prob: 0.5
- type: Normalize
val_dataset:
type: Dataset
dataset_root: dataset/zhinengche/
num_classes: 15
mode: val
val_path: dataset/zhinengche/val_list.txt
transforms:
- type: Normalize
model:
type: PPLiteSeg
backbone:
type: STDC1
pretrained: https://bj.bcebos.com/paddleseg/dygraph/PP_STDCNet1.tar.gz
arm_out_chs: [32, 64, 128]
seg_head_inter_chs: [32, 64, 64]
4 模型训练
# train pp_liteseg
%cd ~/work/PaddleSeg-road/
!python train.py \
--config configs/amy/pp_liteseg_stdc1_lane_1024x512.yml\
#--do_eval \
#--num_workers 3 \
--save_interval 1000 \
--save_dir output/pp_liteseg_stdc1_lane
5 模型预测
5.1 python预测
%cd ~/work/PaddleSeg-road
!python predict.py \
--config configs/amy/pp_liteseg_stdc1_lane_1024x512.yml \
--model_path pp_liteseg_stdc1_lane/model.pdparams \
--image_path Data/seg/test/5.jpg \
--save_dir output/pp_liteseg_stdc1_lane
5.2 C++预测
(1)导出模型
%cd ~/work/PaddleSeg-road
!python export.py \
--config configs\amy\pp_liteseg_stdc1_lane_1024x512.yml \
--model_path pp_liteseg_stdc1_lane/model.pdparams \
--save_dir ./output/pp_liteseg_stdc1_lane
(2) c++预测
配置模型路径
修改输出的数据类型为 int64_t