VOC测试集和训练集



##################################
同学们,这个系列的文件不要直接就跟着我操作了,因为这个是踩坑的记录,不是教程,我只是将整个流程记录下来,让后面的同学操作的时候能够避开这些坑,希望你能将整个系列的操作流程看了一遍斟酌后进行操作
##################################

在上一节的虚拟机内
当数据集重新修改完成后

训练时要有测试集和训练集,那么在这里就需要使用代码将数据进行划分,放在ImageSets/Main文件夹下。代码如下,至于训练验证集和测试集的划分比例,以及训练集和验证集的划分比例,根据自己的数据情况决定。使用下面的代码进行划分:

移动到【/home/heying/darknet/scripts/VOCdevkit】
命名为VOC2021

将xml的路径再次修改,因为进行标注的主机合训练的主机是两个,所以标注过程生成的路径是不对的

编辑rename_xml.py文件

########此文件可将.xml中的路径进行修改##############import os
import os.path
from xml.etree.ElementTree import parse, Element# .xml文件地址
path = "/home/xiong/VOC/VOC_MAX/Annotations/"
# 得到文件夹下所有文件名称
files = os.listdir(path)
s = []
# 遍历文件夹
for xmlFile in files:# 判断是否是文件夹,不是文件夹才打开if not os.path.isdir(xmlFile):print(xmlFile)passpath = "/home/xiong/VOC/VOC_MAX/Annotations/"newStr = os.path.join(path, xmlFile)#最核心的部分,路径拼接,输入的是具体路径#得到.xml文件的根(也就是annotation)dom = parse(newStr)root = dom.getroot()#获得后缀.前的文件名(分离文件名和扩展名)part = os.path.splitext(xmlFile)[0]# 文件名+后缀part1 = part + '.jpg'# path里的新属性值:newStr1 = '/home/xiong/VOC/VOC_MAX/JPEGImages/' + part1#通过句柄找到path的子节点,然后给子节点设置内容root.find('path').text = newStr1  # #打印输出print('已经修改')dom.write(newStr, xml_declaration=True)pass#原文链接:https://blog.csdn.net/weixin_45392405/article/details/106679679

运行

可以看到路径修改成功

然后找到并打开set_txt.py文件
把VOC数据集转化成txt文件python
要注意代码高亮区域的路径要和你的文件路径对应好


#####################可以生成数据集需要的.txt文件#######################import os
import randomtrainval_percent = 1
train_percent = 0.5
xmlfilepath = '/home/xiong/VOC/VOC_MAX/Annotations'  #标注生成的文件夹
txtsavepath = '/home/xiong/VOC/VOC_MAX/ImageSets/Main'   #测试集,验证集,训练验证集等的存放文件夹
total_xml = os.listdir(xmlfilepath)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)ftrainval = open('/home/xiong/VOC/VOC_MAX/ImageSets/Main/trainval.txt', 'w')
#生成一个训练验证集ftest = open('/home/xiong/VOC/VOC_MAX/ImageSets/Main/test.txt', 'w')
#生成一个随机进行图片抽取来测试的文件ftrain = open('/home/xiong/VOC/VOC_MAX/ImageSets/Main/train.txt', 'w')
#生成一个训练集,进行深度训练学习fval = open('/home/xiong/VOC/VOC_MAX/ImageSets/Main/val.txt', 'w')
#生成一个验证集,当训练完后,进行准确率验证for i  in list:name=total_xml[i][:-4]+'\n'if i in trainval:ftrainval.write(name)ftrain.write(name)if i in train:g=0else:fval.write(name)ftest.write(name)#else:ftrainval.close()
ftrain.close()
fval.close()
ftest .close()


改完成后保存并退出

使用python3运行set_txt.py文件生成test.txt、train.txt、trainval.txt、val.txt。

python3 set_txt.py


可以查看效果


训练前的准备

打开在和VOCdevkit 同级的目录下的voc_label.py文件,修改相关配置
在文件中根据自身情况修改

#这里的参数使用命名文件夹的参数
sets=[('2021', 'train'),('2021', 'test'),('2021', ‘val’),('2021', ‘trainval’)]#使用的所有标签
classes = ["red", "green", "null"]
在修改所使用的标签文件,要注意标签的顺序

完成后使用python3运行voc_label.py

python3 voc_label.py



可以看到程序在路径中生成的文件与内容


trainval.txt、val.txt。文件,里面存有对应图片文件的绝对路径,训练时作为引用。


在 darknet/data 目录下建立 voc2021.names 的文件(文件名无所谓,后缀得是.names),内容是类名

touch voc2021.names


然后找到并修改 cfg/voc.data 文件,修改后如下所示:

classes= 3
train  = /home/heying/darknet/scripts/2021_train.txt
valid  = /home/heying/darknet/scripts/2021_test.txt
names = data/voc2021.names
backup = /home/heying/darknet/backup/

其中
【classes= 3】指标签的数量,本次流程为3个
【train = /home/heying/darknet/scripts/2021_train.txt】 刚生成的2021_train.txt的绝对路径
【valid = /home/heying/darknet/scripts/2021_test.txt】刚生成的2021_test.txt的绝对路径
【names = data/voc2021.names】刚设置的标签名称的文件
【backup = /home/heying/darknet/backup/】训练过程中权重的保存路径

完成后保存并退出


然后修改 cfg/yolov3-voc.cfg 文件
yolov3-voc.cfg解释说明

主要是 filters 和 classes 的调整
搜索yolo,有三个地方需要以下修改
classes就是本次训练的标签数量,这里便是3个
其中filters = 3*(classes数量+5)


以下注释的参数根据自身的需求进行修改,不过要注意【max_batches】参数是需要训练的总次数,这里我取5000次训练总数。

完成后保存并退出

yolov3的训练(五)darknet的VOC测试集和训练集以及训练前准备相关推荐

  1. 【AI-1000问】训练为什么要分测试集和验证集?

    往期视频(前往有三AI公众号观看) 为什么要分训练集和测试集呢? 在很多的书以及一些公开数据集中,都会将数据集分为训练集,验证集和测试集,看起来验证集和测试集并没有区别,为什么要分这两个呢? 作者/编 ...

  2. 文本分类训练集 测试集_【AI1000问】训练为什么要分测试集和验证集?

    9 往期视频 点击边框调出视频工具条 为什么要分训练集和测试集呢? 在很多的书以及一些公开数据集中,都会将数据集分为训练集,验证集和测试集,看起来验证集和测试集并没有区别,为什么要分这两个呢? 作者/ ...

  3. ubuntu16.04下使用YOLOV3训练自己做的VOC数据集(VOC数据集制作+模型训练步骤+训练参数解析和问题解决+训练日志可视化(loss、IOU)+模型测试(单张、摄像头、批量测试))

    前序 1.环境配置 请自行参考其他博客 本机环境 ubuntu16.04 python3 英伟达显卡驱动:nvidia-396 OpenCV3.4.5 CUDNN7.0.5 CUDA9.0 2.ubu ...

  4. mmdetection实战,训练扑克牌数据集(VOC格式)并测试计算mAP

    mmdetection实战,训练扑克牌数据集(VOC格式)并测试计算mAP 一.数据集准备 二.mmdetection的安装 三.修改相关文件 1. 修改class_names.py文件 2. 修改v ...

  5. linux下caffe-ssd在cuda10+python3.6下编译,训练VOC数据集和测试

    简介 之前源码编译安装了caffe,但是对于caffe-ssd依旧需要编译安装 . 个人环境 Ubuntu18.04, python3.6 CUDA 10.0, cuDNN 7.6.3 opencv3 ...

  6. YOLOX训练自己的数据集(VOC)

    代码 :GitHub 论文 :arxiv 参考: 训练coco格式数据 文章解析 https://www.zhihu.com/question/473350307 https://zhuanlan.z ...

  7. 【深度学习】【Python】【Widerface数据集】 转VOC格式,VOC 转YOLOv5格式,YOLOv5训练WiderFace数据集,检查yolo labels对不对

    文章目录 Widerface数据集转VOC格式 VOC 转YOLO格式 数据集的imageslisttxt YOLOv5训练 检查yolo labels对不对 并行训练 Widerface数据集转VO ...

  8. 一分钟教会您使用Yolov5训练自己的数据集并测试

    1. 下载YOLO项目代码 点击这里下载并解压YOLO的官方代码:https://github.com/ultralytics/yolov5/tree/v5.0 2. 环境安装 cd进入到下载的YOL ...

  9. R语言构建随机森林模型randomForest分类模型并评估模型在测试集和训练集上的效果(accuray、F1、偏差Deviance):随机森林在Bagging算法的基础上加入了列采样(分枝特征随机)

    R语言构建随机森林模型randomForest分类模型并评估模型在测试集和训练集上的效果(accuray.F1.偏差Deviance):随机森林在Bagging算法的基础上加入了列采样(分枝特征随机) ...

最新文章

  1. 【内网福音】如何离线部署Rancher
  2. python3-泊松分布
  3. 怎么预约鸿蒙系统,华为鸿蒙2.0系统-鸿蒙2.0系统预约-艾艾软件园
  4. Python:cv2.imread读入图片后返回NoneType的解决方案
  5. cacti监控java,Cacti监控tomcat的方法
  6. 朋友的身份证被骗子注册了支付宝开通了花呗,消费了三千被催债才知道花呗被盗如何处理?
  7. 计算机视觉CV中特征点提取SURF算法的学习笔记
  8. 2019-07-11 nginx 下网页显示乱码
  9. [No0000174]Spring常用注解(收藏大全)
  10. C#中使用listview的checkBoxs全选和取消全选
  11. [生存志] 第72节 夫差许越称臣
  12. java170道面试题汇总+详细解析
  13. 云时代的应用性能管理(APM)
  14. 首屏渲染优化性能优化
  15. 区块链在中国(3):区块链场景漫谈
  16. 【龙芯1B】:龙芯1B200字号修改程序(基于龙芯1B200)
  17. 机器学习_深度学习毕设题目汇总——肿瘤
  18. 家里宽带都200M了,为什么网速这么慢?简单设置一下
  19. 喵哈哈的日常选数问题
  20. 黄老板巡演票房连续走高 门票总收入接近三亿美元

热门文章

  1. bibtex 共生_游戏与音乐的共生
  2. fuz 1205(小鼠迷宫问题)
  3. MyBatis参数绑定
  4. java好听的名字_(男孩起名)李白诗中最唯美的三字名字推荐,李白诗中最唯美的三字名字取名方法 - Java伴我余生 - 宝宝起名网...
  5. win7无法打开无线网络服务器,笔记本win7系统无线网络连接受限制或无连接的解决方法...
  6. 《Windows 8 权威指南》——2.8 Metro版IE10,探测Windows 8 Metro应用的撒手锏
  7. 【数学知识】方差、标准差、均方差、均方误差区别总结
  8. 8 . STM32固件库介绍
  9. 网络协议 11 - Socket 编程(下):眼见为实耳听为虚
  10. nvidia-docker的安装