首先我們有一堆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格式制作 接着可以訓練你的數據了