美文网首页
Pascal Voc 数据集格式解释

Pascal Voc 数据集格式解释

作者: 21b162136419 | 来源:发表于2019-06-14 19:03 被阅读0次

    简介

    Pascal Voc 格式是目标检测常用的格式。Pascal Voc 数据集官网

    目录结构

    PASCAL VOC数据集由5个部分构成:JPEGImages,Annotations,ImageSets,SegmentationClass以及SegmentationObject。

    • JPEGImages:存放的是训练与测试的所有图片。
    • Annotations:里面存放的是每张图片打完标签所对应的XML文件
    • ImageSets:ImageSets文件夹下本次讨论的只有Main文件夹,此文件夹中存放的主要又有四个文本文件test.txt,train.txt,trainval.txt,val.txt,其中分别存放的是测试集图片的文件名、训练集图片的文件名、训练验证集图片的文件名、验证集图片的文件名。
    • SegmentationClass与SegmentationObject:存放的都是图片,且都是图像分割结果图,对目标检测任务来说没有用。class segmentation 标注出每一个像素的类别 。object segmentation 标注出每一个像素属于哪一个物体

    Annotation的Xml格式

    <annotation>
      <folder>17</folder> # 图片所处文件夹
      <filename>77258.bmp</filename> # 图片名
      <path>~/frcnn-image/61/ADAS/image/frcnn-image/17/77258.bmp</path>
      <source>  #图片来源相关信息
        <database>Unknown</database>  
      </source>
      <size> #图片尺寸
        <width>640</width>
        <height>480</height>
        <depth>3</depth>
      </size>
      <segmented>0</segmented>  #是否有分割label
      <object> 包含的物体
        <name>car</name>  #物体类别
        <pose>Unspecified</pose>  #物体的姿态
        <truncated>0</truncated>  #物体是否被部分遮挡(>15%)
        <difficult>0</difficult>  #是否为难以辨识的物体, 主要指要结体背景才能判断出类别的物体。虽有标注, 但一般忽略这类物体
        <bndbox>  #物体的bound box
          <xmin>2</xmin>
          <ymin>156</ymin>
          <xmax>111</xmax>
          <ymax>259</ymax>
        </bndbox>
      </object>
    </annotation>
    

    LabelImg

    用于对图片打标签的软件,可以生成Pascal Voc格式的Xml文件。LabelImg百度云下载链接

    labelImg.png

    制作Pascal VOC格式的数据集

    1. 爬取数据集图片放置于JPEGImages文件夹下,注意文件命名(按顺序递增)。
    2. 使用LabelImg进行标注,获取对应图片的XML标注文件,放置于Annotations文件夹下。
    3. 运行如下代码生成ImageSets文件夹
    # -*- coding: utf-8 -*-
    # @Time    : 2018/11/12 13:03
    # @Author  : lazerliu
    # @File    : xml2voc.py
    import os
    import random
    
    # ==================可能需要修改的地方=====================================#
    g_root_path = "D:/VOCdevkit/VOC2007/" #根路径
    xmlfilepath = "Annotations"  # 标注文件存放路径
    saveBasePath = "ImageSets/Main/"  # ImageSets信息生成路径
    trainval_percent = 0.98
    train_percent = 0.98
    # ==================可能需要修改的地方=====================================#
    
    os.chdir(g_root_path)
    total_xml = os.listdir(xmlfilepath)
    num = len(total_xml)
    xml_list = range(num)
    tv = int(num * trainval_percent)
    tr = int(tv * train_percent)
    trainval = random.sample(xml_list, tv)
    train = random.sample(trainval, tr)
    
    print("train and val size", tv)
    print("train  size", tr)
    ftrainval = open(saveBasePath + "trainval.txt", "w")
    ftest = open(saveBasePath + "test.txt", "w")
    ftrain = open(saveBasePath + "train.txt", "w")
    fval = open(saveBasePath + "val.txt", "w")
    
    for i in xml_list:
        name = total_xml[i][:-4] + "\n"
        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()
    

    相关文章

      网友评论

          本文标题:Pascal Voc 数据集格式解释

          本文链接:https://www.haomeiwen.com/subject/aytmfctx.html