0
点赞
收藏
分享

微信扫一扫

PASCAL_VOC_2012介绍以及制作自己的数据集

文章目录


本文参考来源于b站up主霹雳吧啦Wz.原视频.

PASCAL_VOC_2012

简介

PASCAL VOC挑战赛(The PASCAL Visual Object Classes)是一个世界级的计算机视觉挑战赛。该挑战赛主要包括以下几类:

  • 图像分类(Object Classification)
  • 目标检测(Object Detection)
  • 目标分割(Object Segmentation)
  • 动作识别(Action Classification)等。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pCPQRQD5-1650539529260)(/home/zs/.config/Typora/typora-user-images/image-20220419100406354.png)]

PASCAL_VOC_2012 官网

数据集下载地址: training/validation data (2GB tar file)]

文件结构

├──────Annotations:所有的图像标注信息(XML文件)
├──────ImageSets
├     ├──────Action:人的行为动作图像信息
├     ├──────Layout:人的各个部位图像信息
├     ├──────Main:目标检测分类图像信息
├     ├      ├──────train.txt:训练集5717
├     ├      ├──────val.txt:验证集5823
├     ├      └───────trainval.txt:训练集+验证集=11540
├     └──────Segmentation:目标分割图像信息
├──────JPEGImages:所有文件信息
├──────SegmentationClass:图像分割png图(基于类别)
└──────SegmentationObject:图像分割png图(基于目标)

Annotations

比如随便打开一个文件:VOCdevkit/VOC2012/Annotations/2007_000187.xml

<annotation><!-- 主节点 -->
	<folder>VOC2012</folder><!-- 下一级是文件夹 -->
	<filename>2007_000187.jpg</filename><!-- 图片名称 -->
	<source><!-- 源来自于下面 -->
		<database>The VOC2007 Database</database>
		<annotation>PASCAL VOC2007</annotation>
		<image>flickr</image><!-- 标明图片是来自于网络分享的 -->
	</source>
	<size><!-- 图片高、宽、深度 -->
		<width>500</width>
		<height>375</height>
		<depth>3</depth>
	</size>
	<segmented>1</segmented><!-- 告诉我们这个图片有没有被分割过,被分割过1 -->
	<object>
		<name>tvmonitor</name><!-- 目标类别 -->
		<pose>Frontal</pose>
		<truncated>1</truncated><!-- 有没有被截断 -->
		<difficult>0</difficult><!-- 难不难检测 -->
		<bndbox><!-- 目标坐标 -->
			<xmin>1</xmin>
			<ymin>95</ymin>
			<xmax>240</xmax>
			<ymax>336</ymax>
		</bndbox>
	</object>
</annotation>

train.txt和val.txt

这两个.txt文件里面都是图片的名称,并且train.txt和val.txt的图片是互斥的

2008_000008
2008_000015
2008_000019
2008_000023
2008_000028
2008_000033
2008_000036
2008_000037
2008_000041
2008_000045
2008_000053
2008_000060
2008_000066
2008_000070
2008_000074
2008_000085
2008_000089
2008_000093
2008_000095

trainval.txt

训练集和验证集融合到了一起,为什么会有这样一个文件呢?

自己搭建的网络训练测试后,如果想将成绩提交到官网,就要那trainval.txt所有图片训练网络,然后在他们的test文件测试效果

boat_train.txt boat_val.txt boat_trainval.txt这类文件

2008_003021 -1
2008_003022 -1
2008_003023 -1
2008_003025 -1
2008_003026 -1
2008_003030 -1
2008_003033 -1
2008_003034  0
2008_003037 -1
2008_003039 -1
2008_003041 -1
2008_003043 -1
2008_003045 -1
2008_003048 -1
2008_003049 -1
2008_003051 -1
2008_003052 -1
2008_003053 -1
2008_003055 -1
2008_003056 -1
2008_003057 -1
2008_003059 -1
2008_003060 -1
2008_003061 -1

名称±1/1/0(没有船/有船/很难检测)

数据集使用流程

读入tarin.txt中的名字,获取每一行信息————>Annotations处找到对应的XML文件,解析————>得到图片的高度、宽度、深度、有哪些目标、位置————>在JPEGImages中找到相应图片,载入内存

如何标注自己的数据集

标注图像的软件很多,在github上有很多开源项目:

https://github.com//tzutalin/labelImg

安装方式

ubuntu(自己编译):

sudo apt-get install pyqt5-dev-tools
sudo pip3 install -r requirements/requirements-linux-python3.txt
make qt5py3
python3 labelImg.py
python3 labelImg.py [IMAGE_PATH] [PRE-DEFINED CLASS FILE]

ubuntu懒一些的:

# 安装
pip install labelImg
#使用
labelImg
labelImg [IMAGE_PATH] [PRE-DEFINED CLASS FILE]

标注流程

  • 打开项目文件夹/home/zs/make_myself_datasets,新建标注类别信息文件:classes.txt
  • 把要标注的图片存放在images文件夹
  • 创建一个存放标注信息的文件夹annotations

  • 在本工程:/home/zs/make_myself_datasets下打开软件
labelImg ./image/ ./classes 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wQ8Aj7ji-1650539529261)(/home/zs/.config/Typora/typora-user-images/image-20220419113155551.png)]

  • 更改储存路径为annotations,创建区块,进行标注

把xml中的filename信息保存到txt文件中

import xml.etree.ElementTree as ET
import os
source = r"/home/zs/make_myself_datasets/annotations"#xml位置
dir = os.listdir(source)

for i in range(len(dir)):
    tree = ET.parse(source + '/' + dir[i])

    root = tree.getroot()
    with open('./train.txt', 'a', encoding='utf-8') as f1:#存储位置
        for t in root.iter('filename'):
                info = t.text
                info = info.strip('.jpg')
                print(info)
                f1.write(info + '\n')

举报

相关推荐

0 条评论