跑过很多模型,每次用Pascal Voc的组织方式都不同,但是一般都是用Pascal Voc2007+2012做训练,在Pascal Voc2007上做测试,记录如下:
1. 概览
对于分类/检测任务而言,完成07 + 12数据集合并后,共得到如下数据:
- 训练数据:
16551张图像,共40058个目标- 测试数据:
4952张图像,共12032个目标
其中VOC 2007的训练集提供了
- 训练数据:
2501张图像,共6301个目标- 验证数据:
2510张图像,共6307个目标- 训练+验证数据:
5011张图像,共12608个目标
VOC 2012的训练集提供了
- 训练数据:
5717张图像,共13609个目标- 验证数据:
5823张图像,共13841个目标- 训练+验证数据:
11540张图像,共27450个目标
VOC 2007的测试集提供了
测试数据:
4952张图像,共12032个目标
2. 第一种组织方式
我把VOC_ROOT设置为/data/data_hx/new-YOLO-PyTorch/data/VOCdevkit/,下面有VOC2007和VOC2012两个文件夹

这两个文件夹的内容怎么来的呢?

从官网下载四个压缩包,解压三个,其中VOC2012test我们是用不着的。
- 对
VOCtrainval_11-May-2012,直接重命名为VOC2012 - 对
VOCtrainval_06-Nov-2007和VOCtest_06-Nov-2007,两个内容合并后重命名为VOC2007.(组织方式下面给出)
├── VOCtest_06-Nov-2007
│ └── VOCdevkit
│ └── VOC2007
│ ├── Annotations
│ ├── ImageSets
│ ├── JPEGImages
│ ├── SegmentationClass(检测不用)
│ └── SegmentationObject(检测不用)
├── VOCtest_06-Nov-2007.tar
├── VOCtrainval_06-Nov-2007
│ └── VOCdevkit
│ └── VOC2007
│ ├── Annotations
│ ├── ImageSets
│ ├── JPEGImages
│ ├── SegmentationClass(检测不用)
│ └── SegmentationObject(检测不用)
做好上述工作后按以下方式加载VOC数据集:
先给出VOCDetection函数,默认的image_sets是07和12年的trainval
class VOCDetection(data.Dataset):
"""VOC Detection Dataset Object
input is image, target is annotation
Arguments:
root (string): filepath to VOCdevkit folder.
image_set (string): imageset to use (eg. 'train', 'val', 'test')
transform (callable, optional): transformation to perform on the
input image
target_transform (callable, optional): transformation to perform on the
target `annotation`
(eg: take in caption string, return tensor of word indices)
dataset_name (string, optional): which dataset to load
(default: 'VOC2007')
"""
def __init__(self, root, img_size,
image_sets=[('2007', 'trainval'), ('2012', 'trainval')],
transform=None, target_transform=VOCAnnotationTransform(),
dataset_name='VOC0712', mosaic=False):
self.root = root
self.img_size = img_size
self.image_set = image_sets
self.transform = transform
self.target_transform = target_transform
self.name = dataset_name
self._annopath = osp.join('%s'

该博客介绍了两种组织和使用PASCAL VOC数据集的方式,用于训练和评估深度学习模型,如YOLO和SSD。第一种方式将VOC2007和VOC2012的训练集合并,训练时使用trainval,测试时使用VOC2007的test集。第二种方式适用于YOLOV3,将所有数据整合并创建相应的labels和txt文件,用于训练和验证。文章还提供了详细的目录结构和数据处理步骤。
最低0.47元/天 解锁文章
1863





