首先我们有一堆xml文件 笔者是将mask-rcnn得到的json标注文件转为xml的
批量json转xml方法:https://www.cnblogs.com/bob-jianfeng/p/11122135.html
现在我们训练faster-rcnn或者yolo都需要pascal voc格式的数据
所以我们的任务是将xml转为voc训练格式
voc格式目录如下:
VOCdevkit
——VOC2018 #文件夹的年份可以自己取,但是要与你其他文件年份一致,看下一步就明白了
————Annotations #放入所有的xml文件
————ImageSets
——————Main #放入train.txt,val.txt文件
————JPEGImages #放入所有的图片文件
Main中的文件分别表示test.txt是测试集,train.txt是训练集,val.txt是验证集,trainval.txt是训练和验证集,反正我只建了两个
所以新建这几个文件夹 并将原图放入JPEGImages xml文件放入Annotations 接着生成train.txt和val.txt
生成Main中的txt代码 :(我们按照1:3的比例分为训练和验证)
1 import os 2 from os import listdir, getcwd 3 from os.path import join 4 5 if __name__ == '__main__': 6 source_folder =r'G:jianfengproject ubblish_detsource rain_pic_jsonvoc_allVOC2018JPEGImages' 7 dest = r'G:jianfengproject ubblish_detsource rain_pic_jsonvoc_all/VOC2018/ImageSets/Main/train.txt' 8 dest2 = r'G:jianfengproject ubblish_detsource rain_pic_jsonvoc_all/VOC2018/ImageSets/Main/val.txt' 9 file_list = os.listdir(source_folder) 10 train_file = open(dest, 'a') 11 val_file = open(dest2, 'a') 12 i=0 13 for file_obj in file_list: 14 file_name, file_extend = os.path.splitext(file_obj) 15 16 if (i%4 ==0): 17 val_file.write(file_name + ' ') 18 else: 19 train_file.write(file_name + ' ') 20 i+=1 21 train_file.close() 22 val_file.close()
然后完成了voc格式制作 接着可以训练你的数据了