【目标检测适用】Pascal Voc(07+12)联合训练并在07上测试

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

跑过很多模型,每次用Pascal Voc的组织方式都不同,但是一般都是用Pascal Voc2007+2012做训练,在Pascal Voc2007上做测试,记录如下:

1. 概览

对于分类/检测任务而言,完成07 + 12数据集合并后,共得到如下数据:

  1. 训练数据:16551张图像,共40058个目标
  2. 测试数据:4952张图像,共12032个目标

其中VOC 2007的训练集提供了

  1. 训练数据:2501张图像,共6301个目标
  2. 验证数据:2510张图像,共6307个目标
  3. 训练+验证数据:5011张图像,共12608个目标

VOC 2012的训练集提供了

  1. 训练数据:5717张图像,共13609个目标
  2. 验证数据:5823张图像,共13841个目标
  3. 训练+验证数据:11540张图像,共27450个目标

VOC 2007的测试集提供了

测试数据:4952张图像,共12032个目标

2. 第一种组织方式

我把VOC_ROOT设置为/data/data_hx/new-YOLO-PyTorch/data/VOCdevkit/,下面有VOC2007VOC2012两个文件夹
在这里插入图片描述
这两个文件夹的内容怎么来的呢?
在这里插入图片描述
从官网下载四个压缩包,解压三个,其中VOC2012test我们是用不着的。

  1. VOCtrainval_11-May-2012,直接重命名为VOC2012
  2. VOCtrainval_06-Nov-2007VOCtest_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'
本文章已经生成可运行项目
评论 29
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值