PP-PicoDet算法训练行人检测模型

news2024/10/4 22:06:54

PP-PicoDet算法训练行人检测模型

      • 1,效果图
      • 2,PP-PicoDet介绍
      • 3,使用飞浆框架训练模型
        • 1,准备好图片和对应的标注文件
        • 2,划分训练集和验证集
        • 3,vi label_list.txt
        • 4,目录结构
        • 5,修改配置文件
          • 1,picodet_s_320_voc.yml
          • 2,voc.yml
        • 6,训练模型
        • 7,导出模型
        • 8,模型推理,预测单张图片

1,效果图

在这里插入图片描述
step:300
3000图片

2,PP-PicoDet介绍

PP-PicoDet模型特点:
方案选择PP-PicoDet轻量化模型,主要看中PP-PicoDet体积小、速度快、精度较高的优势,非常适合本项目的部署环境和性能要求。同时,飞桨提供的预训练模型也可以最大程度上提升模型的收敛速度和精度。

3,使用飞浆框架训练模型

1,准备好图片和对应的标注文件
2,划分训练集和验证集

train_val.py

import os
import glob
import random
import xml.etree.ElementTree as ET

path = '/home/aistudio/PaddleDetection/datasets/per_voc'

config = {
    # Annotations path(Annotations 的文件夹路径)
    "Annotation":"/home/aistudio/PaddleDetection/datasets/per_voc/annotations",
    # JPEGImages path(JPEGImages 的文件夹路径)
    "JPEGImages":"/home/aistudio/PaddleDetection/datasets/per_voc/images",
}
# 划分数据集

# 数据划分比例
# (训练集+验证集)与测试集的比例,默认情况下 (训练集+验证集):测试集 = 9:1

# 按照比例划分数据集
train_per = 0.8
valid_per = 0.2
# test_per = 0.1

data_xml_list = glob.glob(os.path.join(config['Annotation'], '*.xml'))
data_jpg_list = glob.glob(os.path.join(config['JPEGImages'], '*.*'))
data_xml_list.sort()
data_jpg_list.sort()
# 生成label标签:
label = set()
for xml_path in data_xml_list:
        label = label | set([i.find('name').text for i in ET.parse(xml_path).findall('object')])
data_list=[]
for i,j in zip(data_jpg_list,data_xml_list):
    data_list.append(i+" "+j)
data_xml_list=data_list
print(data_xml_list)
random.seed(666)
random.shuffle(data_xml_list)
data_length = len(data_xml_list)

train_point = int(data_length * train_per)
train_valid_point = int(data_length * (train_per + valid_per))

# 生成训练集,验证集, 测试集(8 : 1 : 1)
train_list = data_xml_list[:train_point]
valid_list = data_xml_list[train_point:train_valid_point]
# test_list = data_xml_list[train_valid_point:]

 


# 写入文件中
ftrain = open('/home/aistudio/PaddleDetection/datasets/per_voc/trainval.txt', 'w')
fvalid = open('/home/aistudio/PaddleDetection/datasets/per_voc/valid.txt', 'w')
# ftest = open('./test.txt', 'w')
flabel = open('/home/aistudio/PaddleDetection/datasets/per_voc/label_list.txt', 'w')

for i in train_list:
        ftrain.write(i + "\n")
for j in valid_list:
        fvalid.write(j + "\n")
# for k in test_list:
#         ftest.write(k + "\n")
for l in label:
        flabel.write(l + "\n")
ftrain.close()
fvalid.close()
# ftest.close()
flabel.close()
# print("总数据量:{}, 训练集:{}, 验证集:{}, 测试集:{}, 标签:{}".format(len(data_xml_list), len(train_list), len(valid_list), len(test_list), len(label)))
print("总数据量:{}, 训练集:{}, 验证集:{}, 标签:{}".format(len(data_xml_list), len(train_list), len(valid_list), len(label)))
print("done!")
3,vi label_list.txt

写入标签:person

4,目录结构

在这里插入图片描述

5,修改配置文件
1,picodet_s_320_voc.yml
vi /home/aistudio/PaddleDetection/configs/picodet/legacy_model/picodet_s_320_voc.yml

.配置:
_BASE_:
  - '../../datasets/voc.yml'
  - '../../runtime.yml'
  - '_base_/picodet_esnet.yml'
  - '_base_/optimizer_300e.yml'
  - '_base_/picodet_320_reader.yml'

'../../datasets/voc.yml': 关于数据集的配置文件,包含有关VOC数据集的路径、类别信息和其他数据相关的设置。
'../../runtime.yml': 运行时的配置文件,包含有关硬件设置、分布式训练配置等信息。
'_base_/picodet_esnet.yml': 关于 PicODet 模型的架构设置,包含了使用的网络结构、激活函数、锚框设置等。
'_base_/optimizer_300e.yml': 有关优化器的配置,包含有关学习率、权重衰减等优化器相关的超参数设置。
'_base_/picodet_320_reader.yml': 有关数据读取器的配置,包含了数据增强、批次大小等与数据加载相关的设置。


pretrain_weights:
预训练模型路径

weights:
训练模型保存路径

可以通过调节 batch_size 调节模型的收敛速度
(根据自己的显卡算力调节,太大了gpu会内存溢出报错,太小了模型收敛会很慢)
在文件的末尾加上

TrainReader:
  batch_size: 256

2,voc.yml
vi /home/aistudio/PaddleDetection/configs/datasets/voc.yml

重要配置项:
在这里插入图片描述

6,训练模型
python tools/train.py \
-c configs/picodet/legacy_model/picodet_s_320_voc.yml  \
--use_vdl=true \
--vdl_log_dir=vdl_dir/person_voc_log \
--eval>person_voc.log 2>&1&
参数:
-c 指定配置文件
--use_vdl=true 使用VisualDL 可视化训练
--vdl_log_dir 指定VisualDL log路径
--eval 在训练过程中将对验证数据集上的模型进行评估
 >person_voc.log 2>&1&:这部分命令将标准输出(stdout)和标准错误(stderr)都重定向到一个名为 person_voc.log 的日志文件中。2>&1 确保将 stdout 和 stderr 结合并重定向到指定的日志文件中。末尾的 & 表示在后台运行命令,允许你继续在终端上进行其他任务。
7,导出模型
python tools/export_model.py \
-c configs/picodet/legacy_model/picodet_s_320_voc.yml \
-o weights=output/picodet_s_320_voc/best_model.pdparams \
--output_dir=inference_model
参数:
-c 指定配置文件
-o 模型文件路径
--output_dir 导出模型的存放路径
8,模型推理,预测单张图片
python deploy/python/infer.py \
--model_dir=inference_model/picodet_s_320_voc \
--output=output/test \
--image_file=output/32.jpg \
--threshold=0.5 --device=GPU
参数:
--model_dir 模型目录
--output 输出图片路径
--image_fil 预测图片路径
--threshold=0.5 设置了目标检测的置信度阈值。检测到的目标框的置信度必须大于这个阈值才会被输出
 --device=GPU 在GPU上进行推理

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

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

相关文章

Ubuntu文件系统损坏:The root filesystem on /dev/sda5 requires a manual fsck

前言 Ubuntu在启动过程中,经常会遇到一些开故障,导致设备无法正常开机,例如文件系统损坏等。 故障描述 Ubuntu系统启动过程中,出现以下文件系统损坏错误: 产生原因 该故障是由磁盘检测不能通过导致,可能是因…

WPS或Excel查找A列中有B列没有的值

就这一行代码: 在C列输入: IF(COUNTIF(B:B,A1)>0,"该行A列中值B列有","该行A列中值B列没有")

达梦数据库安装--注册服务类型错误

最近在学习达梦数据库,安装过程中遇到一点问题,做一下记录。 达梦数据库使用命令行的方式安装,最后一步为了用户管理及控制,需要把数据库服务注册为系统服务,在注册时出现以下错误: 在这我其实犯了一个自以…

Camtasia2024免费版mac电脑录屏软件

作为一个互联网人,没少在录屏软件这个坑里摸爬滚打。培训、学习、游戏、影视解说……都得用它。这时候没个拿得出手的私藏软件,还怎么混?说实话,录屏软件这两年也用了不少,基本功能是有但总觉得缺点什么,直…

CRM系统的客户细分有什么作用?

我们常常说,企业想要开展有针对性的营销活动,就需要进行客户细分。通过特定条件,将客户分为几类,从而对不同类型的客户提供不同的产品和服务。下面我们就针对这里来详细说说,CRM中客户细分是什么?如何细分客…

小程序开发平台源码系统 各行各业都可使用 功能强大 附带完整的搭建教程

当前,数字化转型已经成为各行各业的重要趋势,而小程序作为数字化转型的重要工具之一,具有广泛的应用前景。因此,我们开发了这个源码系统,以帮助各行各业快速开发出符合需求的小程序。 以下是部分代码示例:…

莫斯卡托·达斯蒂葡萄酒是庆祝活动的绝佳饮品首选

在阿斯蒂的山坡上种植莫斯卡托非常艰难,它们需要很长的生长期,在此期间葡萄非常容易受到虫害和疾病的影响,如灰腐病、霉变或浆果蛾。即使他们能在葡萄含糖量达到最佳水平的9月份到达收获季节,他们的产量也往往很低,因此…

Vue框架学习笔记——创建Vue实例、实例与容器对应关系

文章目录 创建Vue实例容器和Vue实例绑定容器中标签体的数据和实例中的数据动态绑定容器和实例一一对应 创建Vue实例 HTML文件中写下述代码&#xff0c;可以消除生产提示&#xff0c;创建Vue实例 <script type"text/javascript">Vue.config.productionTip fal…

【2021集创赛】IEEE杯一等奖:一种28GHz高能效Outphasing PA设计

本作品参与极术社区组织的有奖征集|秀出你的集创赛作品风采,免费电子产品等你拿~活动。 团队介绍 参赛单位&#xff1a;电子科技大学 队伍名称&#xff1a;PA调得队 指导老师&#xff1a;王政 参赛队员&#xff1a;倪梦虎、杨茂旋、张振翼 总决赛奖项&#xff1a;一等奖 1.项…

Dirac‘s BRA and KET notation

from kets to bras expansions the operater matrix elements adjoint of a linear operator Hermitian and Uniraty Operators Hermitian operator defination:

华为防火墙 Radius认证

实现的功能&#xff1a;本地内网用户上网时必须要进行Radius验证&#xff0c;通过后才能上网 前置工作请按这个配置&#xff1a;华为防火墙 DMZ 设置-CSDN博客 Windows 服务器安装 Radius 实现上网认证 拓扑图如下&#xff1a; 一、服务器配置 WinRadius 1、安装WinRadius …

Lightsail VPS 实例在哪些方面胜过 EC2 实例?

文章作者&#xff1a;Libai 引言 Lightsail VPS 实例和 EC2 实例是云计算领域中两种受欢迎的技术。虽然两者都提供虚拟服务器解决方案&#xff0c;但了解 Lightsail VPS 实例在哪些方面胜过 EC2 实例非常重要。在本文中&#xff0c;我们将探讨这两种技术之间的关键区别&#x…

【前端】前端监控⊆埋点

文章目录 前端监控分为三个方面前端监控流程异常监控常见的错误捕获方法主要是 try / catch 、window.onerror 和window.addEventListener 等。Promise 错误Vue 错误React 错误 性能监控用户行为监控常见的埋点方案来源 前端监控分为三个方面 异常监控&#xff08;监控前端页面…

如何选择示波器?

简介 对于很多工程师来讲&#xff0c;从市场中上百款不同价格和规格的各种型号的示波器中&#xff0c;选择一台新示波器是一件很挠首的事情。本文就旨在指引你拨开迷雾&#xff0c;希望能帮助你避免付出昂贵的代价。 重中之重 选择示波器的第一步不是要看那些示波器的广告和规…

Lombok注解式简化开发

Lombok&#xff08;发音为"lombk"&#xff09;是一种Java库&#xff0c;它通过注解的方式来简化Java代码的编写。它提供了一组注解&#xff0c;用于在编译时生成代码&#xff0c;减少了开发人员需要手动编写的样板代码&#xff0c;提高了代码的简洁性和可读性。 Lom…

【三种加载自定义控制器的方式 Objective-C语言】

一、关于这个手动创建Window呢,给大家说完了 1.但是呢,要给大家补充一个东西, 有时候,有的框架,可能会用到什么东西呢,我写到下面: [UIApplication sharedApplication] 什么东西,是不是应用程序对象, 然后呢,keyWindow 是不是拿到它的主窗口, 然后呢,add什么东西…

2013年12月2日 Go生态洞察:Go 1.2的测试覆盖率工具

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

Find My自行车|苹果Find My技术与自行车结合,智能防丢,全球定位

自行车&#xff0c;这项古老而简单的交通工具&#xff0c;近年来在中国经历了一场令人瞩目的复兴。从城市的街头巷尾到乡村的田园小路&#xff0c;自行车成了一种新的生活方式&#xff0c;一个绿色出行的选择。中国的自行车保有量超过两亿辆&#xff0c;但是自行车丢失事件还是…

java算法学习索引之数组矩阵问题

一 将正方形矩阵顺时针转动90 给定一个NN的矩阵matrix&#xff0c;把这个矩阵调整成顺时针转动90后的形式。 顺时针转动90后为&#xff1a; 【要求】额外空间复杂度为O&#xff08;1&#xff09;。 public void rotate(int[][] matrix) {int tR 0; // 左上角行坐标int tC 0;…

2023年中国AI大模型行业发展趋势分析:未来发展将走向通用化和专用化并行[图]

AI大模型是AI预训练大模型的简称&#xff0c;通过在大规模数据上进行预训练&#xff0c;无需大量微调即可支持各种应用&#xff0c;具备多层神经网络结构、高级优化算法和强大计算资源&#xff0c;显著提升了AI的通用性和实用性。 AI大模型特点及意义 资料来源&#xff1a;共研…