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

文章目录

  • PASCAL_VOC_2012
    • 简介
    • 文件结构
      • Annotations
      • train.txt和val.txt
      • trainval.txt
      • boat_train.txt boat_val.txt boat_trainval.txt这类文件
    • 数据集使用流程
    • 如何标注自己的数据集
      • 安装方式
      • 标注流程
    • 把xml中的filename信息保存到txt文件中


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

PASCAL_VOC_2012

简介

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

  • 图像分类(Object Classification)
  • 目标检测(Object Detection)
  • 目标分割(Object Segmentation)
  • 动作识别(Action Classification)等。
    PASCAL_VOC_2012介绍以及制作自己的数据集_第1张图片

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>VOC2012folder>
	<filename>2007_000187.jpgfilename>
	<source>
		<database>The VOC2007 Databasedatabase>
		<annotation>PASCAL VOC2007annotation>
		<image>flickrimage>
	source>
	<size>
		<width>500width>
		<height>375height>
		<depth>3depth>
	size>
	<segmented>1segmented>
	<object>
		<name>tvmonitorname>
		<pose>Frontalpose>
		<truncated>1truncated>
		<difficult>0difficult>
		<bndbox>
			<xmin>1xmin>
			<ymin>95ymin>
			<xmax>240xmax>
			<ymax>336ymax>
		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

PASCAL_VOC_2012介绍以及制作自己的数据集_第2张图片

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

  • 更改储存路径为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')

你可能感兴趣的:(目标检测,深度学习,计算机视觉,人工智能,神经网络)