飞桨平台搭建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源码,这里以变压器渗漏数据集为例COCO数据集太大了,跑不动,V100训练预估计得7天左右,即便是A100也得4天半,变压器渗漏油数据集跑一个小时左右,还可以接受,…...
Js重点内容
一,什么是js javascript是运行在客户端(浏览器,可预览)的编程语言 二,主要的功能 用来给静态页(html网页)增加一些动态功能(比如轮播图、tab切换) 三,应用…...
图形化ping工具gping
一、介绍 gping能够以折线图的方式,实时展示 ping 的结果,支持 Windows、Linux 和 macOS 操作系统。并且支持多个目标同时Ping同时展示折线图方便对比。下面扩展一下ICMP及ICMP隧道。 ICMP消息结构: ICMP消息是由一个类型字段、一个代码字段、…...
快速安装虚拟机centos7.5
vbox 快速导入安装centos7.5 环境准备 vbox安装(下载地址) ova镜像(下载地址)(默认是192.168.56.10 加nat网卡) 链接:https://pan.baidu.com/s/164Iprh_80HCQmKCU6V-RTw 提取码: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.测字符串长度函数 头文件: #include <string.h> 函数定义: size_t strlen(const char *s); 函数功能: 测字符指针 s 指向的字符串中字符的个数,不包括 ’\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 变化导致的测试用例脆弱性问题让用例清晰明朗,与具体实现无关 2.…...
七月论文审稿GPT第2版:从Meta Nougat、GPT4审稿到Mistral、LongLora
前言 如此前这篇文章《学术论文GPT的源码解读与微调:从chatpaper、gpt_academic到七月论文审稿GPT》中的第三部分所述,对于论文的摘要/总结、对话、翻译、语法检查而言,市面上的学术论文GPT的效果虽暂未有多好,可至少还过得去&am…...
Unreal Engine 学习笔记 (1)—— 日夜交替
1.创建关卡 文件新建关卡空白关卡保存关卡(命名为NewWorld) 2.创建蓝图类 创建蓝图类(继承自Actor) 命名为SunAndMoon 3.编辑SunAndMoon蓝图类 添加SkyAtmosphere添加SkyLight添加DirectionalLight将DirectionalLight重命名为…...
leetcode:189. 轮转数组(python3解法)
难度:中等 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 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是一个通用的文章内容管理系统,基于开源的caozha-admin开发,采用前后端分离的模板和标签化方式,支持文章内容管理、栏目分类管理、评论管理、友情链接管理、碎片管理、远程图片获取器等功能。可以使用本系统很轻…...
这可能是全网最晚的低代码技术总结
低代码的发展一向结伴着质疑前行,一些人认为低代码平台限制了开发人员的创新能力,使得开发过程变得过于简单,缺乏深度的定制和灵活性。他们担心,低代码平台可能只适合于简单的应用程序,无法满足复杂业务需求。另一面&a…...
leetcode2054
leetcode 2054 #include <iostream> #include <vector> #include <tuple> #include <algorithm>using namespace std;struct Event {// 时间戳int ts;// op 0 表示左边界,op 1 表示右边界int op;int val;Event(int _ts, int _op, int _v…...
c面向对象编码风格(上)
面向对象和面向过程的基本概念 面向对象和面向过程是两种不同的编程范式,它们在软件开发中用于组织和设计代码的方式。 面向过程编程(Procedural Programming)是一种以过程(函数、方法)为核心的编程方式。在面向过程…...
【星海出品】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是一款简单、可靠、绿色的全闪存存储系统,极简部署、智能运维、轻量便捷,功能齐全,广泛适用于虚拟化、数据库、办公自动化、分支机构等…...
【项目源码】反编译Java字节码生成源码
【项目源码】反编译Java字节码生成源码 文章目录 【项目源码】反编译Java字节码生成源码参考资料一、什么是反编译?二、反编译Java字节码文件1. (不一定有效) 使用IDEA提供的插件 - Java Bytecode Decomplier2. (推荐)…...
技术分享 | 测试人员必须掌握的测试用例
测试用例(Test Case)是为特定的目的而设计的一组测试输入、执行条件和预期结果的文档。它的作用其实就是为了测试是否满足某个特定需求。测试用例是指导测试工作进行的依据。 测试用例的组成 标准的测试用例通常由以下几个模块组成: 用例编…...
Rabbit的高可用机制
RabbitMQ是一个消息中间件,提供了多种高可用机制来确保系统在出现故障时仍能保持可用性。以下是RabbitMQ的一些高可用机制: 镜像队列(Mirrored Queues): 作用: 镜像队列可以在集群中复制队列的消息到多个节…...
函数调用指令, 返回机制分析(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…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
Leetcode33( 搜索旋转排序数组)
题目表述 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 < k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...
面试高频问题
文章目录 🚀 消息队列核心技术揭秘:从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"?性能背后的秘密1.1 顺序写入与零拷贝:性能的双引擎1.2 分区并行:数据的"八车道高速公路"1.3 页缓存与批量处理…...
基于单片机的宠物屋智能系统设计与实现(论文+源码)
本设计基于单片机的宠物屋智能系统核心是实现对宠物生活环境及状态的智能管理。系统以单片机为中枢,连接红外测温传感器,可实时精准捕捉宠物体温变化,以便及时发现健康异常;水位检测传感器时刻监测饮用水余量,防止宠物…...
