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

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 ETpath = '/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.1data_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.rhkb.cn/news/199708.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Windows 常用工具系列 11 -- 福昕PDF搜索高亮过的文本】

文章目录 福昕 PDF 搜索高亮过的文本 福昕 PDF 搜索高亮过的文本 在 pdf 文档阅读过程中,我们需要经常高亮一些文本,以方便下次阅读时找到重点。我这边使用的是 福昕PDF 阅读器,下面就介绍下如何在福昕阅读器中搜索已经高亮过的文本。

场景交互与场景漫游-交运算与对象选取(8-1)

交运算与对象选取 在面对大规模的场景管理时,场景图形的交运算和图形对象的拾取变成了一项基本工作。OSG作为一个场景管理系统,自然也实现了场景图形的交运算,交运算主要封装在osgUtil 工具中在OSG中,osgUtil是一个非常强有力的工…

python实战—核心基础4(超市购物小票随机抽奖程序) lv1

目录 一、核心代码解释 二、代码 三、运行截图 一、核心代码解释 1、random() 函数 描述 random() 方法返回随机生成的一个实数,它在[0,1)范围内。 语法 以下是 random() 方法的语法: import randomrandom.random() 注意:random()是不能直接访问…

OpenLDAP配置web管理界面PhpLDAPAdmin服务-centos9stream

之前已经发了一篇关于centos9下面配置openldap多主高可用集群的内容,不会配置ldap集群的请参考:服务器集群配置LDAP统一认证高可用集群(配置tsl安全链接)-centos9stream-openldap2.6.2-CSDN博客 这里跟着前篇文章详细说明如何配置…

在回调之间共享数据

可以在 App 中为 UI 组件编写回调函数,以指定用户与其交互时的行为方式。 在具有多个相互依赖的 UI 组件的 App 中,回调函数通常必须访问主 App 函数中定义的数据,或与其他回调函数共享数据。例如,如果创建一个具有列表框的 App&a…

.Net中Redis的基本使用

前言 Redis可以用来存储、缓存和消息传递。它具有高性能、持久化、高可用性、扩展性和灵活性等特点,尤其适用于处理高并发业务和大量数据量的系统,它支持多种数据结构,如字符串、哈希表、列表、集合、有序集合等。 Redis的使用 安装包Ser…

云计算赛项容器云2023搭建

部署容器云平台[5 分] 使 用 OpenStack 私 有 云 平 台 创 建 两 台 云 主 机 , 云 主 机 类 型 使 用 4vCPU/12G/100G 类型,分别作为 Kubernetes 集群的 Master 节点和 node 节点, 然后完成 Kubernetes 集群的部署,并完成 Istio …

【MySql】13- 实践篇(十一)

文章目录 1. 自增主键为什么不是连续的?1.1 自增值保存在哪儿?1.2 自增值修改机制1.2.1 自增值的修改时机1.2.2 自增值为什么不能回退? 1.3 自增锁的优化1.3.1 自增锁设计历史 2. Insert语句为何很多锁?2.1 insert … select 语句2.2 insert 循环写入2…

鸿蒙4.0真机调试踩坑

传言鸿蒙next版本将不再兼容Android,所以领导安排做下鸿蒙开发的调研工作。 鸿蒙开发指南其实已经非常的友好了。但是鸿蒙开发本身还是有些坑要踩,这篇文章主要讲了鸿蒙真机调试问题。 目前手上的真机为华为 nova6,处理器为麒麟990.鸿蒙系统…

AI绘画使用Stable Diffusion(SDXL)绘制三星堆风格的图片

一、前言 三星堆文化是一种古老的中国文化,它以其精湛的青铜铸造技术闻名,出土文物中最著名的包括青铜面具、青铜人像、金杖、玉器等。这些文物具有独特的艺术风格,显示了高度的工艺水平和复杂的社会结构。 青铜面具的巨大眼睛和突出的颧骨&a…

11.16~11.19绘制图表,导入EXCEL中数据,进行拟合

这个错误通常是由于传递给curve_fit函数的数据类型不正确引起的。根据你提供的代码和错误信息,有几个可能的原因: 数据类型错误:请确保ce_data、lg_data和product_data是NumPy数组或类似的可迭代对象,且其元素的数据类型为浮点数。…

C#,怎么修改(VS)Visual Studio 2022支持的C#版本

一些文字来自于 Microsoft . (只需要读下面的红色文字即可!) 1 C# 语言版本控制 最新的 C# 编译器根据项目的一个或多个目标框架确定默认语言版本。 Visual Studio 不提供用于更改值的 UI,但可以通过编辑 .csproj 文件来更改值。…

基于SSM的学院网站设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

4.3 Windows驱动开发:监控进程与线程对象操作

在内核中,可以使用ObRegisterCallbacks这个内核回调函数来实现监控进程和线程对象操作。通过注册一个OB_CALLBACK_REGISTRATION回调结构体,可以指定所需的回调函数和回调的监控类型。这个回调结构体包含了回调函数和监控的对象类型,还有一个A…

Camtasia2024年破解版安装包如何下载?

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

C进阶---文件操作

我们在日常使用电脑保存文件时,其目的就是为了便于以后查看、修改、更新等操作;保存在文件中可以使数据持久化,所以今天我们家里学习文件的相关操作。 一、文件 1.1什么是文件 磁盘上的文件是文件。 在程序设计中,文件一般分…

某60区块链安全之51%攻击实战学习记录

区块链安全 文章目录 区块链安全51%攻击实战实验目的实验环境实验工具实验原理攻击过程 51%攻击实战 实验目的 1.理解并掌握区块链基本概念及区块链原理 2.理解区块链分又问题 3.理解掌握区块链51%算力攻击原理与利用 4.找到题目漏洞进行分析并形成利用 实验环境 1.Ubuntu1…

基于RK3588全高端智能终端机器人主板

一、小尺寸板型设计 该款主板为小型板,尺寸仅为125*85mm,更小更紧凑,可完美适应各类高端智能自助终端; 二、八核高端处理器 采用RK3588S八核64位处理器,8nm LP制程,主频最高达2.4GHz,搭载Andr…

解决requests 2.28.x版本SSL错误:证书验证失败

1、问题背景 在使用requests 2.28.1版本时,我进行HTTP post传输报告负载时,由于SSL验证设置为True,请求失败,错误如下:(Caused by SSLError(SSLCertVerificationError(1, ‘[SSL: CERTIFICATE_VERIFY_FAILED] certifi…

对OpenAI CEO奥特曼突然被解雇事件的一些分析

今天也来凑个热闹,说说OpenAI的事。本来不想写的,但是看到自媒体又开始胡说八道,所以根据我自己得到的消息和理解说一说我的看法,这篇文章要是有个小姐姐解说录成视频,那肯定火了,但是我现在没资源&#xf…