FSOD代码结构

数据加载

Pascal VOC 2007+2012

数据集划分

在20个类别当中选择5个类别作为新类别novel classes,剩下的15个类别作为基础类别base classes,根据三种不同的novel classes对数据有三种划分,split1, split2, split3。三种类别划分分别如下所示,划分文件保存在lib/model/utils/config.py,类别索引从1开始,背景为0。

__C.TRAIN.ALLCLASSES_FIRST = ['aeroplane', 'bicycle', 'boat', 'bottle', 'car',
                              'cat', 'chair', 'diningtable', 'dog', 'horse',
                              'person', 'pottedplant', 'sheep', 'train', 'tvmonitor',
                              'bird', 'bus', 'cow', 'motorbike', 'sofa']

__C.TRAIN.BASECLASSES_FIRST = ['aeroplane', 'bicycle', 'boat', 'bottle', 'car',
                               'cat', 'chair', 'diningtable', 'dog', 'horse',
                               'person', 'pottedplant', 'sheep', 'train', 'tvmonitor']

数据读取

基础类别训练

事先根据类别划分在数据集中找到相应类别的图片,将图片名保存在如下形式的路径中data/VOCdevkit/VOC2007/ImageSets/Main/voc_2007_train_first_split.txt。在基础阶段训练时(base training),程序会根据数据集"voc_2007_train_first_split+voc_2012_train_first_split"在对应文件夹中读取相应的读片组成训练集。

如果只是正常训练的话这种读取方式就足够了,但是在元学习(meta learning)的训练中还需要读取支持集(support set)。程序会在Pascal Voc 2007+2012 trainval 数据中每个类别选择200(shots)张图片组成支持集,程序文件保存在lib/datasets/metadata.py

新类别微调

与基础训练阶段不同的是,微调阶段必须保证每个novel class对应的图片数量就是指定的***shot***, 因此我们不能在不同的数据集中选择支持集和训练集,这必然导致novel classes对应的图片会选择多张。

微调阶段指定的数据集名称为voc_2007_shots,程序metadata.py首先会在Pascal Voc 2007 trainval中每个类别都找到shot*3张图片,将图片名保存在data/VOCdevkit/VOC2007/ImageSets/Main/shots.txt,接下来每个新类别只保留shots张图片组成支持集。

读取上一步保存的shots.txt中的图片,并且滤除novel classes对应多余的图片组成训练集。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值