飞桨平台搭建PP-YOLOE模型

news2024/11/26 4:41:51

一、创建项目

此博客仅是运行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

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

#安装PaddleDetection依赖
!pip install -r /home/aistudio/work/PaddleDetection/requirements.txt
#编译安装paddledet
%cd work/PaddleDetection
!python setup.py install

#安装其他依赖
from PIL import Image  
import matplotlib.pyplot as plt
import numpy as np
import os 
import random
#测试安装是否成功,最后输出OK,说明编译安装成功
!python ppdet/modeling/tests/test_architectures.py

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

!pip install pycocotools

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')

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

使用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
!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 ..

这个是标准的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"

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1179240.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue3生命周期源码详解

钩子函数的特点 Vue 生命周期钩子函数是在组件生命周期中执行的特定函数。 这些钩子函数允许你在组件不同的生命周期阶段插入自定义的逻辑代码。 Vue 提供了一组预定义的生命周期钩子函数&#xff0c;每个钩子函数在组件生命周期的不同阶段被调用。 源码中如何注册、实现钩子函…

cad绘图模板建立

都设置好后保存为文件&#xff0c;收藏好&#xff0c;下次打开即可使用设置好的样式&#xff0c;完成后另存为新的文件名即可 1.f7关闭格栅 2.ds草图设置 3.图纸不能缩小&#xff1a;格式——图形界限—— 4.un单位设置 5.标注样式设置&#xff1a;d 完成后置为当前 6. st…

docker存储卷

docker存储卷 COW机制 Docker镜像由多个只读层叠加而成&#xff0c;启动容器时&#xff0c;Docker会加载只读镜像层并在镜像栈顶部添加一个读写层。 如果运行中的容器修改了现有的一个已经存在的 文件&#xff0c;那么该文件将会从读写层下面的只读层复制到读写层&#xff0…

5米DEM高程数据分析和对比

数字高程模型&#xff08;DEM&#xff09;是应用最广泛的地理信息数据之一&#xff0c;是进行三维空间处理和地形分析的数据基础。每个行业数据精度要求不一样&#xff0c;很多行业使用公开免费的90米和30米分辨率DEM就够了。而城市规划、交通线路规划、地质灾害防控、城区地籍…

【QT】 Qt自定义ui控件

在使用Qt的ui设计时&#xff0c;Qt为我们提供了标准的窗口控件&#xff0c;但是在很多复杂工程中&#xff0c;标准窗口控件并不能满足所有的需求&#xff0c;这时就需要我们自定义控件。我们自定义的类既可以作为独立的窗口显示&#xff0c;又可以作为一个控件显示。 我们要实现…

Spring相关

SpringBoot自动装配 阿里云登录 - 欢迎登录阿里云&#xff0c;安全稳定的云计算服务平台 Spring相关 阿里云登录 - 欢迎登录阿里云&#xff0c;安全稳定的云计算服务平台 常用设计模式 双亲委派 Java虚拟机定义了三个主要的类加载器: 1、启动类加载器 2、扩展类加载器 …

python教程:打印心型图案 九九乘法表 三角形 金字塔 圣诞树 倒三角形 菱形

# 打印九九乘法口诀表 for i in range(1, 10): # 乘法表的行、起始值从1开始for j in range(1, i 1): # 表示每一行的表达式、从1开始、到j1print({}*{}{}.format(j, i, i * j), end ) # 输出语句{}占位、输出表达式print( )# 打印金字塔&#xff08;正三角形&#xff09; …

web3 dapp React项目引入 antd 对 balance 用户token信息组件进行样式改造

好 上文 web3 React dapp中编写balance组件从redux取出并展示用户资产 我们简单处理了用户资产的展示 那么 我们继续 先启动 ganache 环境 终端输入 ganache -d然后 打开我们的项目 将合约发布到区块链上 truffle migrate --reset然后 我们启动项目 确认一切正常 还原到上文…

wangeditor富文本编辑器的使用(vue)

官网 官方demo 参考 安装 yarn add wangeditor/editor yarn add wangeditor/editor-for-vue 封装的富文本组件 <template><div style"border: 1px solid #ccc"><Toolbarstyle"border-bottom: 1px solid #ccc":editor"editorRef"…

P02项目(学习)

★ P02项目 项目描述&#xff1a;安全操作项目旨在提高医疗设备的安全性&#xff0c;特别是在医生离开操作屏幕时&#xff0c;以减少非授权人员的误操作风险。为实现这一目标&#xff0c;我们采用多层次的保护措施&#xff0c;包括人脸识别、姿势检测以及二维码识别等技术。这些…

工程压缩与解压缩

很多工程师在完成一个电气工程后&#xff0c;会遇到一些问题&#xff0c;例如&#xff1a;在SOLIDWORKSElectrical 中如何把做好的工程发送给别的工程师&#xff0c;或者更换了电脑如何把旧电脑的工程转移到新电脑 上&#xff1b;有时候&#xff0c;工程师也有可能会遇到解压工…

Redis概述和安装

&#x1f388;个人公众号:&#x1f388; :✨✨✨ 可为编程✨ &#x1f35f;&#x1f35f; &#x1f511;个人信条:&#x1f511; 知足知不足 有为有不为 为与不为皆为可为&#x1f335; &#x1f349;本篇简介:&#x1f349; 本篇详细阐述了Redis概述和安装&#xff0c;如有出入…

经典OJ题:找环节点——代码解析

题目&#xff1a; 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测…

【每日一题】统计范围内的元音字符串数

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;遍历 其他语言python3 写在最后 Tag 【遍历】【数组】【2023-11-07】 题目来源 2586. 统计范围内的元音字符串数 题目解读 统计范围内的元音字符串数。 解题思路 方法一&#xff1a;遍历 遍历下标在 [left, right]…

用循环结构程序自动化计算——计数循环

用循环结构程序自动化计算——计数循环 低阶目标&#xff1a; 利用for循环结构来完成已知次数的自动化处理&#xff0c;掌握计数循环结构应用方法 高阶目标&#xff1a; 学会利用for循环解决生活中的实际问题 用循环结构程序自动化计算——计数循环 用循环结构程序自动化计算…

Leetcode48旋转图像

思路&#xff1a;找规律 方法一、一般辅助数组解法 行列转换&#xff0c;第一行变到第三列&#xff0c;第二行变到第二列&#xff0c;第三行变到第一列 matrix[row][col] matrix[col][n-row-1] 然后复制回原数组 class Solution {public void rotate(int[][] matrix) {in…

第十二章 Python正则表达式

系列文章目录 第一章 Python 基础知识 第二章 python 字符串处理 第三章 python 数据类型 第四章 python 运算符与流程控制 第五章 python 文件操作 第六章 python 函数 第七章 python 常用内建函数 第八章 python 类(面向对象编程) 第九章 python 异常处理 第十章 python 自定…

独立键盘接口设计(Keil+Proteus)

前言 软件的操作参考这篇博客。 LED数码管的静态显示与动态显示&#xff08;KeilProteus&#xff09;-CSDN博客https://blog.csdn.net/weixin_64066303/article/details/134101256?spm1001.2014.3001.5501实验&#xff1a;用4个独立按键控制8个LED指示灯。 按下k1键&#x…

VB.NET—DataGridView控件教程详解

目录 前言: 过程: 第一步: 第二步: 第三步: 第四步: 第五步&#xff1a; 番外篇: 总结: 前言: DataGridView是.NET FormK中的一个Windows窗体控件&#xff0c;它提供了一个可视化的表格控件&#xff0c;允许用户以表格形式显示和编辑数据。它通常用于显示和编辑数据库…

50基于matlab的传统滤波、Butterworth滤波、FIR、移动平均滤波、中值滤波、现代滤波、维纳滤波、自适应滤波、小波变换

基于matlab的传统滤波、Butterworth滤波、FIR、移动平均滤波、中值滤波、现代滤波、维纳滤波、自适应滤波、小波变换&#xff0c;七种滤波方法&#xff0c;可替换自己的数据进行滤波&#xff0c;程序已调通&#xff0c;可直接运行。 50matlabButterworth滤波 (xiaohongshu.com)…