voc2007数据集解析

    xiaoxiao2023-10-16  23

    版权声明: https://blog.csdn.net/qq_33297776/article/details/79758342 </div> <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-f57960eb32.css"> <div id="content_views" class="markdown_views"> <!-- flowchart 箭头图标 勿删 --> <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> <h1 id="下载"><a name="t0"></a>下载</h1>

    首先从网站上下载VOC2007数据集下载链接

    文件结构

    概述

    下载后的数据文件主要包含以下内容: 由于我们是将数据用于检测,因此,我们只关注Annotation,ImageSets和JPEGImages三个文件夹。下面我们逐个分析每一个文件夹下面的内容:

    JPEGImages

    这个文件夹主要放置数据的原始图片,图片的文件名用00001.jpg进行命名。

    Annotations

    这个文件夹放置的是对每一张图片的标注。标注使用XML文件的格式。XML是标记语言,形如HTML,详细概念参看百度。每一个XML文件对应一张图片的标注结果,我们以上图000005.jpg的标注为例进行说明。

    首先该图的内容是这样的: 这张图片对应的XML文件(000005.xml)标记结果如下:

    <annotation> <folder>VOC2007</folder> <!--文件名--> <filename>000005.jpg</filename>. <!--数据来源--> <source> <!--数据来源--> <database>The VOC2007 Database</database> <annotation>PASCAL VOC2007</annotation> <!--来源是flickr,一个雅虎的图像分享网站,下面是id,对于我们没有用--> <image>flickr</image> <flickrid>325991873</flickrid> </source> <!--图片的所有者,也没有用--> <owner> <flickrid>archintent louisville</flickrid> <name>?</name> </owner> <!--图像尺寸,宽、高、长--> <size> <width>500</width> <height>375</height> <depth>3</depth> </size> <!--是否用于分割,0表示用于,1表示不用于--> <segmented>0</segmented> <!--下面是图像中标注的物体,每一个object包含一个标准的物体--> <object> <!--物体名称,拍摄角度--> <name>chair</name> <pose>Rear</pose> <!--是否被裁减,0表示完整,1表示不完整--> <truncated>0</truncated> <!--是否容易识别,0表示容易,1表示困难--> <difficult>0</difficult> <!--bounding box的四个坐标--> <bndbox> <xmin>263</xmin> <ymin>211</ymin> <xmax>324</xmax> <ymax>339</ymax> </bndbox> </object> <object> <name>chair</name> <pose>Unspecified</pose> <truncated>0</truncated> <difficult>0</difficult> <bndbox> <xmin>165</xmin> <ymin>264</ymin> <xmax>253</xmax> <ymax>372</ymax> </bndbox> </object> <object> <name>chair</name> <pose>Unspecified</pose> <truncated>1</truncated> <difficult>1</difficult> <bndbox> <xmin>5</xmin> <ymin>244</ymin> <xmax>67</xmax> <ymax>374</ymax> </bndbox> </object> <object> <name>chair</name> <pose>Unspecified</pose> <truncated>0</truncated> <difficult>0</difficult> <bndbox> <xmin>241</xmin> <ymin>194</ymin> <xmax>295</xmax> <ymax>299</ymax> </bndbox> </object> <object> <name>chair</name> <pose>Unspecified</pose> <truncated>1</truncated> <difficult>1</difficult> <bndbox> <xmin>277</xmin> <ymin>186</ymin> <xmax>312</xmax> <ymax>220</ymax> </bndbox> </object> </annotation> 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192

    Imagesets

    VOC2007/ImageSets/Main/文件夹包含txt文件,这些文件指定哪些是图片用于哪一个类的训练还是验证,其中1表示正例,-1表示反例。 PS:暂且不知道为什么还有有一个trainval这样的文件,表示训练集和验证集一起的文件。

    自定义数据集转化成VOC格式

    解决JPEGSets

    首先全部图片保存到JPEGSets里面,很简单。图片的命名方式采用如VOC一样。训练和验证数据混放一起。

    解决Annotation文件

    使用标注软件对数据手动标注,软件会自动生成图片信息的xml文件。 软件的下载链接 密码:ayyy

    软件简单介绍

    我下载的是win版本,懒人,不想重新编译源代码。 1. 导入图片 2. 点击左侧的create Rect 创建标注框 3. 可以创建新的Label 4. 最后点击verifyImage进行确认,导出XML文件

    <annotation verified="yes"> <folder>Desktop</folder> <filename>20161009190557135.jpeg</filename> <path>C:/Users/Administrator/Desktop/20161009190557135.jpeg</path> <source> <database>Unknown</database> </source> <size> <width>500</width> <height>332</height> <depth>3</depth> </size> <segmented>0</segmented> <object> <name>person</name> <pose>Unspecified</pose> <truncated>0</truncated> <difficult>0</difficult> <bndbox> <xmin>199</xmin> <ymin>51</ymin> <xmax>287</xmax> <ymax>202</ymax> </bndbox> </object> <object> <name>horse</name> <pose>Unspecified</pose> <truncated>0</truncated> <difficult>0</difficult> <bndbox> <xmin>94</xmin> <ymin>100</ymin> <xmax>350</xmax> <ymax>321</ymax> </bndbox> </object> <object> <name>person</name> <pose>Unspecified</pose> <truncated>0</truncated> <difficult>1</difficult> <bndbox> <xmin>377</xmin> <ymin>156</ymin> <xmax>417</xmax> <ymax>206</ymax> </bndbox> </object> <object> <name>person</name> <pose>Unspecified</pose> <truncated>0</truncated> <difficult>1</difficult> <bndbox> <xmin>64</xmin> <ymin>108</ymin> <xmax>109</xmax> <ymax>172</ymax> </bndbox> </object> </annotation> 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263

    解决Imagesets里的文件

    先抄别人一份代码,然后自己修改

    import os import random trainval_percent = 0.66 train_percent = 0.5 xmlfilepath = 'Annotations' txtsavepath = '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('ImageSets/Main/trainval.txt', 'w') ftest = open('ImageSets/Main/test.txt', 'w') ftrain = open('ImageSets/Main/train.txt', 'w') fval = open('ImageSets/Main/val.txt', 'w') for i in 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() 123456789101112131415161718192021222324252627282930313233343536 <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-258a4616f7.css" rel="stylesheet"> </div>
    最新回复(0)