本文参考来源于b站up主霹雳吧啦Wz.原视频.
PASCAL VOC挑战赛(The PASCAL Visual Object Classes)是一个世界级的计算机视觉挑战赛。该挑战赛主要包括以下几类:
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图(基于目标)
比如随便打开一个文件: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>
这两个.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所有图片训练网络,然后在他们的test文件测试效果
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]
classes.txt
labelImg ./image/ ./classes
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')