当前位置: 首页 > news >正文

飞桨平台搭建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

此时程序被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 = contenttext = 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,在弹出网页的左上角点击标量数据。
在这里插入图片描述
就可以看到各种可视化的图,起会跟着训练的过程随时更新。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章:

飞桨平台搭建PP-YOLOE模型

一、创建项目 此博客仅是运行PP-YOLOE源码&#xff0c;这里以变压器渗漏数据集为例COCO数据集太大了&#xff0c;跑不动&#xff0c;V100训练预估计得7天左右&#xff0c;即便是A100也得4天半&#xff0c;变压器渗漏油数据集跑一个小时左右&#xff0c;还可以接受&#xff0c;…...

Js重点内容

一&#xff0c;什么是js javascript是运行在客户端&#xff08;浏览器&#xff0c;可预览&#xff09;的编程语言 二&#xff0c;主要的功能 用来给静态页&#xff08;html网页&#xff09;增加一些动态功能&#xff08;比如轮播图、tab切换&#xff09; 三&#xff0c;应用…...

图形化ping工具gping

一、介绍 gping能够以折线图的方式&#xff0c;实时展示 ping 的结果&#xff0c;支持 Windows、Linux 和 macOS 操作系统。并且支持多个目标同时Ping同时展示折线图方便对比。下面扩展一下ICMP及ICMP隧道。 ICMP消息结构&#xff1a; ICMP消息是由一个类型字段、一个代码字段、…...

快速安装虚拟机centos7.5

vbox 快速导入安装centos7.5 环境准备 vbox安装&#xff08;下载地址&#xff09; ova镜像&#xff08;下载地址&#xff09;&#xff08;默认是192.168.56.10 加nat网卡&#xff09; 链接&#xff1a;https://pan.baidu.com/s/164Iprh_80HCQmKCU6V-RTw 提取码&#xff1a;if…...

2023.11.4 Idea 配置国内 Maven 源

目录 配置国内 Maven 源 重新下载 jar 包 配置国内 Maven 源 <mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf> …...

DAY11 字符串处理函数

1.测字符串长度函数 头文件&#xff1a; #include <string.h> 函数定义&#xff1a; size_t strlen(const char *s); 函数功能&#xff1a; 测字符指针 s 指向的字符串中字符的个数&#xff0c;不包括 ’\0’ void fun01() {char *num "hello";int len …...

Web自动化测试 —— PageObject设计模式!

一、page object 模式简介 1.1、传统 UI 自动化的问题 无法适应 UI 频繁变化无法清晰表达业务用例场景大量的样板代码 driver/find/click 二、page object 设计原则 2.1、POM 模式的优势 降低 UI 变化导致的测试用例脆弱性问题让用例清晰明朗&#xff0c;与具体实现无关 2.…...

七月论文审稿GPT第2版:从Meta Nougat、GPT4审稿到Mistral、LongLora

前言 如此前这篇文章《学术论文GPT的源码解读与微调&#xff1a;从chatpaper、gpt_academic到七月论文审稿GPT》中的第三部分所述&#xff0c;对于论文的摘要/总结、对话、翻译、语法检查而言&#xff0c;市面上的学术论文GPT的效果虽暂未有多好&#xff0c;可至少还过得去&am…...

Unreal Engine 学习笔记 (1)—— 日夜交替

1.创建关卡 文件新建关卡空白关卡保存关卡&#xff08;命名为NewWorld&#xff09; 2.创建蓝图类 创建蓝图类&#xff08;继承自Actor&#xff09; 命名为SunAndMoon 3.编辑SunAndMoon蓝图类 添加SkyAtmosphere添加SkyLight添加DirectionalLight将DirectionalLight重命名为…...

leetcode:189. 轮转数组(python3解法)

难度&#xff1a;中等 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4]解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3…...

基于PHP + MySQL实现的文章内容管理系统源码+数据库,采用前后端分离的模板和标签化方式

文章内容管理系统 dc-article是一个通用的文章内容管理系统&#xff0c;基于开源的caozha-admin开发&#xff0c;采用前后端分离的模板和标签化方式&#xff0c;支持文章内容管理、栏目分类管理、评论管理、友情链接管理、碎片管理、远程图片获取器等功能。可以使用本系统很轻…...

这可能是全网最晚的低代码技术总结

低代码的发展一向结伴着质疑前行&#xff0c;一些人认为低代码平台限制了开发人员的创新能力&#xff0c;使得开发过程变得过于简单&#xff0c;缺乏深度的定制和灵活性。他们担心&#xff0c;低代码平台可能只适合于简单的应用程序&#xff0c;无法满足复杂业务需求。另一面&a…...

leetcode2054

leetcode 2054 #include <iostream> #include <vector> #include <tuple> #include <algorithm>using namespace std;struct Event {// 时间戳int ts;// op 0 表示左边界&#xff0c;op 1 表示右边界int op;int val;Event(int _ts, int _op, int _v…...

c面向对象编码风格(上)

面向对象和面向过程的基本概念 面向对象和面向过程是两种不同的编程范式&#xff0c;它们在软件开发中用于组织和设计代码的方式。 面向过程编程&#xff08;Procedural Programming&#xff09;是一种以过程&#xff08;函数、方法&#xff09;为核心的编程方式。在面向过程…...

【星海出品】VUE(六)

插槽Slots 传递属性 attribute App,vue <script> import SlotsBase from "./components/SlotsBase.vue" import SlotsTow from "./components/SlotsTow.vue" export default {components:{SlotsBase,SlotsTow},data(){return{message: "父集 m…...

华为政企闪存存储产品集

产品类型产品型号产品说明 maintainProductOceanStor Dorado 2000 SAS 128GB华为OceanStor Dorado 2000是一款简单、可靠、绿色的全闪存存储系统&#xff0c;极简部署、智能运维、轻量便捷&#xff0c;功能齐全&#xff0c;广泛适用于虚拟化、数据库、办公自动化、分支机构等…...

【项目源码】反编译Java字节码生成源码

【项目源码】反编译Java字节码生成源码 文章目录 【项目源码】反编译Java字节码生成源码参考资料一、什么是反编译&#xff1f;二、反编译Java字节码文件1. &#xff08;不一定有效&#xff09; 使用IDEA提供的插件 - Java Bytecode Decomplier2. &#xff08;推荐&#xff09;…...

技术分享 | 测试人员必须掌握的测试用例

测试用例&#xff08;Test Case&#xff09;是为特定的目的而设计的一组测试输入、执行条件和预期结果的文档。它的作用其实就是为了测试是否满足某个特定需求。测试用例是指导测试工作进行的依据。 测试用例的组成 标准的测试用例通常由以下几个模块组成&#xff1a; 用例编…...

Rabbit的高可用机制

RabbitMQ是一个消息中间件&#xff0c;提供了多种高可用机制来确保系统在出现故障时仍能保持可用性。以下是RabbitMQ的一些高可用机制&#xff1a; 镜像队列&#xff08;Mirrored Queues&#xff09;&#xff1a; 作用&#xff1a; 镜像队列可以在集群中复制队列的消息到多个节…...

函数调用指令, 返回机制分析(x86_64)

预备 #include <stdio.h>int addDetail(int a, int b) {return a b; }int add(int a, int b) {int c;c addDetail(a, b);return c; }int main(int argc, char *argv[]) {int sum;sum add(3, 5);printf("sum %d\n", sum);return 0; }汇编 main add addDeta…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...