(十五)mmdetection源码解读:runner

一、runner构建过程

Runner是MMdetection中的一种深度学习算法“工厂”,是对深度学习算法各个组件的“容器”。简单来说,所有的机器学习算法所包含的无非就是数据、模型、训练策略、评估、推理这五个部分。Runner就是将这五个部分组合在一起的工具。
​ Runner的源码封装在MMCV库当中,目前主要是有epoch_runner和iter_runner两种,本质上差不多,只是大家的习惯不同罢了。 MMDetection 默认采用 Epoch 。

runner = build_runner(
    cfg.runner,
    default_args=dict(
        model=model,
        optimizer=optimizer,
        work_dir=cfg.work_dir,
        logger=logger,
        meta=meta))
#runner在配置文件中的设置举例
runner = dict(type='EpochBasedRunner', max_epochs=12)

这个地方有点绕,先通过runner_constructor = build_runner_constructor()实例化DefaultRunnerConstructor类,然后再通过runner = runner_constructor()调用DefaultRunnerConstructor类的__call__函数,然后调用build_from_cfg,实例化EpochBasedRunner

def build_runner(cfg, default_args=None):
    runner_cfg = copy.deepcopy(cfg)
    constructor_type = runner_cfg.pop('constructor',
                                      'DefaultRunnerConstructor')
    runner_constructor = build_runner_constructor(
        dict(
            type=constructor_type,
            runner_cfg=runner_cfg,
            default_args=default_args))
    runner = runner_constructor()
    return runner
class DefaultRunnerConstructor:
    def __call__(self):
        return RUNNERS.build(self.runner_cfg, default_args=self.default_args)

二、runner包含的功能

1、resume和load_checkpoint。对应加载断点文件和预训练模型。
2、save_checkpoint,保存断点,将由checkpointhook调用。
3、register_hook,负责注册hook类到self._hooks中
4、call_hook,调用hook类
5、train和val,训练和验证方法
6、run方法开启真正的工作流

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值