训练自己数据-xml文件转voc格式

首先我们有一堆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:\jianfeng\project\rubblish_det\source\train_pic_json\voc_all\VOC2018\JPEGImages'
 7     dest = r'G:\jianfeng\project\rubblish_det\source\train_pic_json\voc_all/VOC2018/ImageSets/Main/train.txt'
 8     dest2 = r'G:\jianfeng\project\rubblish_det\source\train_pic_json\voc_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 + '\n')
18         else:
19             train_file.write(file_name + '\n')
20         i+=1
21     train_file.close()
22 val_file.close()

然后完成了voc格式制作 接着可以训练你的数据了

posted @ 2019-07-02 20:58  剑峰随心  阅读(2557)  评论(1编辑  收藏  举报