• 飞桨平台搭建PP-YOLOE模型


    一、创建项目

    此博客仅是运行PP-YOLOE源码,这里以变压器渗漏数据集为例COCO数据集太大了,跑不动,V100训练预估计得7天左右,即便是A100也得4天半,变压器渗漏油数据集跑一个小时左右,还可以接受,那么不墨迹直接进入手把手环节。
    首先,进入百度搜索飞桨,进入云平台选择项目–>创建项目–>NoteBook
    在这里插入图片描述
    然后,输入项目名称,添加数据集(点击添加数据集,按需搜索即可,也可自己创建数据集)。之后点击高级配置,根据自己的需求选择合适的配置,我这里用到了PaddlePaddle2.5.0版本的框架,所以选择了BML Codelab(AI Studio没有PaddlePaddle2.5.0),之后项目框架选择PaddlePaddle2.5.0,选择项目的标签(可以根据项目选择随便选),项目描述可写。。。
    在这里插入图片描述
    在这里插入图片描述
    之后,点击创建即可创建项目,并自动进入项目,点击启动环境即可进入项目编辑。
    在这里插入图片描述

    值得一提的是,点击启动环境之后,有一个选择环境的选项。百度每天会赠送算力卡8个点,基础版(无GPU)不浪费点,V100(16GB)一个小时2个点(相当于一天有4个小时免费),V100(32GB)一个小时3个点(相当于一天不到3个小时),如需更多时间或者更高级的GPU,需要开会员,花钱了,应该是一个月19.9RMB。
    在这里插入图片描述

    二、搭建PP-YOLOE模型

    为了能多跑几个小时,保证科研的资源充分利用性,可以先用基础版启动环境,搭建模型,然后切换环境用V100甚至更好的GPU跑。
    上图中点击确定后,点击进入 即可进入项目。
    在这里插入图片描述
    在这里插入图片描述

    2.1 配置环境

    输入如下程序,克隆PaddleDetection项目,因为我选的是PaddlePaddle2.5.0因此选择2.5版本项目。

    %cd work/
    # gitee 国内下载比较快
    !git clone https://gitee.com/paddlepaddle/PaddleDetection.git -b release/2.5
    # github 下载慢,需要等待很长时间
    # !git clone https://github.com/PaddlePaddle/PaddleDetection.git -b release/2.5
    
    • 1
    • 2
    • 3
    • 4
    • 5

    此时程序被Clone到work文件夹下,点进去就可以看到项目。
    在这里插入图片描述
    然后一次输入如下的程序,配置所需要的环境和库(这里一步一步来,不要着急,一个一个运行)

    #安装PaddleDetection依赖
    !pip install -r /home/aistudio/work/PaddleDetection/requirements.txt
    
    • 1
    • 2
    #编译安装paddledet
    %cd work/PaddleDetection
    !python setup.py install
    
    • 1
    • 2
    • 3
    
    #安装其他依赖
    from PIL import Image  
    import matplotlib.pyplot as plt
    import numpy as np
    import os 
    import random
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    #测试安装是否成功,最后输出OK,说明编译安装成功
    !python ppdet/modeling/tests/test_architectures.py
    
    • 1
    • 2

    出现如下图片中的结果表示成功了
    在这里插入图片描述
    另外,还要装一个库pycocotools,后面训练会用到,不然会报错。

    !pip install pycocotools
    
    • 1

    2.2 准备数据集

    目前给出的数据集是VOC格式的,然而PP-YOLOE仅支持COCO数据集,因此需要将数据集进行转换,转换成COCO标准格式。
    依次执行如下程序即可。注意:解压数据集时路径“data“后面要改,

    #解压数据集
    !unzip -oq /home/aistudio/data/data180502/oil.zip -d /home/aistudio/data/
    
    #划分数据集
    #根据挂载的数据集制作制作标签文件,并进行划分
    #生成train.txt和val.txt
    random.seed(2020)
    xml_dir  = '/home/aistudio/data/oil/Annotations'#标签文件地址
    img_dir = '/home/aistudio/data/oil/JPEGImages'#图像文件地址
    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.8 #测试集和验证集划分比例0.8:0.2
    train_f = open('/home/aistudio/data/oil/train.txt','w') #生成训练文件
    val_f = open('/home/aistudio/data/oil/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 = ['oil']#设置你想检测的类别
    with open('/home/aistudio/data/oil/label_list.txt', 'w') as f:
        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

    最终生成的数据集文件夹目录为
    在这里插入图片描述

    使用x2coco.py将voc格式的数据集转换成coco数据集 只需要将这四个参数指定成上面生成的标签文件即可

    voc_anno_dir 总的标注文件

    voc_anno_list 训练数据集文件列表

    voc_label_list 标签文件

    voc_out_name 输出的coco文件路径

    !python tools/x2coco.py \
            --dataset_type voc \
            --voc_anno_dir /home/aistudio/data/oil/Annotations \
            --voc_anno_list /home/aistudio/data/oil/train.txt \
            --voc_label_list /home/aistudio/data/oil/label_list.txt \
            --voc_out_name /home/aistudio/data/oil/train.json
    !python tools/x2coco.py \
            --dataset_type voc \
            --voc_anno_dir /home/aistudio/data/oil/Annotations \
            --voc_anno_list /home/aistudio/data/oil/val.txt \
            --voc_label_list /home/aistudio/data/oil/label_list.txt \
            --voc_out_name /home/aistudio/data/oil/valid.json
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    !mkdir oil
    %cd oil
    !mkdir images &&mkdir annotations
    !mv /home/aistudio/data/oil/train.json /home/aistudio/work/PaddleDetection/oil/annotations
    !mv /home/aistudio/data/oil/valid.json /home/aistudio/work/PaddleDetection/oil/annotations
    !cp -r /home/aistudio/data/oil/JPEGImages/* /home/aistudio/work/PaddleDetection/oil/images/
    %cd ..
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    这个是标准的COCO数据集格式
    在这里插入图片描述

    2.3 训练模型

    在这就可以切换环境了,切换到V10032GB的,切记,切记,切记,不要在项目里切换,也有可能是我电脑太辣鸡了,切换不过来,我的失败了很多次,先停止环境再重新启动。
    在这里插入图片描述

    首先查看PP-YOLOE使用的配置文件PaddleDetection/configs/ppyoloe/ppyoloe_crn_l_300e_coco.yml 可以看到依赖的相关配置文件如下图所示:
    注意:这里将预训练权重换成coco数据集上的预训练权重,更多预训练权重
    点击链接进入选择配置文件的config找到预训练权重,将其复制进去即可。(就一行)

    在这里插入图片描述

    在这里插入图片描述

    具体的配置文件修改情况以及说明情况,请转至基于PaddleDetection的绝缘子的缺陷检测查看
    另外,值得注意的是,coco_detection.yml的配置修改(位置是PaddleDetection/configs/datasets/coco_detection.yml),否则加载数据集失败,无法训练。
    在这里插入图片描述
    然后,输入程序开始训练。建议用第二条指令,可以边训练边评估,开启可视化。

    #** 注意: ** 使用默认配置训练需要设置--amp以避免显存溢出.
    #!python tools/train.py -c configs/ppyoloe/ppyoloe_crn_l_300e_coco.yml --amp
    #或者运行下面这条指令,边训练边评估,开启可视化
    !python tools/train.py -c configs/ppyoloe/ppyoloe_crn_l_300e_coco.yml --amp --eval --use_vdl=True --vdl_log_dir="output"
    
    • 1
    • 2
    • 3
    • 4

    训练完是这样的。
    在这里插入图片描述

    3.4 评估模型

    python -u work/PaddleDetection/tools/eval.py -c work/PaddleDetection/configs/ppyoloe/ppyoloe_crn_l_300e_coco.yml  \
    -o weights=/home/aistudio/output/ppyoloe_crn_l_300e_coco/best_model.pdparams
    
    • 1
    • 2

    点击可视化–>设置logdir下面的添加,找到work/PaddleDetection/output,点击确定即可
    在这里插入图片描述
    之后点击启动VisualDL服务,再点击进入VisualDL,在弹出网页的左上角点击标量数据。
    在这里插入图片描述
    就可以看到各种可视化的图,起会跟着训练的过程随时更新。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    Dutree:Linux 文件系统磁盘使用追踪工具
    css实现时钟
    PostgreSQL如何支持PL/Python过程语言
    Google guava之ListMultimap简介说明
    SSM汽车出租管理系统
    总结|8月日更挑战 - YOUR LIFE MATTERS
    C语言,关于字节对齐的一些问题
    VMware12下安装Windows7虚拟机---详细多图教程(沙盒环境)
    springboot集成Redis
    tomcat命令行下启动中文乱码(解释原理版)
  • 原文地址:https://blog.csdn.net/TGB__15__ZYB/article/details/134238790