生成训练txt文件

生成训练txt文件



一、根据文件夹名字生成

文件夹的命名为标记

import os
import numpy as np

root = r"C:\Users\hq\Desktop\HoldingObject\pokemon"

#构建所有文件名的列表,dir为label
filename = []
#label = []
dirs = os.listdir(root)
for dir in dirs:
    dir_path = root + '\\' + dir
    names = os.listdir(dir_path)
    for n in names:
        filename.append(dir_path + '\\' + n + '\t' + dir)

#打乱文件名列表
np.random.shuffle(filename)
#划分训练集、测试集,默认比例4:1
train = filename[:int(len(filename)*0.8)]
test = filename[int(len(filename)*0.8):]

#分别写入train.txt, test.txt
with open('train.txt', 'w') as f1, open('test.txt', 'w') as f2:
    for i in train:
        f1.write(i + '\n')
    for j in test:
        f2.write(j + '\n')

print('成功!')

二、根据标注文件生成

两个文件分别为数据集文件夹与标注文件夹

import os
import numpy as np

root = r"E:\python\honglvdeng\jiaotongdeng"
Annotations=r"E:\python\honglvdeng\Annotations"
#构建所有文件名的列表,dir为label
filename = []
#label = []
names = os.listdir(root)
for file in names:
    filename.append(root+'/'+file+ '\t'+Annotations+'/'+file.split('.')[0]+ '.xml')    #path+'/'+file+'\t'+pathxml+'/'+file.split('.')[0]+ '.xml'+"\n"


#打乱文件名列表
np.random.shuffle(filename)
#划分训练集、测试集,默认比例4:1
train = filename[:int(len(filename)*0.8)]
test = filename[int(len(filename)*0.8):]

#分别写入train.txt, test.txt
with open('train.txt', 'w') as f1, open('test.txt', 'w') as f2:
    for i in train:
        f1.write(i + '\n')
    for j in test:
        f2.write(j + '\n')

print('成功!')

三、删除没有标记的图片(删除多余的标记文件)

import os


#根据标签删除图片   标签少图片多
images_dir = 'E:\duixiangjiance\honglvdeng\jiaotongdeng\jiaotongdeng'
xml_dir = 'E:\duixiangjiance\honglvdeng\Annotations\Annotations'

# 创建列表
xmls = []
# 读取xml文件名(即:标注的图片名)
for xml in os.listdir(xml_dir):
    # xmls.append(os.path.splitext(xml)[0])    #append()参数:在列表末尾添加新的对象,即将所有文件名读入列表
    xmls.append(xml.split('.')[0])  # splitext和split的区别:前者('0001','.jpg'), 后者('0001','jpg') 在此可选用
print(xmls)

# 读取所有图片
for image_name in os.listdir(images_dir):
    image_name = image_name.split('.')[0]
    if image_name not in xmls:
        image_name = image_name + '.jpg'
        print(image_name)
        os.remove(os.path.join(images_dir, image_name))


'''
#根据图片删除标签
import os

images_dir = './Annotations/'
xml_dir = './JPEGImages/'
# 创建列表
xmls = []
# 读取xml文件名(即:标注的图片名)
for xml in os.listdir(xml_dir):
    # xmls.append(os.path.splitext(xml)[0])    #append()参数:在列表末尾添加新的对象,即将所有文件名读入列表
    xmls.append(xml.split('.')[0])  # splitext和split的区别:前者('0001','.jpg'), 后者('0001','jpg') 在此可选用
print(xmls)

# 读取所有图片
for image_name in os.listdir(images_dir):
    image_name = image_name.split('.')[0]
    if image_name not in xmls:
        image_name = image_name + '.xml'
        print(image_name)
        os.remove(os.path.join(images_dir, image_name))
'''
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
COCO是一个流行的计算机视觉数据集,其中包含大量的图像和相关的注释信息。如果要使用COCO数据集训练模型,我们需要将数据集分成训练集和验证集。训练集用于训练模型,验证集用于评估模型的性能。为了方便管理和使用数据,我们需要将数据集导入到文本文件中,例如train.txt和val.txt生成train.txt val.txt的方法如下: 1. 下载COCO数据集并解压缩。 2. 打开Python终端,并导入必要的库,如numpy。 3. 读取COCO数据集中的所有图像文件名和注释信息。为此,我们可以使用COCO API。 4. 将所有文件名和注释信息分成训练集和验证集。我们可以使用随机抽样的方式将它们分成两部分。可以选择分割的比例,如80%作为训练集,20%作为验证集。 5. 将训练集和验证集中的文件名和注释信息写入train.txt和val.txt文件中。每行应该包含一个文件名和注释信息,以空格分隔。 6. 完成后,我们就可以通过train.txt和val.txt文件进行模型的训练和验证。可以使用ImageNet预训练模型作为初始模型,并使用COCO数据集训练模型。模型训练后,可以使用验证集检查模型的性能,并调整模型的超参数,以获得更好的性能。 总之,生成train.txt val.txt的过程比较简单,主要是将图像文件名和注释信息分成训练集和验证集,并将它们写入到对应的文本文件中。这样,我们就可以使用它们来训练和验证模型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一寸光阴不可轻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值