zoukankan      html  css  js  c++  java
  • 【pytorch-ssd目标检测】制作类似pascal voc格式的目标检测数据集

    pascal voc目标检测数据集格式如下:

    其中:

    • Annotations为图像标注信息xml文件
    • ImageSets为训练集、测试集、验证、训练验证集图像名的txt文件 
    • JPEGImages为原始的图片

    pascal voc或yolo格式的数据可以使用labelimg进行标注:下载地址:

    链接:https://pan.baidu.com/s/1r8x7tu0sdO_UUuCXKVfELQ
    提取码:l325 

    操作挺简单的,就不介绍了。

    标注好的xml文件类似如下:

    <annotation>
        <folder>JPEGImages</folder>
        <filename>test_00000002.jpg</filename>
        <path>E:detectionpascal vocmaskornotJPEGImages	est_00000002.jpg</path>
        <source>
            <database>Unknown</database>
        </source>
        <size>
            <width>480</width>
            <height>600</height>
            <depth>3</depth>
        </size>
        <segmented>0</segmented>
        <object>
            <name>mask</name>
            <pose>Unspecified</pose>
            <truncated>0</truncated>
            <difficult>0</difficult>
            <bndbox>
                <xmin>112</xmin>
                <ymin>7</ymin>
                <xmax>352</xmax>
                <ymax>325</ymax>
            </bndbox>
        </object>
    </annotation>

    其对应的图像如下:

    然后划分训练集、测试集、验证集、训练验证集:在原始VOC2007数据集中,trainval大约占整个数据集的50%,test大约为整个数据集的50%;train大约是trainval的50%,val大约为trainval的50%

    import os
    import random
     
    trainval_percent = 0.5
    train_percent = 0.5
    xmlfilepath = '/content/drive/My Drive/pytorch_ssd/data/maskornot/Annotations'
    txtsavepath = '/content/drive/My Drive/pytorch_ssd/data/maskornot/ImageSets/Main'
    total_xml = os.listdir(xmlfilepath)
     
    num=len(total_xml)
    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(txtsavepath+'/trainval.txt', 'w')
    ftest = open(txtsavepath+'/test.txt', 'w')
    ftrain = open(txtsavepath+'/train.txt', 'w')
    fval = open(txtsavepath+'/val.txt', 'w')
     
    for i  in list:
      name=total_xml[i][:-4]+'
    '
      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()

    运行之后:

    其中tranval.txt的部分结果为:

    test_00000002
    test_00000003
    test_00000006
    test_00000009
    test_00000008
    test_00000012
    test_00000013
    test_00000014
    test_00000020

    至此,目标检测数据集的创建就完成了。

    下一节,使用pytorch-ssd训练自己创建的数据集。

  • 相关阅读:
    2019牛客暑期多校训练营(第二场)
    2019牛客暑期多校训练营(第一场)
    JOISC2014 挂饰("01"背包)
    UPC 2019年第二阶段我要变强个人训练赛第十六场
    UPC个人训练赛第十五场(AtCoder Grand Contest 031)
    Wannafly挑战赛15 C“出队”(约瑟夫环类问题)
    UVA 133“The Dole Queue”(循环报数处理技巧)
    洛谷P1169 [ZJOI2007]棋盘制作 悬线法 动态规划
    洛谷P1273 有线电视网 树上分组背包DP
    CF1097D Makoto and a Blackboard 质因数分解 DP
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12546061.html
Copyright © 2011-2022 走看看