Paddlepaddle使用自己的VOC数据集训练目标检测(0废话简易教程)

一 安装paddlepaddle和paddledection(略)

笔者使用的是自己的数据集

二 在dataset目录下新建自己的数据集文件,如下:

其中

xml文件内容如下:

另外新建一个createList.py文件:

# -- coding: UTF-8 --
import os
import os.path as osp
import re
import randomdevkit_dir = '../smoke/'
years = ['2007', '2012']def get_dir(devkit_dir,  type):return osp.join(devkit_dir, type)def walk_dir(devkit_dir):filelist_dir = get_dir(devkit_dir, 'ImageSets/Main')annotation_dir = get_dir(devkit_dir, 'annotations')img_dir = get_dir(devkit_dir, 'images')trainval_list = []test_list = []added = set()for _, _, files in os.walk(filelist_dir):for fname in files:img_ann_list = []if re.match('train\.txt', fname):img_ann_list = trainval_listelif re.match('val\.txt', fname):img_ann_list = test_listelse:continuefpath = osp.join(filelist_dir, fname)for line in open(fpath):name_prefix = line.strip().split()[0]if name_prefix in added:continueadded.add(name_prefix)ann_path = osp.join(annotation_dir, name_prefix + '.xml')img_path = osp.join(img_dir, name_prefix + '.jpg')assert os.path.isfile(ann_path), 'file %s not found.' % ann_pathassert os.path.isfile(img_path), 'file %s not found.' % img_pathimg_ann_list.append((img_path, ann_path))return trainval_list, test_listdef prepare_filelist(devkit_dir, output_dir):trainval_list = []test_list = []trainval, test = walk_dir(devkit_dir)trainval_list.extend(trainval)test_list.extend(test)random.shuffle(trainval_list)with open(osp.join(output_dir, 'trainval.txt'), 'w') as ftrainval:for item in trainval_list:ftrainval.write(item[0] + ' ' + item[1] + '\n')with open(osp.join(output_dir, 'test.txt'), 'w') as ftest:for item in test_list:ftest.write(item[0] + ' ' + item[1] + '\n')if __name__ == '__main__':prepare_filelist(devkit_dir, '../smoke')

一个data2tarin.py文件:

# -- coding: UTF-8 --
import os
import randomtrainval_percent = 0.9
train_percent = 0.9
xml = r"D:\Coding\PaddleDetection-release-2.7\dataset\smoke\annotations"
save_path = r"D:\Coding\PaddleDetection-release-2.7\dataset\smoke\ImageSets\Main"if not os.path.exists(save_path):os.makedirs(save_path)total_xml = os.listdir(xml)num = len(total_xml)
list = range(num)
tv = int(num * trainval_percent)
tr = int(tv * train_percent)
trainval = random.sample(list, tv)
train = random.sample(trainval, tr)print("train and val size", tv)
print("traub size", tr)
ftrainval = open(os.path.join(save_path, 'trainval.txt'), 'w')
ftest = open(os.path.join(save_path, 'test.txt'), 'w')
ftrain = open(os.path.join(save_path, 'train.txt'), 'w')
fval = open(os.path.join(save_path, 'val.txt'), 'w')for i in list:name = total_xml[i][:-4]+'\n'if i in trainval:ftrainval.write(name)if i in train:ftrain.write(name)else:fval.write(name)else:ftest.write(name)ftrainval.close()
ftrain.close()
fval.close()
ftest .close()

运行以上两个脚本,结果如图:

新建label_list.txt文件,内容如下,为标签文件:

三 新建smoke.yml文件

内容如下:

metric: VOC
map_type: 11point
num_classes: 4TrainDataset:name: VOCDataSetdataset_dir: dataset/smokeanno_path: trainval.txtlabel_list: label_list.txtdata_fields: ['image', 'gt_bbox', 'gt_class', 'difficult']EvalDataset:name: VOCDataSetdataset_dir: dataset/smokeanno_path: test.txtlabel_list: label_list.txtdata_fields: ['image', 'gt_bbox', 'gt_class', 'difficult']TestDataset:name: ImageFolderanno_path: dataset/smoke/label_list.txt

主要修改num_classes以及dataset_dir和anno_path

四 修改yolov3.yml文件,内容如下:

主要修改第一行

五 运行

六 大功告成

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

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

相关文章

探索水下低光照图像检测性能,基于DETR(DEtection TRansformer)模型开发构建海底生物检测识别分析系统

海底这类特殊数据场景下的检测模型开发相对来说比较少,在前面的博文中也有一些涉及,感兴趣的话可以自行移步阅读即可: 《尝试探索水下目标检测,基于yolov5轻量级系列模型n/s/m开发构建海底生物检测系统》 《基于YOLOv5C3CBAMCBA…

app逆向-平头哥框架ratel使用

文章目录 一、前言二、实现逻辑1、安装ratel手机端app2、使⽤电脑端进⾏感染目标app3、开发⼀个平头哥插件 一、前言 平头哥(ratel)是⼀个Android逆向分析⼯具套件,他提供⼀系列渐进式app逆向分析⼯具。同时平头哥也是⼀个app⼆次开发的沙箱…

Java语言概述(三)

Java 是一种通用的、面向对象的编程语言,支持并发编程、网络编程和多线程等特性。它由 Sun Microsystems 公司在 1995 年推出,并且随着其开源和跨平台的特性,Java 已经成为了当今最流行的编程语言之一。 Java 的主要特点包括: 跨…

【运维】站点可靠性工程介绍:研发,运维,SRE,Devops的关系

文章目录 1、什么是SRE2、SRE与研发、运维的区别 1、什么是SRE 站点可靠性工程(SRE) 是 IT 运维的软件工程方案。 SRE 团队使用软件作为工具,来管理系统、解决问题并实现运维任务自动化。 SRE 执行的任务以前通常由运维团队手动执行&#x…

ChatGPT遭受匿名苏丹组织DDoS攻击:网络安全在AI时代的新挑战

ChatGPT遭受匿名苏丹组织DDoS攻击:网络安全在AI时代的新挑战 最近,全球备受瞩目的AI对话机器人ChatGPT及其开发公司OpenAI遇到了一连串的服务中断和异常错误,这一系列问题背后似乎暗藏了分布式拒绝服务(DDoS)攻击的阴…

Huggingface镜像网站下载语言模型方法

通常通过镜像网站下载https://hf-mirror.com/。 在链接页面有介绍方法,对于不大的模型可以直接下载。这里介绍比较常用且方便的下载方法。 使用huggingface 官方提供的 huggingface-cli 命令行工具 安装(huggingface_hub、hf_transfer安装可以使用-i命…

Elasticsearch:创建自定义 ES Rally tracks 的分步指南

作者:Alejandro Snchez 按照这个综合教程学习如何制作个性化的 Rally tracks ES Rally 是什么?它的用途是什么? ES Rally 是一个用于在 Elasticsearch 上测试性能的工具,允许你运行和记录比较测试。 做出决策可能很困难&#x…

OpenCV统计函数之minMaxLoc和meanStdDev

在OpenCV中,minMaxLoc和meanStdDev是两个用于统计图像或数组中元素的基本特性的函数。这些统计函数对于图像处理、特征提取和数据分析非常有用。 minMaxLoc minMaxLoc函数用于查找数组或图像中的最小值和最大值,并可选地返回这些值的位置。这在处理图像…

Vue模版语法之属性绑定v-bind

双大括号不能在 HTML 属性中使用。想要响应式地绑定一个属性&#xff0c;应该使用 v-bind 指令 1. 使用v-bind绑定属性 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>新建页面</title><sc…

【Java中23种设计模式-单例模式--饿汉式】

加油&#xff0c;新时代打工人&#xff01; 简单粗暴&#xff0c;直接上代码。 23种设计模式定义介绍 Java中23种设计模式-单例模式 Java中23种设计模式-单例模式2–懒汉式线程不安全 Java中23种设计模式-单例模式2–懒汉式2线程安全 package mode;/*** author wenhao* dat…

一个PDF处理利器的.Net开源项目

在项目开发中&#xff0c;处理PDF文件是一个非常常见的需求&#xff0c;之前也推荐几个&#xff0c;今天继续给大家推荐一个强大且易于使用的开源库&#xff0c;专门用于处理PDF文件&#xff0c;它提供了一系列功能强大的工具&#xff0c;帮助开发人员轻松地解析、修改和创建PD…

【蓝桥杯基础】1.7星系炸弹

问题 在X星系的广袤空间中漂浮着许多X星人造“炸弹”&#xff0c;用来作为宇宙中的路标。 每个炸弹都可以设定多少天之后爆炸。 比如&#xff1a;阿尔法炸弹2015年1月1日放置&#xff0c;定时为15天&#xff0c;则它在2015年1月16日爆炸。 有一个贝塔炸弹&#xff0c;2014年…

基于物联网智慧公厕的多功能城市智慧驿站

在现代城市发展中&#xff0c;智慧化已经成为了一个不可或缺的趋势。而多功能城市智慧驿站&#xff0c;作为智慧城市建设的一部分&#xff0c;以物联网智慧公厕为基础&#xff0c;集合了诸多功能于一身&#xff0c;成为了城市中不容忽视的存在。多功能城市智慧驿站也称为轻松的…

Spring Cloud部署篇1——Jar包部署至CentOS云服务器

一、项目介绍 系统模块 com.mingink |--mingink-api // 接口模块 | └──mingink-api-system // 系统接口 |--mingink-common // 通用模块 | └──mingink-common-core // 系统接口 |--mingink-gateway…

shapely 笔记:STR TREE

数据结构笔记&#xff1a;R树-CSDN博客 1 基本介绍 使用Sort-Tile-Recursive (STR) 算法创建的仅查询的R-tree空间索引该树索引每个几何图形的边界框。树在初始化时直接构建&#xff0c;且一旦创建后不能添加或移除节点所有操作返回输入几何图形的索引边界框限于二维并且是轴…

前端常见面试题之vue2

文章目录 一、vue2中父子组件嵌套时的生命周期执行顺序是怎样的1. 挂载阶段2. 更新阶段3. 销毁阶段 二、vue组件通讯方式有哪些1. 父子组件通讯方式(1). Props 和 Events&#xff1a;父组件通过props向子组件传递数据&#xff0c;子组件通过事件向父组件传递数据。(2). $parent…

[word] word定时自动保存功能的作用是什么 #知识分享#学习方法#媒体

word定时自动保存功能的作用是什么 word定时自动保存功能的作用是什么 这是word提供的一个保护用户文档的功能&#xff0c;一般情况下是为了预防在未知原因的情况下&#xff0c;用户电脑关闭&#xff0c;或者不小关掉Word&#xff0c;导致正在使用的文档丢失&#xff0c;给用户…

nginx的功能以及运用

nginx与apache的对比 nginx优点 nginx使用场景 编译安装nginx过程 1.先清空opt文件夹 2.关闭防火墙&#xff0c;关闭防护 3 安装依赖包&#xff0c;可以通过本地yum去安装 首先就是挂载&#xff0c;随后切换到配置文件中修改 4本地配置文件配置内容 5 随后安装环境包 yum -y …

洛谷 P1241 括号序列 (Java)

洛谷 P1241 括号序列 (Java) 传送门&#xff1a;P1241 括号序列 题目&#xff1a; 括号序列 题目描述 定义如下规则&#xff1a; 空串是「平衡括号序列」若字符串 S S S 是「平衡括号序列」&#xff0c;那么 [ S ] \texttt{[}S\texttt] [S] 和 ( S ) \texttt{(}S\textt…

uniapp运动课程健身打卡系统微信小程序

考虑到实际生活中在我来运动管理方面的需要以及对该系统认真的分析,将系统分为小程序端模块和后台管理员模块&#xff0c;权限按管理员和用户这两类涉及用户划分。 (a) 管理员&#xff1b;管理员使用本系统涉到的功能主要有&#xff1a;首页、个人中心、用户管理、课程类别管理…