• Detectron2 代码剖析(一) data 部分


    Detectron2 中data的部分和maskrcnn_benchmark中的不太一样。
    首先,为了实现数据集的调用与实现的分离,在catalog.py中实现了DataCatalogMetadataCatalog两个类,分别存储了各种数据的属性,调用接口等。其中由DataCatalog.get(dataset_name') 返回数据列表,并由comom.py中实现的DatasetFromList生成data.Dataset

    DataCatalogMetadataCatalog两个类使用了类属性存储数据集属性与数据,用于创建data.Dataset,在整个detectron2中可以作为全局变量使用。
    其中DataCatalog中维护了一个_REGISTERED类属性,是一个dict{dataset_name:func},用以支持字符串访问并获得数据集的数据,例如可以通过DatasetCatalog.get('coco_2017_train')调用dataset/register_coco.py文件中的load_coco_json()函数地址。
    MetadataCatalog类维护了一个'_NAME_TO_META类属性,是一个list[Metadata]。 其中Metadata实例中存储了数据集的一些属性,所有数据集的公用属性有class_namesdataset_id_to_contiguous_idstuff_class_names,分别是类别名称,原数据集类别标签到训练用连续标签的映射和相对于目标的环境标签。 并不是所有数据集都有以上三种属性,而且每个数据集会有其他属性,例如coco数据集中会用到image_rootjson_file`等其他属性。

    总之,DataCatalogMetadataCatalog两个类实现了torch.utils.data.Dataset的创建与具体数据集读取的分,提供了使用字符串创建DatasetDataLoader的方法。
    具体DatasetDatasetFromLists创建,然后经过MapDatasetSampler等得到DataLoader

  • 相关阅读:
    webIDE 第二篇博文
    前端第一天
    记昨天
    入职第四天
    入职第二天
    linux常用命令,自己总结
    一切从头开始
    在服务器上搭建SVN
    Dynamic CRM 365学习历程--JS
    Dynamic CRM 365学习历程--有关CRM的学习过程种需要注意的事项
  • 原文地址:https://www.cnblogs.com/zi-wang/p/11777207.html
Copyright © 2020-2023  润新知