1. 创建需要的文件夹和文件夹
按下图格式创建若干文件夹
在Main文件夹内创建4个txt文件
2.将自己的数据集放入JPEGImages中
3.对JPEGImages文件夹中的图片进行重命名
这一步并不是必须的。(但是对于强迫症来说,处理完感觉很爽。)
在VOC2007文件夹内新建rename.py文件,讲下面的代码复制进文件。
import os
path="" #将JPEGImages文件夹地址写到这里,最后不要忘了加/
filelist = os.listdir(path) #该文件夹下所有的文件(包括文件夹)
count=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
然后运行rename.py即可
4.使用labelimg软件对图片进行标注
https://github.com/tzutalin/labelImg
在上述网址下载即可。Windows平台有现成软件,mac和ubuntu需要自己安装一下。(介绍里写python2和python3都可以用,但是我只在python3环境下装成功了。)
标注的保存文件夹设置为步骤1中新建的Annotations。
5.生成用于训练和测试的检索文件
在VOC2007文件夹下新建txt.py文件,将下面的代码复制进文件中。
import os
import random
trainval_percent = 0.66
train_percent = 0.5
xmlfilepath = 'Annotations'
txtsavepath = '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('ImageSets/Main/trainval.txt', 'w')
ftest = open('ImageSets/Main/test.txt', 'w')
ftrain = open('ImageSets/Main/train.txt', 'w')
fval = open('ImageSets/Main/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()
运行txt.py,Main文件夹下的txt文件即为检索文件。
VOC格式的数据集生成完毕。
后续还会写怎么将数据集用于YOLO等模型的训练