目录
个人笔记
代码及资料来源PASCAL VOC2012数据集讲解与制作自己的数据集_哔哩哔哩_bilibili
1. PASCAL VOC2012文件架构
VOCdevkit
└── VOC2012
├── Annotations 所有的图像标注信息(XML文件)
├── ImageSets
│ ├── Action 人的行为动作图像信息
│ ├── Layout 人的各个部位图像信息
│ │
│ ├── Main 目标检测分类图像信息
│ │ ├── train.txt 训练集(5717)
│ │ ├── val.txt 验证集(5823)
│ │ └── trainval.txt 训练集+验证集(11540)
│ │
│ └── Segmentation 目标分割图像信息
│ ├── train.txt 训练集(1464)
│ ├── val.txt 验证集(1449)
│ └── trainval.txt 训练集+验证集(2913)
│
├── JPEGImages 所有图像文件
├── SegmentationClass 语义分割png图(基于类别)
└── SegmentationObject 实例分割png图(基于目标)
train.txt
、val.txt
和trainval.txt
文件里是对应标注文件的索引,每一行对应一个索引信息,也是一个图片的名称
- Annotations下一个XML文件对应一张图像的标注信息
在XML标注文件中包含了 :
filename,通过在字段能够在JPEGImages 文件夹中能够找到对应的图片。
size记录了对应图像的宽、高以及channel信息。
每一个object代表一个目标,name===该目标的名称,pose===目标的姿势(朝向),truncated===目标是否完整,difficult===该目标的检测难易程度(0简单,1困难)
bndbox===边界框信息,是(xmin,ymin,xmax,ymax)左上角和右下角
- 通过在标注文件中的
filename
字段在JPEGImages
文件夹中找到对应的图片。
2. 读取VOC 数据
代码如下:
transforms定义:(faster_rcnn项目中的transforms.py)
目标检测,如果反转的话boxx也要反转
# Compose 组合多个transform函数 ToTensor将PIL图像转为Tensor RandomHorizontalFlip水平翻转 图像+++bboxes
import random
from torchvision.transforms import functional as F
class Compose(object):
"""组合多个transform函数"""
def __init__(self, transforms):
self.transforms = transforms
def __call__(self, image, target):
for t in self.transforms:
image, target = t(image, target)
return image, target
class ToTensor(object):
"""将PIL图像转为Tensor"""
def __call__(self, image, target):
image = F.to_tensor(image)
return image, target
class RandomHorizontalFlip(object): # 目标检测,还要翻转对应的bbox
"&#