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训练自己创建的数据集。

  • 相关阅读:
    IE、FF、Chrome浏览器中的JS差异介绍
    防止 jsp被sql注入的五种方法
    读取Excel数据到Table表中
    C#获取IP地址
    JavaScript之web通信
    Unity使用 转载
    EF5 通用数据层 增删改查操作,泛型类
    Entity FrameWork 5 增删改查 & 直接调用sql语句
    asp.net重启web应用程序域
    .net创建activex实现摄像头拍照
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12546061.html
Copyright © 2011-2022 走看看