基于detectron2的yolov3项目--01--注册机制(Registry)

注:项目地址:https://github.com/jmu201521121021/yolo.pytorch

一、注册机制的使用方法(参考链接:https://zhuanlan.zhihu.com/p/93835858

from fvcore.common.registry import Registry
# 创建一个Registry对象
registry_machine = Registry('registry_machine')
# 注册
@registry_machine.register()
def print_hello_world(word):
    print(word)
    
# 其中cfg为所调用的函数名/类名
cfg = "print_hello_world"
# 相当与调用print_hello_world('hello world')
registry_machine.get(cfg)('hello world')

   先创建一个Registry的对象,并在方法/类定义的时候用装饰器装饰它,则可以通过 registry_machine.get(方法名)的 办法来间接的调用被注册的函数

   使用注册机制的好处:代码的可扩展性变强

二、项目中所用到的注册机制

    例子(加载训练数据mnist):

    1、目录结构

          

  2、运行顺序

         2.1、调用dataloader.py文件中的 build_classifier_train_dataloader(cfg) 函数

              其中cfg.DATASET.DATASET_NAME = "BuildMnistDataset" ->用于调用被注册的BuildMnistDataset类

              

         2.2、执行上图中的dataset = build_dataset(cfg, training=True)会先进入dataset文件夹下的__init__.py,将注册好的类/方法加载进来

              

         2.3、执行dataset = build_dataset(cfg, training=True)调用build.py中的build_dataset函数,函数中的DATASET_REGISTRY.get(dataset_name)(cfg, training)方法相当于创建一个mnist_dataset.py中的BuildMnistDataset(cfg, training)对象

              

         2.4、在上一步的创建对象时调用BuildMnistDataset(BaseDataset)类中的__init__方法执行setItems(cfg)后调用get_image_list方法就可以获取数据

              

   

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值