• paddledetection在window使用cpu快速上手 & 在cpu端训练自己的VOC类型数据集


    使用cpu快速上手

    配置文件

    配置文件在configs文件夹下,包含了基本上所有常见模型的配置文件
    以yolov3_mobilenet_v1_roadsign.yml为例

    _BASE_: [
      '../datasets/roadsign_voc.yml',
      '../runtime.yml',
      '_base_/optimizer_40e.yml',
      '_base_/yolov3_mobilenet_v1.yml',
      '_base_/yolov3_reader.yml',
    ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • yolov3_mobilenet_v1_roadsign 文件入口
    • roadsign_voc 主要说明了训练数据和验证数据的路径
    • runtime.yml 主要说明了公共的运行参数,比如说是否使用GPU、每多少个epoch存储checkpoint等
    • optimizer_40e.yml 主要说明了学习率和优化器的配置。
    • ppyolov2_r50vd_dcn.yml 主要说明模型、和主干网络的情况。
    • ppyolov2_reader.yml 主要说明数据读取器配置,如batch size,并发加载子进程数等,同时包含读取后预处理操作,如resize、数据增强等等

    修改&开始训练

    因为我使用的是cpu,所以只需要将configs/runtime.ymluse_gpu: 改成 false
    在这里插入图片描述
    然后使用命令行进行训练

     python tools/train.py -c configs/yolov3/yolov3_mobilenet_v1_roadsign.yml
    
    • 1

    在这里插入图片描述
    到这就已经开始简单的训练了!
    【参考文档】30分钟快速上手PaddleDetection

    训练自己的VOC类型数据集

    结构

    下面是我voc类型数据集的结构
    在这里插入图片描述
    至于label_list.txttrain.txtval.txt不用多管,这部分是后面生成的。

    你需要做的就是

    1. 在dataset文件夹中创建一个属于自己的文件夹
    2. 创建annotations,images文件夹,然后将图片文件放入images,将xml文件放入annotations
    3. 创建 create_list.py(代码如下)
    import random
    import os
    #生成train.txt和val.txt
    random.seed(2020)
    #---------------------修改为自己的路径----------------------------------------------------
    xml_dir  = 'D:/computervision/PaddleDetection-release-2.5/dataset/number/annotations'#标签文件地址
    img_dir = 'D:/computervision/PaddleDetection-release-2.5/dataset/number/images'#图像文件地址
    #---------------------修改为自己的路径----------------------------------------------------
    
    path_list = list()
    for img in os.listdir(img_dir):
        img_path = os.path.join(img_dir,img)
        xml_path = os.path.join(xml_dir,img.replace('jpg', 'xml'))
        path_list.append((img_path, xml_path))
    random.shuffle(path_list)
    ratio = 0.9
    #---------------------train/val之前修改为自己的路径----------------------------------------------------
    train_f = open('D:/computervision/PaddleDetection-release-2.5/dataset/number/train.txt','w') #生成训练文件
    val_f = open('D:/computervision/PaddleDetection-release-2.5/dataset/number/val.txt' ,'w')#生成验证文件
    #---------------------修改为自己的路径----------------------------------------------------
    
    for i ,content in enumerate(path_list):
        img, xml = content
        text = img + ' ' + xml + '\n'
        if i < len(path_list) * ratio:
            train_f.write(text)
        else:
            val_f.write(text)
    train_f.close()
    val_f.close()
    
    #生成标签文档
    label = ['number']#设置你想检测的类别
    
    #---------------------label_list之前修改为自己的路径----------------------------------------------------
    with open('D:/computervision/PaddleDetection-release-2.5/dataset/number/label_list.txt', 'w') as f:
    # ---------------------label_list之前修改为自己的路径----------------------------------------------------
        for text in label:
            f.write(text+'\n')
    
    • 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

    修改配置文件

    这点是基于你已经选择好了想要使用的模型,我以我使用的ppyoloe为例:
    在这里插入图片描述
    配置文件就这么4个

    接下来你要做的就是:

    1. configs/datasets创建(或者是直接修改voc.yml文件)
      以下内容基本上必须修改!!!在这里插入图片描述
      其实直接右键就可以了

    在这里插入图片描述
    最后的修改结果就是:

    1. 修改configs/ppyoloe/ppyoloe_crn_l_36e_coco_xpu.yml
      在这里插入图片描述

    贫困小孩用的是cpu,所以要改这个
    在这里插入图片描述

    1. 然后其他文件的话就是一些非必须的调参
    2. 因为我用的是cpu,所以configs/runtime.yml中还要修改以防万一
      在这里插入图片描述

    开跑

    命令行开跑:

    python tools/train.py -c configs/ppyoloe/ppyoloe_crn_l_36e_coco_xpu.yml
    
    
    • 1
    • 2

    (1)报了个错

    在这里插入图片描述

    ppdet/core/workspace.py第78行修改为

    with open(file_path, encoding='utf-8') as f:
    
    • 1

    修改后
    在这里插入图片描述

    (2)结论

    cpu真的别来沾边,内存占用率最高到99%属实是有点绷不住

    在这里插入图片描述

  • 相关阅读:
    linux中的find查找文件或者目录、locate快速定位文件路径
    第十八章 ObjectScript 应用程序中的数值计算
    神经网络和深度学习-处理多维特征的输入
    C/C++教程 从入门到精通《第二章》—— 快速入门C/C++
    京东数据分析:2023年9月京东洗烘套装品牌销量排行榜!
    【浅尝C++】STL第三弹=>list常用接口使用示例/list底层结构探索/list模拟实现代码详解
    【CKA考试笔记】十五、安全管理:验证与授权
    Nginx反向代理和负载均衡
    催款神器!博途分期付款程序:分多个阶段定时锁机实现时间锁,再利用随机数生成动态密码解锁!适用于S71200/1500PLC
    SQL语法常用总结
  • 原文地址:https://blog.csdn.net/weixin_50862344/article/details/126692972