环境配置
win10+tensorflow-gpu1.13.2+cuda10.0+cudnn7.4+keras2.1.5
1.数据集的制作
- 先安装labelimg,步骤如下:
pip install PyQt5
pip install pyqt5-tools
pip install lxml
pip install labelImg
在安装好lxml之后,也可以直接将data文件复制到电脑,运行的时候将labelimg粘贴到桌面。 - 使用rename.py将数据集图片的名字统一转化成以序号命名,则高位会用0补齐至6位。
#rename.py
import os
path = "C:\\Users\\Admin\\Desktop\\VOC\\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
- 先创建如下图所示的三个文件夹,图片数据集存放在JPEGImages。
在labelimg将图片生成xml文件,如下图所示,选中区域之后输入对应的标签,然后将xml文件保存在Annotations文件夹下。
2.生成train、test、val数据集
- 运行formtxt.py文件生成如图所示的4个txt文件,存放在ImageSets/Main文件下。
#formtxt.py
import os
import random
trainval_percent = 0.7 # trainval占总数的比例
train_percent = 0.5 # train占trainval的比例
xmlfilepath = r'C:\Users\Admin\Desktop\VOC\Annotations'
txtsavepath = r'C:\Users\Admin\Desktop\VOC\ImageSets\mian'
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