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完成了。