1 detectron2的dataloader主要在detectron2/data/文件夹中:
a. 第一个核心函数是根据提供的train.json等进行加载,举例coco.py中的load_coco_json函数,这个是加载json文件的。
b. 根据这个函数以及对应的json名字,就可以进行注册DatasetCatalog(这个是主要的)以及MetedataCatalog(主要是一些附加属性),这俩类在data/catalog.py中
c. 通过data/datasets/register_coco.py中register_coco_instances函数进行注册,最终在data/datasets/builtin.py中会对一些默认的数据集如coco,pascal_voc等数据集进行注册,然后通过data/datasets/init.py会对所有进行注册(该文件在导入包时自动加载)
d 之后通过调用data/build.py 里面的get_detection_dataset_dicts函数,也就是load_coco_json函数,得到dataset_dicts,然后通过data/common.py里面的DatasetFromList类已经Mapdataset类进行包装得到最终dataset(也就是torch…utils.data.dataset),之后再调用torch.utils.data.dataloader,得到最终的dataloader
e. 最终的函数是data/build.py中的build_detection_train_loader函数,当然在调用torch.utils.data.dataloader时,会输入sampler,transformer等,这两个模块和别的差别不大,就不详细描述
2 该dataloader可具体参考
a. https://zhuanlan.zhihu.com/p/88149772
b. 官方关于构建自己数据的例子https://colab.research.google.com/drive/16jcaJoc6bCFAQ96jDe2HwtXj7BMD_-m5#scrollTo=tjbUIhSxUdm_
Detectron2(一): Dataloader
最新推荐文章于 2024-02-21 20:48:22 发布