demo 中的脚本。configs:示例配置文件合集。datasets:数据集准备工作,主要就是各个数据集的基本结构,以及需要如何预处理。demo:快速体验Detectron2,与Getting Started文档对应。如果想要体验Model ZOO中结果的内容就可以用这个。detectron2:项目主要代码都在这里了。dev:一些开发者会用到的脚本。docker:没啥好介绍的。docs:一些官方文档。projects:基于Detectron2的三个项目,DensePose/TensorMask/TridentNet。 tests:单元测试类。tools:常用脚本,如训练、benchmark、展示数据集等。detectron2/config/default.py 文件。configs 文件夹中,且使用yaml形式。_BASE_属性,可以将其他示例配置文件作为基础,如果有冲突则用当前配置文件的信息覆盖。@registry_object.register 修饰目标方法/类,这样可以在导入detectron2的同时将 key/value 保存起来。detectron2/modeling/__init__.py 文件。build.py,主要就是从Registry中通过名称获取方法/类,然后将示例配置文件中参数导入目标方法/类中。detectron2/data/catalog.py 中的 MetadataCatalog 与 DatasetCatalog,前者保存了数据集的元数据,后者保留了一个方法,该方法用于获取数据集 list(dict)。detectron2/data/datasets/buildin.py 中调用了 register_all_coco() 等四个方法,这些方法调用了 MetadataCatalog 和 DatasetCatalog的注册方法。build_detection_train_loader 方法,该方法会调用DatasetCatalog中的方法,获取 list(dict)。get_dict 方法,该方法用于获取一个 list[dict] 对象,每个字典就是一条输入数据,具体的key列表可以到文档中自己看。MetadataCatalog.get(dataset_name).set(name, value) 为新数据库添加元数据。list[dict] 对象。DatasetMapeer 中。model.forward() 的输入。build_model, build_backbone,build_roi_heads 等方法来构建。DetectionCheckpointer(model).load(file_path)。outputs = model(inputs)list[dict] 来实现,即上面dataloader的输出,具体的key形式可以参考这个页面中的内容。list[dict],具体的形式可以参考这篇文章中的内容。tools/plain_train_net.py 来训练模型。SimpleTrainer().train()。DefaultTrainer().train()。CfgNode 对象的使用。_BASE_参数来重复配置定义到一个文件中。detectron2/data/build.py 中的 build_detection_train_loader或build_detection_test_loader 方法。detectron2/detectron2/data 目录下。detectron2/config/defaults.py 中 _C.INPUT _C.DATASETS _C.DATALOADER 开头的配置。1.3. 中的内容。detectron2/detectron2/data/datasets/builtin.py。DatasetCatalog 对象以及 MetadataCatalog 对象,解析数据集并获取数据集基本信息。 DatasetCatalog 中的对应的方法,获取 list[dict] 对象。DatasetCatalog 获取的是 list[dict],mapper函数输出的也是 list[dict],但前后两个字典的形式是不一样的,具体可以参考官方文档,里面都有具体的描述。detectron2/detectron2/data/build.py 中。list[dict] 对象。先根据数据库名称调用 DatasetCatalog 中的方法,获取原始 list[dict] 对象,再通过一些条件进行筛选。DatasetFromList 对象,该类是 torch.utils.data.Dataset 的子类。DatasetMapper的源码,主要工作包括读取图像、resize、crop、flip、转换数据与标签的形式等。torch.utils.data.sampler.Sampler 对象,实现的功能好像包括Repeat Sample、shuffle、batch功能。torch.utils.data.DataLoader 对象。DatasetFromList、MapDataset等,有点 tf.data 的感觉,挺有意思。detectron2/detectron2/data/transforms/transform_gen.py 中定义。from detectron2.data import transforms as T 以及 T.ResizeShortestEdge 来实现。DatasetMapper 的源码中看。detectron2/detectron2/modeling/meta_arch/build.py 中的 def build_model(cfg) 方法。detectron2/detectron2/modeling 目录下。detectron2/config/defaults.py中_C.MODEL 开头的配置。META_ARCHITECTURE 参数,选择基本框架,也就是 meta arch。 ANCHOR_GENERATOR_REGISTRY:如何生成anchors。BACKBONE_REGISTRY:主干网络,包括FPN。META_ARCH_REGISTRY:基本网络,总体结构。SEM_SEG_HEADS_REGISTRY:应该是用来做语义分隔的。PROPOSAL_GENERATOR_REGISTRY:Faster RCNN中的Region proposal Network,即如何生成proposals。RPN_HEAD_REGISTRY:第一阶段训练所需的输入。ROI_BOX_HEAD_REGISTRY:ROI Head中的bbox分支。ROI_HEADS_REGISTRY:通过特征图和第一阶段的proposals得到ROI。ROI_KEYPOINT_HEAD_REGISTRY:ROI Head中的keypoint分支。ROI_MASK_HEAD_REGISTRY:ROI Head中的mask分支。detectron2/detectron2/engine/defaults.py 中的 DefaultTrainer, DefaultPredictor。detectron2/detectron2/engine 和 detectron2/detectron2/solver 中detectron2/config/defaults.py中_C.SOLVER _C.TEST 开头的配置。TrainerBase, SimpleTrainer, DefaultTrainer 三个类。TrainerBase: detectron2/detectron2/engine/train_loop.py 中。HookBase 对象,在训练过程的各个时间点进行自定义处理。train(self, start_iter: int, max_iter: int),且维训练提供了一个 EventStorage 对象。SimpleTrainer: detectron2/detectron2/engine/train_loop.py 中。TrainerBase 的基础上添加了训练所需的基本参数以及最基本的训练过程代码。model/data_loader/optimizerrun_step 函数中,主要包括的功能是: EventStorage 对象中。DefaultTrainer detectron2/detectron2/engine/defaults.py 中。SimpleTrainer 的基础上,提供了通过配置文件创建模型、数据集、优化器、学习率等一系列操作。detectron2/detectron2/engine/hooks.py 中。