PASCAL VOC2012类型的数据集生成train.txt\val.txt等文件

PASCAL VOC 2012

图像分割经常要用的到这个数据集,我是自己做的数据集,但也仿照了PASCAL VOC2012的格式,在数据中,需要把所有图片放在一个文件夹中,mask放在另一个文件夹中,然后train.txt等文件里面有很多文件名,决定了哪些图片用于train,哪些用于val。

要生成的txt

train.txt
val.txt
test.txt
trainval.txt(这个是train和val放在一起的)
分的思路是从全部文件中,先分出trainval,然后再从trainval中,分出val,这样train、val、test就都有了。

代码

import os
import random

# 设置图片路径和txt存放的路径
file_path = r'/home/rtx2080ti/SISnet/pytorch-deeplab-xception-master/1part_dataset/JPEGImages'
saveBasePath = r'/home/rtx2080ti/SISnet/pytorch-deeplab-xception-master/1part_dataset/ImageSets/Segmentation/'

# 设置数据集比例,其中trainval是指train+val
train_percent = 0.6
val_percent = 0.2
test_percent = 0.2                                   # 其实这个数字就用不到

# 求出数据总的数目
total_image = os.listdir(file_path)                  # 将文件名存为一个列表,这时是包含拓展名的
num = len(total_image)                               # 总的文件数
list = range(num)

# 求出各部分的数目
train_number = int(num * train_percent)
val_number = int(num * val_percent)
test_number = int(num * test_percent)                # 这个数字也用不到其实
trainval_number = int(train_number + val_number)

# 各部分的样本
trainval = random.sample(list, trainval_number)      # 从总的数据集中,先挑train+val,再从train+val中,挑出train
train = random.sample(trainval, train_number)
print(trainval)
print(train)

# 确认数据集各部分的数目
print("train加val的数目", trainval_number)
print("train的数目", train_number)

# 建立每部分的txt
ftrainval = open(os.path.join(saveBasePath, 'trainval.txt'), 'w')
ftest = open(os.path.join(saveBasePath, 'test.txt'), 'w')
ftrain = open(os.path.join(saveBasePath, 'train.txt'), 'w')
fval = open(os.path.join(saveBasePath, 'val.txt'), 'w')

# 进行写文件名
for i in list:
    name = total_image[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)

# 关闭txt文件
ftrainval.close()
ftrain.close()
fval.close()
ftest.close()
  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Yolov5是一个目标检测算法,Pascal VOC2012是一个广泛使用的目标检测数据集。要在Yolov5上训练Pascal VOC2012数据集,你需要完成以下步骤: 1. 下载数据集:你可以从Pascal VOC官方网站上下载VOC2012数据集。确保下载包含图像和注释的文件。 2. 准备数据:解压下载的数据集文件。你会得到一个包含图像和注释的文件夹。将这些文件夹拷贝到Yolov5的数据文件夹中。 3. 设置标签文件:在Yolov5的数据文件夹中,创建一个名为"voc2012.yaml"的文件。在该文件中,定义类别数量、类别名称和对应的ID。 4. 创建训练/验证集列表:在Yolov5的数据文件夹中,创建一个名为"train.txt"的文件,并将训练集图像的路径写入其中。同样,在该文件夹中创建一个名为"val.txt"的文件,并将验证集图像的路径写入其中。 5. 修改配置文件:在Yolov5的模型文件夹中,复制"yolov5s.yaml"并将其重命名为"yolov5s_voc2012.yaml"。在该文件中,修改类别数量、类别名称和对应的ID,并将训练/验证集列表文件的路径更新为上一步创建的文件路径。 6. 开始训练:使用Yolov5的训练命令行工具,在终端中运行命令开始训练模型。例如,可以使用以下命令开始训练一个Yolov5小模型: ``` python train.py --img 640 --batch 16 --epochs 100 --data ./data/voc2012.yaml --cfg ./models/yolov5s_voc2012.yaml --weights '' --name yolov5s_voc2012 ``` 请根据自己的需求调整命令中的参数。 7. 模型评估和测试:训练完成后,你可以使用训练得到的模型进行评估和测试。通过运行命令,你可以在验证集上评估模型的性能,或者在新图像上测试模型的目标检测能力。 这些步骤应该可以帮助你在Yolov5上训练Pascal VOC2012数据集。记得根据自己的需求调整参数和配置文件。祝你成功!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值