PyTorch读取目标检测数据集

本文介绍了如何使用PyTorch处理FSOD数据集,详细解析了数据集的组成,特别是图像标记数据的格式。接着展示了如何初始化数据结构,并详细说明了roidb的构造过程,包括在少样本目标检测任务中对数据进行特殊处理的步骤。最后提到了在构造完roidb后,通过DataLoader转换为训练所需格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据集介绍

一般的目标检测数据集由两部分组成,图片images和标签annotations。由少样本目标检测数据集FSOD为例。

FSOD数据集组成

图片部分就不多介绍了,重点来看一下标记部分annotation,对于图片的标记数据一般用json格式保存。
fsod_test.json文件内容
上面的图片是FSOD测试集的标记数据,以字典的形式保存,Keys分别为:
images: Values是一个列表,长度即测试集图片的数量。列表中的每个元素对应一个图片的数据, 例如id, file_name, width, height
type: Values是“instances”
annotations: Values是一个列表,长度即测试集图片的数量。列表中的每个元素对应一个图片的标记数据,例如 ignore, image_id, segmentation, bbox, area, category_id, is_crowed, id
categories: Values是一个列表,长度即数据集类别的数量。列表中的每个元素对应一个类别的数据,例如 supercategory, id, name

代码部分

Class: JsonDataset 这个类用来表示一张图片的标记数据

初始化函数

构造这个类只需要数据集的名称,如"fsod"。

def __init__(self, name):
    # DATASETS是我们预先写好的字典,保存各种数据集的相关路径
    assert name in DATASETS.keys(), \
        'Unknown dataset name: {}'.format(name)
    assert os.path.exists(DATASETS[name][IM_DIR]), \
        'Image directory \'{}\' not found'.format(DATASETS[name][IM_DIR])
    assert os.path.exists(DATASETS[name][ANN_FN]), \
        'Annotation file \'{}\' not found'.format(DATASETS[name][ANN_FN])
    logger.debug('Creating: {}'.format(name))
    self.name = name
    self.image_directory = DATASETS[name][IM_DIR]
    self.image_prefix = (
        '' if IM_PREFIX not in DATASETS[name] else DATASETS[name][IM_PREFIX]
    )
    # 根据标记文件路径构造COCO类
    self.COCO = COCO(DATASETS[name][ANN_FN])
    self.debug_timer = Timer()
    # Set up dataset classes
    # 获取所有的类别id
    category_ids = self.COCO.getCatIds()
    # 根据类别id获取所有类别的名称
    categories = [c['name'] for c in self.COCO.loadCats(category_ids)]
    # 类别名称与id的相互映射
    self.category_to_id_map = dict(zip(categories, category_ids))
    self.id_to_category_map = dict(zip(category_ids, categories))
    self.classes 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值