# VOC数据集结构如下
└── VOCdevkit
└── VOC2012 #不同年份的数据集,自己构造数据集时可以修改名字
├── Annotations #存放xml文件,与JPEGImages中的图片一一对应,解释图片的内容等等
├── ImageSets #该目录下存放的都是txt文件,txt文件中每一行包含一个图片的名称
│ ├── Main
├── JPEGImages #存放源图片
├── labels #存放标签
├── Test #存放测试集 有没有内容无所谓
## Annotations (注释)
以xml格式存放图片信息 (以车牌识别为例)
1. 目标物体 label : name ,如下例子为 person
2. 图片尺寸: depth, height, width
3. 目标物体 bbox的坐标信息: bndbox 下 xmax, xmin, ymax, ymin
举例如下:
```xml
<annotation>
<folder>JPEGImages</folder> //训练时这里必须正确
<filename>0001</filename> //训练时这里必须正确,path不必精准
<path>H:\labelImg-master\windows_v1.2.2\data\voc\VOCdevkit\VOC2019\JPEGImages\0001.jpg</path>
<source>
<database>Unknown</database> //默认为Unknown
</source>
<size> //图片尺寸
<width>361</width>
<height>306</height>
<depth>3</depth>
</size>
<segmented>0</segmented>
<object> //目标信息
<name>plate</name> //目标的label
<pose>Unspecified</pose> //拍摄角度 默认值Unspecified
<truncated>0</truncated> //是否被截断(默认0表示完整)
<difficult>0</difficult> //目标是否难以识别(默认0表示容易识别)
<bndbox> //目标位置信息
<xmin>109</xmin>
<ymin>125</ymin>
<xmax>260</xmax>
<ymax>194</ymax>
</bndbox>
</object>
<object>
<name>粤</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>123</xmin>
<ymin>141</ymin>
<xmax>141</xmax>
<ymax>171</ymax>
</bndbox>
</object>
<object>
<name>A</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>143</xmin>
<ymin>141</ymin>
<xmax>163</xmax>
<ymax>173</ymax>
</bndbox>
</object>
<object>
<name>A</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>161</xmin>
<ymin>141</ymin>
<xmax>179</xmax>
<ymax>172</ymax>
</bndbox>
</object>
<object>
<name>7</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>176</xmin>
<ymin>142</ymin>
<xmax>196</xmax>
<ymax>171</ymax>
</bndbox>
</object>
<object>
<name>5</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>194</xmin>
<ymin>142</ymin>
<xmax>211</xmax>
<ymax>172</ymax>
</bndbox>
</object>
<object>
<name>1</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>210</xmin>
<ymin>143</ymin>
<xmax>226</xmax>
<ymax>172</ymax>
</bndbox>
</object>
<object>
<name>警</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>225</xmin>
<ymin>142</ymin>
<xmax>244</xmax>
<ymax>173</ymax>
</bndbox>
</object>
</annotation>
```
## ImageSets (我理解为 数据集划分信息)
./ImageSets/Main 下存放的都是txt文件,根据需要可以选择是否设置验证集,标准的4个文件如下

- train.txt 是用来训练的图片文件的文件名列表
- val.txt是用来验证的图片文件的文件名列表
- trianval.txt是用来训练和验证的图片文件的文件名列表
- test.txt 是用来测试的图片文件的文件名列表
(上面4个文件需要自己写脚本生成,本文涉及相关代码会在最后给出)
## labels
存放每张图的标签信息(类别,x,y,w,h,c) 同样是txt文件 通过脚本生成。
## 2个脚本源代码:
链接: https://pan.baidu.com/s/1Dx_BPq01fxgimkQ8SclYCQ 提取码: qwd1
Pascal Voc数据集格式详细分析