mmcv2.0中build dataloader的流程

1. build dataloader的流程

在mmcv2.0中,构建dataloader的步骤并不是直接DATALOADER.buid(),而是在初始化Loop的时候,通过runner来构建dataloader。

1.1. build Dataset的流程

runner.py里的Runer类包含一个方法builid_dataloader,用来构建dataloader,这个dataloader要构建的类包括三个:Dataset、Sampler、Dataloader。

首先构建的是Dataset:

在构建Dataset时,由于通常我们的dataset类是继承了好几层的父类,所以需要逐层的往里进行初始化。例如我们的dataset类是NuScenesDataset,build时,首先会进入这个类的__init__中:

然后会进入它的父类Det3DDataset的__init__中:

再进入Det3DDataset的父类BaseDataset的__init__中进行构建:

1.2. build Sampler的流程

然后是build Sampler

1.3. build Dataloader的流程

然后是构建Dataloader:

然后会进入到Dataloader的__init__函数里,如果之前没有对batch_sampler进行初始化,也就是batch_sampler还是None,那么在__init__函数里会对batch_sampler进行初始化。同样的,如果collate_fn是None,那么在在__init__函数里会对collate_fn进行初始化:

到这里,Dataloader差不多就build完成了。

 

posted @ 2024-08-28 10:29  Picassooo  阅读(22)  评论(0编辑  收藏  举报