• paddle篇---用yolov3训练自己的数据集


    1、生成数据集

    可看我的另一篇博客 添加链接描述

    2、修改配置文件

    由于paddle固定了数据集的名字,如果用自己的数据集命名的话就会出现如下的报错

    ValueError: Dataset ./app/yyq/slifeProject/interest/paddle/waste is not valid and cannot parse dataset type 'waste' for automaticly downloading, which only supports 'voc' , 'coco', 'wider_face', 'fruit', 'roadsign_voc' and 'mot' currently
    
    • 1

    那如何解决这个问题呢?

    首先:我在 /app/yyq/slifeProject/interest/paddle/PaddleDetection-release-2.5/configs/yolov3/yolov3_darknet53_270e_waste.yml ,yml不是以paddle所固定的数据集的格式

    我的yml配置如下:

    _BASE_: [
      '../datasets/waste.yml',
      '../runtime.yml',
      '_base_/optimizer_270e.yml',
      '_base_/yolov3_darknet53.yml',
      '_base_/yolov3_reader.yml',
    ]
    
    snapshot_epoch: 5
    weights: ../output/yolov3_darknet53_270e_waste/model_final
    
    # set collate_batch to false because ground-truth info is needed
    # on voc dataset and should not collate data in batch when batch size
    # is larger than 1.
    EvalReader:
      collate_batch: false
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    在这里插入图片描述

    其次:/app/yyq/slifeProject/interest/paddle/PaddleDetection-release-2.5/configs/datasets/waste.yml

    metric: VOC
    map_type: 11point
    num_classes: 20
    
    TrainDataset:
      !VOCDataSet
        dataset_dir: /app/yyq/slifeProject/interest/paddle/waste   # 用终端运行的话改成  dataset/waste
        anno_path: trainval.txt
        label_list: label_list.txt
        data_fields: ['image', 'gt_bbox', 'gt_class', 'difficult']
    
    EvalDataset:
      !VOCDataSet
        dataset_dir: /app/yyq/slifeProject/interest/paddle/waste   # 用终端运行的话改成  dataset/waste
        anno_path: test.txt
        label_list: label_list.txt
        data_fields: ['image', 'gt_bbox', 'gt_class', 'difficult']
    
    TestDataset:
      !ImageFolder
        anno_path: /app/yyq/slifeProject/interest/paddle/waste/label_list.txt
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    在这里插入图片描述注意: dataset_diranno_path 的路径不要写错

    再次:/app/yyq/slifeProject/interest/paddle/PaddleDetection-release-2.5/configs/yolov3/base/optimizer_270e.yml

    可以修改 epochbase_lr
    在这里插入图片描述

    3、训练

    python tools/train.py -c configs/yolov3/yolov3_darknet53_270e_waste.yml  --use_vdl=true --vdl_log_dir=vdl_dir/scalar 
    
    • 1

    直接运行会报错,意思是没有 waste的数据集
    怎么修改
    文件: /app/yyq/slifeProject/interest/paddle/PaddleDetection-release-2.5/ppdet/utils/download.py

    1、先加上 自己的数据集的路径
    在这里插入图片描述2、加上 waste的数据
    在这里插入图片描述
    两步操作后就可以正常运行了
    在这里插入图片描述

    4、模型评估

    python tools/eval.py -c configs/yolov3/yolov3_darknet53_270e_waste.yml -o weights=output/yolov3_darknet53_270e_waste/139.pdparams
    
    • 1

    在这里插入图片描述

    5、模型预测

    python tools/infer.py -c configs/yolov3/yolov3_darknet53_270e_waste.yml --infer_img=demo/31011529001320014341-2021-05-11-15-22-55.892.jpg -o weights=output/yolov3_darknet53_270e_waste/139.pdparams
    
    • 1

    在这里插入图片描述
    在这里插入图片描述

    5.1、坐标和类别获取

    在这里插入图片描述

    6、模型可视化

    # 下述命令会在127.0.0.1上启动一个服务,支持通过前端web页面查看,可以通过--host这个参数指定实际ip地址
    visualdl --logdir vdl_dir/scalar/
    
    • 1
    • 2

    在这里插入图片描述在这里插入图片描述

    7、模型导出

    在模型训练过程中保存的模型文件是包含前向预测和反向传播的过程,在实际的工业部署则不需要反向传播,因此需要将模型进行导成部署需要的模型格式。 在PaddleDetection中提供了 tools/export_model.py 脚本来导出模型

    python tools/export_model.py -c configs/yolov3/yolov3_darknet53_270e_waste.yml --output_dir=./inference_model \
    >  -o weights=output/yolov3_darknet53_270e_waste/best_model
    
    • 1
    • 2

    注意: weights=output/yolov3_darknet53_270e_waste/best_model 是指在weights=output/yolov3_darknet53_270e_waste/路径下有一个 best_model.pdparams的权重
    我是将139.pdparams 重命名成 best_model.pdparams

    终端运行:
    在这里插入图片描述配置文件运行:
    在这里插入图片描述

    预测模型会导出到 inference_model/yolov3_darknet53_270e_waste 目录下,分别为 infer_cfg.yml, model.pdiparams, model.pdiparams.info,model.pdmodel 如果不指定文件夹,模型则会导出在 output_inference

    在这里插入图片描述

    8、模型部署

     python deploy/python/infer.py --model_dir=./inference_model/yolov3_darknet53_270e_waste --image_file=./demo/31011529001320014341-2021-05-11-15-22-55.892.jpg --device=GPU
    
    • 1

    注意: paddledetection官网上是model_dir=output_inference,但是如果自己指定路径的话,按照自己指定的路径填写

    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

    8.1 获得目标的类别,置信度和坐标

    在这里插入图片描述

    具体代码如下:

    具体的code

  • 相关阅读:
    Vue 获取/设置指定组件高度
    全面认识痛风:症状、风险因素、发病机理及管理
    高忆管理:军工板块走高,奥普光电涨停,恒宇信通等大涨
    Vuex与Vue-router的使用
    Ribbon负载均衡
    基于tensorflow的cnn文本分类
    WebAssembly上手:基础指南
    CSP模拟58联测20 回忆旅途的过往
    Linux|软件安装包deb打包
    Gin 打包vue或react项目输出文件到程序二进制文件
  • 原文地址:https://blog.csdn.net/m0_46825740/article/details/127675786