• PaddleSeg学习3——使用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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    智能车数据集

    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]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5

    (2) c++预测

    配置模型路径
    在这里插入图片描述
    修改输出的数据类型为 int64_t
    在这里插入图片描述

    5.3 预测结果展示

    在这里插入图片描述

  • 相关阅读:
    Linux——安装tomcat并部署项目
    【Vue 开发实战】实战篇 # 45:如何构建可交互的组件文档让代码高亮的显示在页面
    节奏达人疯狂猜歌双端流量主小程序开发
    基于CNN多阶段图像超分+去噪(超级简单版)
    iptables安全技术和防火墙
    第五站:操作符(第二幕)
    开源模型应用落地-安全合规篇(二)
    EXCEL返回未使用数组元素(未使用值)
    程序员如何写游戏搞钱?
    python基础 | 类与继承
  • 原文地址:https://blog.csdn.net/u014377655/article/details/132836674