目标检测VOC数据集根据标注文件生成txt文件

  • Pascal VOC数据集介绍:
    
        └── data   #数据集名字
            ├── Annotations           # 存放xml标注文件,与JPEGImages中的图片一一对应
            ├── ImageSets             # 该目录下存放的都是txt文件,txt文件中每一行包含一个图片的名称
            │   ├── Main              # 存放的是图像物体识别的数据,分为20类
            │       └── trainval.txt  # train与val的合集
            │       └── test.txt      # 用于测试的图片名称
            ├── JPEGImages            # 存放源图片
    
  • 根据Annotations里面的xml标注文件,随机生成trainval.txt和test.txt,生成比例可自行调整。
    # data_path为数据集路径,trainval_percent为训练验证集的比例
    def get_txt(data_path,trainval_percent):
        print(data_path)
        xml_path = data_path+'/Annotations'
        print(xml_path)
        txt_path = data_path+'/ImageSets/Main'
        total_xml = os.listdir(xml_path)
    
        num = len(total_xml)
        list = range(num)
        tv = int(num * trainval_percent)
    
        trainval = random.sample(list, tv)
    
        ftrainval = open(os.path.join(txt_path+'/trainval.txt'), 'w')
        ftest = open(os.path.join(txt_path+'/test.txt'), 'w')
    
        for i in list:
            name = total_xml[i][:-4] + '\n'
            if i in trainval:
                ftrainval.write(name)
            else:
                ftest.write(name)
    
        ftrainval.close()
        ftest.close()
     

猜你喜欢

转载自blog.csdn.net/qq_41672428/article/details/107486115