转载链接https://blog.csdn.net/clover_my/article/details/88286678
(1)、将自己文件夹中的图片编号(重命名成‘xxxx.jpg,这里从000000.jpg开始’)
import os
path = "F:\caffe\py-faster-rcnn-master\data\VOCdevkit\VOC2007\JPEGImages"
filelist = os.listdir(path) # 该文件夹下所有的文件(包括文件夹)
count=0 # 编号从0开始
for file in filelist:
print(file)
for file in filelist:
# 遍历所有文件
Olddir=os.path.join(path,file) # 原来的文件路径
if os.path.isdir(Olddir): # 如果是文件夹则跳过
continue
filename=os.path.splitext(file)[0] # 文件名
filetype=os.path.splitext(file)[1] # 文件扩展名
Newdir=os.path.join(path,str(count).zfill(6)+filetype) # 用字符串函数zfill 以0补全所需位数
os.rename(Olddir,Newdir) # 重命名
count+=1
(2)、生成数据集所需txt
使用代码在ImageSets\Main目录下生成test.txt(测试集)、train.txt(训练集)、val.txt(验证集)、trainval.txt(训练验证集,由train.txt和val.txt组成)。VOC2007中, test大概是整个数据集的50%,trainval是整个数据集剩下的50%;train大概是trainval的50%,val是trainval剩下的50%。所占比例可在代码中修改,以Python为例(其中trainval是整个数据集的70%):
import os
import random
trainval_percent = 0.7 # trainval占总数的比例
train_percent = 0.5 # train占trainval的比例
xmlfilepath = r'xml' #这里是相对路径,xml文件夹与dataset.py(该程序)在同一目录下,也可以写成绝对路径
txtsavepath = r'finaldata'#同上
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(txtsavepath + r'\trainval.txt', 'w')
ftest = open(txtsavepath + r'\test.txt', 'w')
ftrain = open(txtsavepath + r'\train.txt', 'w')
fval = open(txtsavepath + r'\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()
顺毛黑起
发布了25 篇原创文章 · 获赞 0 · 访问量 1091
私信
关注