目录
一 数据处理
1 数据集
想走一下数据标记的流程,从场景分类的数据源里,找了50张猫+50张飞机。将其制成voc2007格式,可参照博客https://blog.csdn.net/babyzbb636/article/details/100031102文件夹放置
2 影像规则化命名
如000000.jpg,新建name.py文件
import os
path = "/home/zbb/VOC2007"
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
3生成txt文件
VOC2007/ImageSets/Main需要四个生成trian.txt 、test.txt 、trainval.txt、 val.txt
#6:2:2 train val test 一般是55开,这里数据比较少
import os
import random
#6:2:2 train val test
trainval_percent = 0.8 # trainval数据集占所有数据的比例
train_percent = 6/8.0 # train数据集占trainval数据的比例
jpgfilepath = '/home/zbb/VOC2007/JPEGImages'
txtsavepath = '/home/zbb/VOC2007/ImageSets/Main'
total_jpg = os.listdir(jpgfilepath)
num=len(total_jpg)
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('/home/zbb/VOC2007/ImageSets/Main/trainval.txt', 'w')
ftest = open('/home/zbb/VOC2007/ImageSets/Main/test.txt', 'w')
ftrain = open('/home/zbb/VOC2007/ImageSets/Main/train.txt', 'w')
fval = open('/home/zbb/VOC2007/ImageSets/Main/val.txt', 'w')
for i in list:
name=total_jpg[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()
4 labelImg标记数据
labelImg配置参照博客https://blog.csdn.net/babyzbb636/article/details/100105444
标记数据流程:
此软件的使用方法
类别默认:PascalVoc
修改默认的XML文件保存位置,使用快捷键“Ctrl+R”,改为自定义位置,这里的路径一定不能包含中文,否则无法保存。
源码文件夹中使用notepad++打开data/predefined_classes.txt,修改默认类别,比如改成person、car、motorcycle三个类别,这里注意修改后,重新编译打开,python labelImg.py
“Open Dir”打开图片文件夹,选择第一张图片开始进行标注,使用“Create RectBox”或者“Ctrl+N”开始画框,单击结束画框,再双击选择类别。完成一张图片后点击“Save”保存,此时XML文件已经保存到本地了。点击“Next Image”转到下一张图片。
标注过程中可随时返回进行修改,后保存的文件会覆盖之前的。
二 代码修改
主要在demo.py,pascal_voc.py修改为自己的类别
详细见我之前的博客https://blog.csdn.net/babyzbb636/article/details/100031102,虽然是windows下修改位置相同。
三评测显示
详细见我上一篇的博客https://blog.csdn.net/babyzbb636/article/details/100122516
./tools/demo.py 需要修改类别数目,否则报错[4096,21]与 [4096,2]不对应