On this page

    Lazy Configs

    传统的基于yacs的配置系统提供基本的、标准的功能。然而,它不能为许多新项目提供足够的灵活性。我们开发了一个可替代的、non-intrusive 的配置系统,可以与detectron2或其他任何复杂的项目一起使用。

    Python Syntax

    我们的配置对象仍然是字典。我们没有使用Yaml来定义字典,而是直接在Python中创建字典。这为用户提供了以下在Yaml中不存在的功能:

    Python配置文件可以这样加载

    # config.py:
    a = dict(x=1, y=2, z=dict(xx=1))
    b = dict(x=3, y=4)
    
    # my_code.py:
    from detectron2.config import LazyConfig
    cfg = LazyConfig.load("path/to/config.py")  # an omegaconf dictionary
    assert cfg.a.z.xx == 1
    

    LazyConfig.load 后,cfg 将是一个字典,其中包含配置文件全局范围内定义的所有字典。请注意:

    LazyConfig.save 可以将配置对象保存为yaml。注意,如果配置文件中出现了不可序列化的对象(例如lambdas),这并不总是成功的。这取决于用户是否要牺牲储蓄的能力来换取灵活性。

    Recursive Instantiation