Use Custom Dataloaders

github链接

现有的数据读取器是怎么工作的呢?

Detectron2包含一个建好的数据读取管道,很容易明白其工作原理,也方便自己重写一个数据读取器。

Detectron2提供两个函数,build_detection_{train,test}_loader从给定的config文件中创建数据读取器,下面是它的原理:

  • 输入数据集名称,如"coco_2017_train",以一个轻量级的,标准的统一接口将数据读取为list[dict]。此时数据实际上还没有开始被模型使用,图片还没有读到内存中,随机的数据增强也没做。可以从之前的dataset教程中查看数据集的相关使用。

  • list中的每个字典对象都是mapper函数映射而来。

    • 用户可以通过指定build_detection_{train,test}_loader中的mapper参数来标准化mapping函数,,默认的mapper是DatasetMapper。
    • 输出格式没有限制,只要能被数据消费者使用,这里的消费者一般指模型。
    • mapper的作用是将每一个轻量、标准的数据表示方式转化成模型可以识别的格式,比如,读取图像,随机做增强。默认mapper的输出解释如下:
  • mapper的输出是batch形式,通常是一个list。

  • 一个batch的数据是数据读取器的输出,典型的,是model.forward()的输入。

写数据读取器

在现有数据读取器上实现一个新的mapper通常是我们需要的。

如果你想做些不一样的,比如用自己的数据或者不同的batch逻辑,可以自己写数据读取器。数据读取器是一个简单的迭代器,只要组织成模型需要的输入形式,可以使用任何你喜欢的工具。

使用一般的数据读取器

如果用的是DefaultTrainer,可以重写build_{train,test}__loader方法来使用自己的数据读取器。参见densepose的例子。

如果自己写训练逻辑,可以简单的使用自己的数据读取器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sophia_xw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值