模型包 (Model Bundle)#

配置项 (Config Item)#

class monai.bundle.Instantiable[source]#

可实例化对象的基类。

abstract instantiate(*args, **kwargs)[source]#

实例化目标组件并返回该实例。

返回类型:

object

abstract is_disabled(*args, **kwargs)[source]#

返回一个布尔标志,用于指示对象是否应被实例化。

返回类型:

bool

class monai.bundle.ComponentLocator(excludes=None)[source]#

扫描 MONAI 包中所有可用的类和函数,并将它们与模块路径映射在表格中。它用于定位给定组件名称的模块路径。

参数:

excludes (Union[Sequence[str], str, None]) – 如果 excludes 中的任何字符串存在于完整的模块名称中,则不导入该模块。

get_component_module_name(name)[source]#

获取具有指定 name 的类或函数的完整模块名称。如果目标组件名称存在于多个包或模块中,则返回完整模块名称的列表。

参数:

name (str) – 预期的类或函数的名称。

返回类型:

UnionType[list[str], str, None]

class monai.bundle.ConfigComponent(config, id='', locator=None, excludes=None)[source]#

monai.bundle.ConfigItem 的子类,此类使用带有字符串键的字典来表示 classfunction 的组件,并支持实例化。

目前,除了常规字面量外,还定义并解释了三个特殊键(被 _ 包围的字符串):

  • "_target_" 指定的 Python 模块的类或函数标识符,指示一个 MONAI 内置 Python 类或函数(例如 "LoadImageDict")、完整模块名称(例如 "monai.transforms.LoadImageDict")或可调用对象(例如 "$@model.forward")。

  • "_requires_" (可选):为此 ConfigComponent 对象指定引用 ID(以 "@" 开头的字符串)或依赖项的 ConfigExpression。这些依赖项将在实例化此对象之前进行评估/实例化。当组件不通过参数显式依赖其他 ConfigItems,但需要预先实例化/评估依赖项时,此选项非常有用。

  • "_disabled_" (可选):用于指示是否跳过实例化的标志。

  • "_desc_" (可选):组件的自由文本描述,用于提高代码可读性。

  • "_mode_" (可选):调用由 "_target_" 定义的 component 的运行模式。

    • "default":返回 component(**kwargs)

    • "callable":返回 component,或者如果提供了 kwargs,则返回 functools.partial(component, **kwargs)

    • "debug":返回 pdb.runcall(component, **kwargs)

配置内容中的其他字段是 Python 模块的输入参数。

from monai.bundle import ComponentLocator, ConfigComponent

locator = ComponentLocator(excludes=["modules_to_exclude"])
config = {
    "_target_": "LoadImaged",
    "keys": ["image", "label"]
}

configer = ConfigComponent(config, id="test", locator=locator)
image_loader = configer.instantiate()
print(image_loader)  # <monai.transforms.io.dictionary.LoadImaged object at 0x7fba7ad1ee50>
参数:
  • config (Any) – 配置项的内容。

  • id (str) – 当前配置项的名称,默认为空字符串。

  • locator (Optional[ComponentLocator, None]) – 一个用于将模块名称字符串转换为实际 Python 模块的 ComponentLocator。如果为 None,则使用 ComponentLocator(excludes=excludes)

  • excludes (Union[Sequence[str], str, None]) – 如果 locator 为 None,则创建一个带有 excludes 的新 ComponentLocator。另请参阅:monai.bundle.ComponentLocator

instantiate(**kwargs)[source]#

基于 self.config 内容实例化组件。目标组件必须是 classfunction,否则返回 None

参数:

kwargs (Any) – 实例化时用于覆盖/添加配置参数的参数。

返回类型:

object

is_disabled()[source]#

instantiate() 中使用的实用函数,用于检查是否跳过实例化。

返回类型:

bool

static is_instantiable(config)[source]#

检查此配置是否表示要实例化的 classfunction

参数:

config (Any) – 要检查的输入配置内容。

返回类型:

bool

resolve_args()[source]#

instantiate() 中使用的实用函数,用于从当前配置内容中解析参数。

resolve_module_name()[source]#

从当前配置内容中解析目标模块名称。配置内容必须包含 "_target_" 键。

class monai.bundle.ConfigExpression(config, id='', globals=None)[source]#

monai.bundle.ConfigItem 的子类,该 ConfigItem 表示一个可执行表达式(基于 eval() 执行,如果是 import 语句,则将模块导入到 globals 中)。

例如

import monai
from monai.bundle import ConfigExpression

config = "$monai.__version__"
expression = ConfigExpression(config, id="test", globals={"monai": monai})
print(expression.evaluate())
参数:
  • config (Any) – 配置项的内容。

  • id (str) – 当前配置项的名称,默认为空字符串。

  • globals (Optional[dict, None]) – 用于评估字符串的附加全局上下文。

evaluate(globals=None, locals=None)[source]#

执行当前配置内容,如果是表达式,则返回结果(基于 Python eval())。更多详细信息:https://docs.pythonlang.cn/3/library/functions.html#eval。

参数:
  • globals (Optional[dict, None]) – 除了 self.globals 之外,运行时表达式中使用的其他全局符号。

  • locals (Optional[dict, None]) – 除了 globals 之外,运行时表达式中可能使用的一些局部符号。

返回类型:

Union[str, Any, None]

classmethod is_expression(config)[source]#

检查配置是否为可执行表达式字符串。目前,以 "$" 字符开头的字符串被解释为表达式。

参数:

config (UnionType[dict, list, str]) – 要检查的输入配置内容。

返回类型:

bool

classmethod is_import_statement(config)[source]#

检查配置是否为 import 语句(表达式的一种特殊情况)。

参数:

config (UnionType[dict, list, str]) – 要检查的输入配置内容。

返回类型:

bool

class monai.bundle.ConfigItem(config, id='')[source]#

用于表示配置项的基本数据结构。

一个 ConfigItem 实例可以可选地具有一个字符串 ID,以便其他项可以引用它。它具有一个内置的 config 属性来存储配置对象。

参数:
  • config (Any) – 配置项的内容,可以是任何类型的对象,配置解析器可以解释该内容以生成配置对象。

  • id (str) – 当前配置项的名称,默认为空字符串。

get_config()[source]#

获取当前配置项的配置内容。

get_id()[source]#

获取当前配置项的 ID 名称,在解析过程中用于标识配置项非常有用。

返回类型:

str

update_config(config)[source]#

用新 config 替换 self.config 的内容。一种典型的用法是在运行时修改初始配置内容。

参数:

config (Any) – ConfigItem 的内容。

返回类型:

None

引用解析器 (Reference Resolver)#

class monai.bundle.ReferenceResolver(items=None)[source]#

用于管理一组 ConfigItem 并解析它们之间引用的实用类。

此类维护一组 ConfigItem 对象及其关联的 ID。这些 ID 在集合内必须是唯一的。在 ConfigItem 中以 @ 开头的字符串将被视为通过 ID 对其他 ConfigItem 对象的引用。由于 ConfigItem 可能具有嵌套的字典或列表结构,引用字符串还可以包含分隔符 ::,以通过字典的键索引或列表的整数索引引用子结构。

在此类中,解析引用本质上是用相应的 Python 对象替换引用字符串。解析引用的典型工作流程如下:

  • 通过 add_item() 将多个 ConfigItem 对象添加到 ReferenceResolver 中。

  • 调用 get_resolved_content() 自动解析引用。这是通过(递归)以下方式完成的:
    • 对于那些没有引用其他项的项,将其转换为对象。
      • 如果它是可实例化的,则实例化它并在 resolved_content 中缓存类实例。

      • 如果它是一个表达式,则对其求值并将值保存在 resolved_content 中。

    • 用相应的对象替换引用字符串。

参数:

items (Optional[Sequence[ConfigItem], None]) – 要解析的 ConfigItem,稍后可以使用 add_item() 添加。

add_item(item)[source]#

ConfigItem 添加到解析器中。

参数:

item (ConfigItem) – 一个 ConfigItem

返回类型:

None

classmethod find_refs_in_config(config, id, refs=None)[source]#

递归搜索输入配置项的所有内容以获取引用的 ID。引用意味着:其他配置项的 ID(此配置项中的 "@XXX"),或者配置中的子项是 instantiable(可实例化的),或者配置中的子项是 expression(表达式)。对于 dictlist,递归检查子项。

参数:
  • config (Any) – 要搜索的输入配置内容。

  • id (str) – 输入配置项的 ID 名称。

  • refs (Optional[dict[str, int], None]) – ID 名称和找到的引用计数的字典,默认为 None

返回类型:

dict[str, int]

get_item(id, resolve=False, **kwargs)[source]#

通过 id 获取 ConfigItem

如果 resolve=True,则返回的项将被解析,即所有的引用字符串都会被相应的 ConfigItem 对象替换。

参数:
  • id (str) – 预期配置项的 ID。

  • resolve (bool) – 如果该项未被解析,是否对其进行解析,默认为 False。

  • kwargs (Any) – 传递给 _resolve_one_item() 的关键字参数。目前支持 instantiateeval_expr。两者默认都为 True。

返回类型:

UnionType[ConfigItem, None]

get_resolved_content(id, **kwargs)[source]#

通过 id 获取解析后的 ConfigItem

参数:
  • id (str) – 预期项的 ID 名称。

  • kwargs (Any) – 传递给 _resolve_one_item() 的关键字参数。目前支持 instantiateeval_exprdefaultinstantiateeval_expr 默认都为 True;如果 id 不在配置内容中,则 default 为目标配置项,必须是 ConfigItem 对象。

返回类型:

Union[ConfigExpression, str, Any, None]

classmethod iter_subconfigs(id, config)[source]#

遍历输入配置的子配置,输出 sub_id 使用 cls.sep 表示子结构。

参数:
  • id (str) – 当前输入配置的 ID 字符串。

  • config (Any) – 要遍历的输入配置。

返回类型:

Iterator[tuple[str, str, Any]]

classmethod match_refs_pattern(value)[source]#

匹配输入字符串的正则表达式以查找引用。引用字符串以 "@" 开头,例如:"@XXX::YYY::ZZZ"

参数:

value (str) – 要匹配正则表达式的输入值。

返回类型:

dict[str, int]

classmethod normalize_id(id)[source]#

规范化 ID 字符串以一致地使用 cls.sep

参数:

id (UnionType[str, int]) – 要规范化的 ID 字符串。

返回类型:

str

normalize_meta_id(config)[source]#

使用 DEPRECATED_ID_MAPPING 更新 config 中已弃用的标识符。这将使用它们的替代名称替换标记为已弃用的名称。

参数:

config (Any) – 要更新的输入配置。

返回类型:

Any

remove_resolved_content(id)[source]#

按 id 删除解析后的 ConfigItem

参数:

id (str) – 预期项的 ID 名称。

返回类型:

Optional[Any, None]

reset()[source]#

清除所有已添加的 ConfigItem 和所有解析后的内容。

classmethod split_id(id, last=False)[source]#

通过 cls.sep 将 ID 字符串拆分为字符串列表。

参数:
  • id (UnionType[str, int]) – 要拆分的 ID 字符串。

  • last (bool) – 是否拆分 ID 的最右侧部分。默认为 False(拆分所有部分)。

返回类型:

list[str]

classmethod update_config_with_refs(config, id, refs=None)[source]#

利用 refs 中的所有引用,使用引用更新输入配置内容并返回新配置。

参数:
  • config (Any) – 要更新的输入配置内容。

  • id (str) – 输入配置的 ID 名称。

  • refs (Optional[dict, None]) – 所有带 ID 的引用内容,默认为 None

返回类型:

Any

classmethod update_refs_pattern(value, refs)[source]#

匹配输入字符串的正则表达式以使用引用更新内容。引用部分以 "@" 开头,例如:"@XXX::YYY::ZZZ"。引用字典必须包含作为键的引用 ID。

参数:
  • value (str) – 要匹配正则表达式的输入值。

  • refs (dict) – 所有以 ID 为键的引用组件,默认为 None

返回类型:

str

配置解析器 (Config Parser)#

class monai.bundle.ConfigParser(config=None, excludes=None, globals=None)[source]#

主要的配置解析器。它遍历结构化配置(以嵌套 Python 字典或列表的形式),创建 ConfigItem,并根据结构分配唯一的 ID。

此类通过 ID 提供对配置中 ConfigItem 集合的便捷访问。配置解析的典型工作流程如下:

  • 使用 config 源初始化 ConfigParser

  • 调用 get_parsed_content() 获取带有 id 的预期组件。

from monai.bundle import ConfigParser

config = {
    "my_dims": 2,
    "dims_1": "$@my_dims + 1",
    "my_xform": {"_target_": "LoadImage"},
    "my_net": {"_target_": "BasicUNet", "spatial_dims": "@dims_1", "in_channels": 1, "out_channels": 4},
    "trainer": {"_target_": "SupervisedTrainer", "network": "@my_net", "preprocessing": "@my_xform"}
}
# in the example $@my_dims + 1 is an expression, which adds 1 to the value of @my_dims
parser = ConfigParser(config)

# get/set configuration content, the set method should happen before calling parse()
print(parser["my_net"]["in_channels"])  # original input channels 1
parser["my_net"]["in_channels"] = 4  # change input channels to 4
print(parser["my_net"]["in_channels"])

# instantiate the network component
parser.parse(True)
net = parser.get_parsed_content("my_net", instantiate=True)
print(net)

# also support to get the configuration content of parsed `ConfigItem`
trainer = parser.get_parsed_content("trainer", instantiate=False)
print(trainer)
参数:
  • config (Optional[Any, None]) – 要解析的输入配置源。

  • excludes (Union[Sequence[str], str, None]) – 导入模块以实例化组件时,从 excludes 中指定的模块中排除组件。

  • globals (Union[dict[str, Any], None, bool]) – 将预导入的包作为全局变量预导入到 ConfigExpression,以便表达式(例如 "$monai.data.list_data_collate")可以使用 monai 模块。当前支持的全局变量和别名名称为 {"monai": "monai", "torch": "torch", "np": "numpy", "numpy": "numpy"}。这些是 MONAI 的最小依赖项。可以通过 globals={“itk”: “itk”} 包含其他包。将其设置为 False 以禁用 self.globals 模块导入。

另请参阅

__contains__(id)[source]#

如果 id 存储在此配置中,则返回 True。

参数:

id (UnionType[str, int]) – 指定预期位置的 id。另请参阅 __getitem__()

返回类型:

bool

__getattr__(id)[source]#

获取具有指定 idConfigItem 的解析结果(使用默认参数,例如 lazy=Trueinstantiate=Trueeval_expr=True)。当结果是 dict 或 list 时,它被包装在 _ConfigProxy 中,以便嵌套的属性和索引通过配置层次结构进行链式调用。例如,parser.training.trainer.max_epochs 等同于 parser.get_parsed_content("training::trainer::max_epochs")

参数:

idConfigItem 的 id。

返回:

解析后的内容(实例、已评估的表达式或配置值)。当它是 dictlist 时,它被包装在 _ConfigProxy 中,因此嵌套的属性/索引通过配置层次结构进行链式调用。

另请参阅

get_parsed_content()

__getitem__(id)[source]#

按 id 获取配置。

参数:

id (UnionType[str, int]) – ConfigItem 的 id,ID 中的 "::" (或 "#") 被解释为进入嵌套结构下一层的特殊字符。对列表使用从“0”开始的数字索引,对字典使用其他字符串。例如:"xform::5", "net::channels""" 表示整个 self.config

返回类型:

Any

__init__(config=None, excludes=None, globals=None)[source]#
__repr__()[source]#

返回 repr(self)。

__setitem__(id, config)[source]#

id 设置配置。请注意,此方法应在 parse()get_parsed_content() 之前使用,以确保更新包含在解析的内容中。

参数:
  • id (UnionType[str, int]) – ConfigItem 的 id,ID 中的 "::" (或 "#") 被解释为进入嵌套结构下一层的特殊字符。对列表使用从“0”开始的数字索引,对字典使用其他字符串。例如:"xform::5", "net::channels""" 表示整个 self.config

  • config (Any) – 在位置 id 处设置的配置。

返回类型:

None

__weakref__#

对象的弱引用列表(如果定义)

classmethod export_config_file(config, filepath, fmt='json', **kwargs)[source]#

将配置内容导出到指定文件路径(目前支持 JSON 和 YAML 文件)。

参数:
  • config (dict) – 要导出的源配置内容。

  • filepath (UnionType[str, PathLike]) – 要保存的目标文件路径。

  • fmt (str) – 配置内容的格式,目前支持 "json""yaml"

  • kwargs (Any) – json.dumpyaml.safe_dump 的其他参数,取决于文件格式。

返回类型:

None

get(id='', default=None)[source]#

按 id 获取配置。

参数:
  • id (str) – 指定预期位置的 id。另请参阅 __getitem__()

  • default (Optional[Any, None]) – 如果指定的 id 无效,则返回的默认值。

返回类型:

Any

get_parsed_content(id='', **kwargs)[source]#

获取具有指定 idConfigItem 的解析结果。

  • 如果项是 ConfigComponentinstantiate=True,则结果为实例。

  • 如果项是 ConfigExpressioneval_expr=True,则结果为评估输出。

  • 否则,结果为 ConfigItem 的配置内容。

参数:
  • id (str) – ConfigItem 的 id,ID 中的 "::" (或 "#") 被解释为进入嵌套结构下一层的特殊字符。对列表使用从“0”开始的数字索引,对字典使用其他字符串。例如:"xform::5", "net::channels""" 表示整个 self.config

  • kwargs (Any) – 传递给 _resolve_one_item 的附加关键字参数。目前支持 lazy(是否保留当前配置缓存,默认为 True)、instantiate(是否实例化 ConfigComponent,默认为 True)和 eval_expr(是否评估 ConfigExpression,默认为 True),default(如果 id 不在配置内容中,则返回的默认配置项)。

返回类型:

Any

classmethod load_config_file(filepath, **kwargs)[source]#

加载具有指定文件路径的单个配置文件(目前支持 JSON 和 YAML 文件)。

参数:
  • filepath (UnionType[str, PathLike]) – 要加载的目标文件路径,支持的后缀:.json, .yml, .yaml

  • kwargs (Any) – json.load`yaml.safe_load 的其他参数,取决于文件格式。

返回类型:

dict

classmethod load_config_files(files, **kwargs)[source]#

将多个配置文件加载到单个配置字典中。列表中的后续配置文件将覆盖或添加到前一个配置文件中。配置键中的 "::" (或 "#") 被解释为进入嵌套结构下一层的特殊字符。

参数:
  • files (UnionType[str, PathLike, Sequence[UnionType[str, PathLike]], dict]) – 要加载的目标文件路径,支持的后缀:.json, .yml, .yaml。如果提供文件列表,将合并它们的内容。如果提供逗号分隔文件路径的字符串,将合并它们的内容。如果提供字典,则直接返回。

  • kwargs (Any) – json.load`yaml.safe_load 的其他参数,取决于文件格式。

返回类型:

dict

parse(reset=True)[source]#

递归解析 self.config 以将宏标记替换为目标内容。然后递归解析配置源,并将每个项作为 ConfigItem 添加到引用解析器中。

参数:

reset (bool) – 是否在解析前重置 reference_resolver。默认为 True

返回类型:

None

read_config(f, **kwargs)[source]#

从指定的 JSON/YAML 文件或字典中读取配置,并覆盖 self.config 字典中的配置内容。

参数:
  • f (UnionType[str, PathLike, Sequence[UnionType[str, PathLike]], dict]) – 配置文件路径,内容必须是字典,如果提供文件列表,将合并它们的内容。如果直接提供字典,则将其用作配置。

  • kwargs (Any) – json.loadyaml.safe_load 的其他参数,取决于文件格式。

返回类型:

None

read_meta(f, **kwargs)[source]#

从指定的 JSON 或 YAML 文件读取元数据。作为字典的元数据将存储在 self.config["_meta_"] 中。

参数:
  • f (UnionType[str, PathLike, Sequence[UnionType[str, PathLike]], dict]) – 元数据文件路径,内容必须是字典,如果提供文件列表,将合并它们的内容。如果直接提供字典,则将其用作元数据。

  • kwargs (Any) – json.loadyaml.safe_load 的其他参数,取决于文件格式。

返回类型:

None

resolve_macro_and_relative_ids()[source]#

递归解析 self.config 以将相对 ID 替换为绝对 ID(例如,@##A 表示上一级的 A),并将宏标记替换为目标内容。宏标记以“%”开头,可以来自其他结构化文件,例如:"%default_net", "%/data/config.json::net"

classmethod resolve_relative_ids(id, value)[source]#

为了简化嵌套配置内容中的引用或宏标记 ID,可以使用以 ID_SEP_KEY 开头的相对 ID 名称,例如,“@#A”表示同一级别的 A,“@##A”表示上一级的 A。它将相对 ID 解析为绝对 ID。例如,如果输入数据是:

{
    "A": 1,
    "B": {"key": "@##A", "value1": 2, "value2": "%#value1", "value3": [3, 4, "@#1"]},
}

它会将 B 解析为 {“key”: “@A”, “value1”: 2, “value2”: “%B#value1”, “value3”: [3, 4, “@B#value3#1”]}

参数:
  • id (str) – 计算相对 ID 的当前配置项的 ID 名称。

  • value (str) – 要解析相对 ID 的输入值。

返回类型:

str

set(config, id='', recursive=True)[source]#

id 设置配置。

参数:
  • config (Any) – 在位置 id 处设置的配置。

  • id (str) – 指定预期位置的 id。另请参阅 __setitem__()

  • recursive (bool) – 如果嵌套 id 不存在,是否递归创建配置中的嵌套项。默认为 True。对于嵌套 id,对于缺失部分仅支持 dict

返回类型:

None

classmethod split_path_id(src)[source]#

src 字符串拆分为两部分:配置文件路径和组件 id。文件路径应以 (json|yaml|yml) 结尾。如果存在,组件 id 应以 :: 分隔。如果没有路径或 id,则返回 “”。

参数:

src (str) – 要拆分的源字符串。

返回类型:

tuple[str, str]

update(pairs)[source]#

在 pairs 中设置 id 和相应的配置内容,另请参阅 __setitem__()。例如,parser.update({"train::epoch": 100, "train::lr": 0.02})

参数:

pairs (dict[str, Any]) – id 和配置对的字典。

返回类型:

None

脚本 (Scripts)#

monai.bundle.ckpt_export(net_id=None, filepath=None, ckpt_file=None, meta_file=None, config_file=None, key_in_ckpt=None, use_trace=None, input_shape=None, args_file=None, converter_kwargs=None, **override)[source]#

将模型检查点导出到给定的文件路径,并包含作为 JSON 文件提供的元数据和配置。

典型使用示例

python -m monai.bundle ckpt_export network --filepath <export path> --ckpt_file <checkpoint path> ...
参数:
  • net_id (Optional[str, None]) – 配置中网络组件的 ID 名称,它必须是 torch.nn.Module。默认为 “network_def”。

  • filepath (Union[str, PathLike, None]) – 要导出的文件路径,如果文件名没有扩展名,它将变为 .ts。如果未指定 bundle_root,则默认为 “os.getcwd()” 下的 “models/model.ts”。

  • ckpt_file (Optional[str, None]) – 要加载的模型检查点文件路径。如果未指定 bundle_root,则默认为 “os.getcwd()” 下的 “models/model.pt”。

  • meta_file (Union[Sequence[str], str, None]) – 元数据文件路径,如果是文件路径列表,将合并它们的内容。如果未指定 bundle_root,则默认为 “os.getcwd()” 下的 “configs/metadata.json”。

  • config_file (Union[Sequence[str], str, None]) – 用于保存在 TorchScript 模型中并提取网络信息的配置文件路径。在 TorchScript 模型中保存的键为不带扩展名的配置文件名,保存的配置值始终以 JSON 格式序列化,无论原始文件格式是 JSON 还是 YAML。它可以是单个文件或文件列表。如果为 None,则必须在 args_file 中提供。

  • key_in_ckpt (Optional[str, None]) – 对于嵌套的 checkpoint(如 {“model”: XXX, “optimizer”: XXX, …}),指定模型权重的键。如果不是嵌套的 checkpoint,则无需设置。

  • use_trace (Optional[bool, None]) – 是否使用 torch.jit.trace 将 PyTorch 模型转换为 TorchScript 模型。

  • input_shape (Optional[Sequence[int], None]) – 将模型转换为 TorchScript 模型时,用于生成网络随机输入的形状。应为形如 [N, C, H, W] 或 [N, C, H, W, D] 的列表。如果未提供,将尝试从 metadata 配置中解析。

  • args_file (Optional[str, None]) – 一个 JSON 或 YAML 文件,用于提供此函数所有参数的默认值,从而简化命令行输入。

  • converter_kwargs (Optional[Mapping, None]) – convert_to_torchscript 所需的额外参数,输入参数中已有的参数除外。

  • override (Any) – 用于覆盖或添加相应配置内容的键值对。例如 --_meta#network_data_format#inputs#image#num_channels 3

返回类型:

None

monai.bundle.trt_export(net_id=None, filepath=None, ckpt_file=None, meta_file=None, config_file=None, key_in_ckpt=None, precision=None, input_shape=None, use_trace=None, dynamic_batchsize=None, device=None, use_onnx=None, onnx_input_names=None, onnx_output_names=None, args_file=None, converter_kwargs=None, **override)[source]#

将模型 checkpoint 导出到指定文件路径,保存为基于 TensorRT 引擎的 TorchScript。目前,此 API 仅支持转换输入均为张量的模型。注意:从 TensorRT 10.5 开始,已移除对 NVIDIA Volta(具有计算能力 7.0 的 GPU)的支持。请查看 TensorRT 支持矩阵以了解支持哪些 GPU。

导出模型有两种方式:1. Torch-TensorRT 方式:PyTorch 模块 —> TorchScript 模块 —> 基于 TensorRT 引擎的 TorchScript。2. ONNX-TensorRT 方式:PyTorch 模块 —> TorchScript 模块 —> ONNX 模型 —> TensorRT 引擎 —> 基于 TensorRT 引擎的 TorchScript。

当通过第一种方式导出时,某些模型会遇到运行缓慢的问题,因为 Torch-TensorRT 可能仅将 PyTorch 模型的一小部分转换为 TensorRT 引擎。然而,当通过第二种方式导出时,某些 Python 数据结构(如 dict)是不支持的。如果通过 torch.jit.script 导出,某些 TorchScript 模型也不被 ONNX 支持。

典型使用示例

python -m monai.bundle trt_export --net_id <network definition> --filepath <export path>             --ckpt_file <checkpoint path> --input_shape <input shape> --dynamic_batchsize <batch range> ...
参数:
  • net_id (Optional[str, None]) – 配置中网络组件的 ID 名称,它必须是 torch.nn.Module

  • filepath (Union[str, PathLike, None]) – 导出的文件路径,如果文件名没有扩展名,则自动加上 .ts

  • ckpt_file (Optional[str, None]) – 要加载的模型 checkpoint 的文件路径。

  • meta_file (Union[Sequence[str], str, None]) – 元数据文件的路径。如果是文件路径列表,它们的内容将被合并。

  • config_file (Union[Sequence[str], str, None]) – 用于保存在基于 TensorRT 的 TorchScript 模型中并提取网络信息的配置文件路径。在模型中保存的键为不带扩展名的配置文件名,无论原始文件格式是 JSON 还是 YAML,保存的配置值始终以 JSON 格式序列化。它可以是单个文件或文件列表。如果为 None,则必须在 args_file 中提供。

  • key_in_ckpt (Optional[str, None]) – 对于嵌套的 checkpoint(如 {“model”: XXX, “optimizer”: XXX, …}),指定模型权重的键。如果不是嵌套的 checkpoint,则无需设置。

  • precision (Optional[str, None]) – 转换后的基于 TensorRT 引擎的 TorchScript 模型的权重精度。应为 ‘fp32’ 或 ‘fp16’。

  • input_shape (Optional[Sequence[int], None]) – 用于转换模型的输入形状。应为形如 [N, C, H, W] 或 [N, C, H, W, D] 的列表。如果未提供,将尝试从 metadata 配置中解析。

  • use_trace (Optional[bool, None]) – 是否使用 torch.jit.trace 将 PyTorch 模型转换为 TorchScript 模型,然后再将其转换为基于 TensorRT 引擎的 TorchScript 模型或 ONNX 模型(如果 use_onnx 为 True)。

  • dynamic_batchsize (Optional[Sequence[int], None]) – 一个包含三个元素的序列,用于定义待转换模型输入的 batch size 范围。应为形如 [MIN_BATCH, OPT_BATCH, MAX_BATCH] 的序列。转换后,模型输入的 batch size 应在 MIN_BATCHMAX_BATCH 之间,OPT_BATCH 是 TensorRT 尝试优化的最佳性能 batch size。在应用程序中,OPT_BATCH 应为最常用的输入 batch size。

  • device (Optional[int, None]) – 用于转换和验证模型的目标 GPU 索引。

  • use_onnx (Optional[bool, None]) – 是否使用 ONNX-TensorRT 方式来导出基于 TensorRT 引擎的 TorchScript 模型。

  • onnx_input_names (Optional[Sequence[str], None]) – ONNX 模型的可选输入名称。此参数仅在 use_onnx 为 True 时有用。应为形如 [‘input_0’, ‘input_1’, …, ‘input_N’] 的序列,其中 N 等于模型输入的数量。如果未给出,将使用 [‘input_0’],这假定模型只有一个输入。

  • onnx_output_names (Optional[Sequence[str], None]) – ONNX 模型的可选输出名称。此参数仅在 use_onnx 为 True 时有用。应为形如 [‘output_0’, ‘output_1’, …, ‘output_N’] 的序列,其中 N 等于模型输出的数量。如果未给出,将使用 [‘output_0’],这假定模型只有一个输出。

  • args_file (Optional[str, None]) – 一个 JSON 或 YAML 文件,用于提供此函数所有参数的默认值,从而简化命令行输入。

  • converter_kwargs (Optional[Mapping, None]) – convert_to_trt 所需的额外参数,输入参数中已有的参数除外。

  • override (Any) – 用于覆盖或添加相应配置内容的键值对。例如 --_meta#network_data_format#inputs#image#num_channels 3

返回类型:

None

monai.bundle.onnx_export(net_id=None, filepath=None, ckpt_file=None, meta_file=None, config_file=None, key_in_ckpt=None, use_trace=None, input_shape=None, args_file=None, converter_kwargs=None, **override)[source]#

将模型 checkpoint 导出为 onnx 模型。

典型使用示例

python -m monai.bundle onnx_export network --filepath <export path> --ckpt_file <checkpoint path> ...
参数:
  • net_id (Optional[str, None]) – 配置中网络组件的 ID 名称,它必须是 torch.nn.Module

  • filepath (Union[str, PathLike, None]) – 保存 onnx 模型的文件路径。

  • ckpt_file (Optional[str, None]) – 要加载的模型 checkpoint 的文件路径。

  • meta_file (Union[Sequence[str], str, None]) – 元数据文件的路径。如果是文件路径列表,它们的内容将被合并。

  • config_file (Union[Sequence[str], str, None]) – 包含提取出的网络信息的配置文件路径,

  • key_in_ckpt (Optional[str, None]) – 对于嵌套的 checkpoint(如 {“model”: XXX, “optimizer”: XXX, …}),指定模型权重的键。如果不是嵌套的 checkpoint,则无需设置。

  • use_trace (Optional[bool, None]) – 是否使用 torch.jit.trace 将 pytorch 模型转换为 torchscript 模型。

  • input_shape (Optional[Sequence[int], None]) – 将模型转换为 onnx 模型时,用于生成网络随机输入的形状。应为形如 [N, C, H, W] 或 [N, C, H, W, D] 的列表。如果未提供,将尝试从 metadata 配置中解析。

  • args_file (Optional[str, None]) – 一个 JSON 或 YAML 文件,用于提供此函数所有参数的默认值,从而简化命令行输入。

  • converter_kwargs (Optional[Mapping, None]) – convert_to_onnx 所需的额外参数,输入参数中已有的参数除外。

  • override (Any) – 用于覆盖或添加相应配置内容的键值对。例如 --_meta#network_data_format#inputs#image#num_channels 3

返回类型:

None

monai.bundle.download(name=None, version=None, bundle_dir=None, source='monaihosting', repo=None, url=None, remove_prefix='monai_', progress=True, args_file=None)[source]#

从指定源或 url 下载 bundle。该 bundle 应为 zip 文件,并在下载后解压缩。此函数参考自:https://pytorch.ac.cn/docs/stable/_modules/torch/hub.html

典型使用示例

# Execute this module as a CLI entry, and download bundle from the model-zoo repo:
python -m monai.bundle download --name <bundle_name> --version "0.1.0" --bundle_dir "./"

# Execute this module as a CLI entry, and download bundle from specified github repo:
python -m monai.bundle download --name <bundle_name> --source "github" --repo "repo_owner/repo_name/release_tag"

# Execute this module as a CLI entry, and download bundle from ngc with latest version:
python -m monai.bundle download --name <bundle_name> --source "ngc" --bundle_dir "./"

# Execute this module as a CLI entry, and download bundle from monaihosting with latest version:
python -m monai.bundle download --name <bundle_name> --source "monaihosting" --bundle_dir "./"

# Execute this module as a CLI entry, and download bundle from Hugging Face Hub:
python -m monai.bundle download --name "bundle_name" --source "huggingface_hub" --repo "repo_owner/repo_name"

# Execute this module as a CLI entry, and download bundle via URL:
python -m monai.bundle download --name <bundle_name> --url <url>

# Execute this module as a CLI entry, and download bundle from ngc_private with latest version:
python -m monai.bundle download --name <bundle_name> --source "ngc_private" --bundle_dir "./" --repo "org/org_name"

# Set default args of `run` in a JSON / YAML file, help to record and simplify the command line.
# Other args still can override the default args at runtime.
# The content of the JSON / YAML file is a dictionary. For example:
# {"name": "spleen", "bundle_dir": "download", "source": ""}
# then do the following command for downloading:
python -m monai.bundle download --args_file "args.json" --source "github"
参数:
  • name (Optional[str, None]) – bundle 名称。如果 Noneurl 也为 None,则必须在 args_file 中提供。例如:model-zoo 中的 “spleen_ct_segmentation”、“prostate_mri_anatomy”:Project-MONAI/model-zoo。ngc 中的 “monai_brats_mri_segmentation”:https://catalog.ngc.nvidia.com/models?filters=&orderBy=scoreDESC&query=monai

  • version (Optional[str, None]) – 要下载的目标 bundle 的版本名称,如:“0.1.0”。如果为 None,将下载最新版本(对于 Hugging Face Hub,则是 main 分支的最后一次提交)。

  • bundle_dir (Union[str, PathLike, None]) – 存储下载数据的目标目录。默认为 torch.hub.get_dir() 下的 bundle 子文件夹。

  • source (str) – 存储位置名称。当 urlNone 时使用此参数。默认情况下,该值从环境变量 BUNDLE_DOWNLOAD_SRC 获取,应为 “ngc”、“monaihosting”、“github”、“ngc_private” 或 “huggingface_hub”。如果 source 为 “ngc_private”,则需要在环境变量中指定 NGC_API_KEY。

  • repo (Optional[str, None]) – 仓库名称。当 urlNonesource 为 “github” 或 “huggingface_hub” 时使用此参数。如果 source 为 “github”,则应为 “repo_owner/repo_name/release_tag” 格式。如果 source 为 “huggingface_hub”,则应为 “repo_owner/repo_name” 格式。请注意,“monaihosting” 源的 bundle 也托管在 Hugging Face Hub 上,但 “repo_id” 始终为 “MONAI/bundle_name” 格式,因此对于 “monaihosting” 源,不需要此参数。如果 source 为 “ngc_private”,则应为 “org/org_name” 或 “org/org_name/team/team_name” 格式,或者您可以指定环境变量 NGC_ORG 和 NGC_TEAM。

  • url (Optional[str, None]) – 下载数据的 url。如果不为 None,数据将直接下载,且不会检查 source。如果 nameNone,则文件名由 monai.apps.utils._basename(url) 确定。

  • remove_prefix (UnionType[str, None]) – 当 source 为 “ngc” 或 “ngc_private” 时使用此参数。目前,所有 ngc bundle 都有 monai_ 前缀,而在其模型动物园(model zoo)对比中不存在该前缀。为了保持这两个来源之间的一致性,移除前缀是必要的。因此,如果指定了此项,下载的文件夹名称将移除该前缀。

  • progress (bool) – 是否显示进度条。

  • args_file (Optional[str, None]) – 一个 JSON 或 YAML 文件,用于提供此函数中所有参数的默认值。从而简化命令行输入。

返回类型:

None

monai.bundle.load(name, model=None, version=None, workflow_type='train', model_file=None, load_ts_module=False, bundle_dir=None, source='monaihosting', repo=None, remove_prefix='monai_', progress=True, device=None, key_in_ckpt=None, config_files=(), workflow_name=None, args_file=None, copy_model_args=None, net_override=None)[source]#

加载 bundle 的模型权重或 TorchScript 模块。

参数:
  • name (str) – bundle 名称。如果 Noneurl 也为 None,则必须在 args_file 中提供。例如:model-zoo 中的 “spleen_ct_segmentation”、“prostate_mri_anatomy”:Project-MONAI/model-zoo。ngc 中的 “monai_brats_mri_segmentation”:https://catalog.ngc.nvidia.com/models?filters=&orderBy=scoreDESC&query=monai。“monaihosting” 中的 “mednist_gan”:https://api.ngc.nvidia.com/v2/models/nvidia/monaihosting/mednist_gan/versions/0.2.0/files/mednist_gan_v0.2.0.zip

  • model (Optional[Module, None]) – 要更新的 pytorch 模块。默认为 None,使用 bundle 中的 “network_def”。

  • version (Optional[str, None]) – 要下载的目标 bundle 的版本名称,如:“0.1.0”。如果为 None,将下载最新版本。如果 source 为 “huggingface_hub”,此参数为 Git 修订版本 ID。

  • workflow_type (str) – 指定工作流类型:“train” 或 “training” 表示训练工作流,“infer”、“inference”、“eval” 或 “evaluation” 表示推理工作流,其他不支持的字符串将引发 ValueError。默认值为 train

  • model_file (Optional[str, None]) – bundle 内模型权重或 TorchScript 模块的相对路径。如果为 None,将使用 “models/model.pt” 或 “models/model.ts”。

  • load_ts_module (bool) – 指定是否加载 TorchScript 模块的标志。

  • bundle_dir (Union[str, PathLike, None]) – 从中加载权重/TorchScript 模块的目录。默认为 torch.hub.get_dir() 下的 bundle 子文件夹。

  • source (str) – 存储位置名称。当 model_file 在本地不存在且需要先下载时使用此参数。默认情况下,该值从环境变量 BUNDLE_DOWNLOAD_SRC 获取,应为 “ngc”、“monaihosting”、“github” 或 “huggingface_hub”。

  • repo (Optional[str, None]) – 仓库名称。当 urlNonesource 为 “github” 或 “huggingface_hub” 时使用此参数。如果 source 为 “github”,则应为 “repo_owner/repo_name/release_tag” 格式。如果 source 为 “huggingface_hub”,则应为 “repo_owner/repo_name” 格式。

  • remove_prefix (UnionType[str, None]) – 当 source 为 “ngc” 时使用此参数。目前,所有 ngc bundle 都有 monai_ 前缀,而在其模型动物园(model zoo)对比中不存在该前缀。为了保持这三个来源之间的一致性,移除前缀是必要的。因此,如果指定了此项,下载的文件夹名称将移除该前缀。

  • progress (bool) – 下载时是否显示进度条。

  • device (Optional[str, None]) – 返回的权重或模块的目标设备。如果为 None,若存在则优先使用 “cuda”。

  • key_in_ckpt (Optional[str, None]) – 对于嵌套的 checkpoint(如 {“model”: XXX, “optimizer”: XXX, …}),指定模型权重的键。如果不是嵌套的 checkpoint,则无需设置。

  • config_files (Sequence[str]) – 将要加载的额外文件名。该参数仅在加载 TorchScript 模块时有效,详细信息请参阅 torch.jit.load 中的 _extra_files

  • workflow_name (Union[str, BundleWorkflow, None]) – 指定的 bundle 工作流名称,应为字符串或类,默认为 “ConfigWorkflow”。

  • args_file (Optional[str, None]) – 一个 JSON 或 YAML 文件,用于提供 “download” 函数中所有参数的默认值。

  • copy_model_args (Optional[dict, None]) – monai.networks.copy_model_state 函数的其他参数。

  • net_override (Optional[dict, None]) – 用于覆盖 bundle 网络中参数的键值对,默认为 None

返回类型:

Union[object, tuple[Module, dict, dict], Any]

返回:

  1. 如果 load_ts_moduleFalsemodelNone

    如果无法在 bundle 中找到 “network_def”,则返回模型权重,否则返回已加载权重的实例化网络。

  2. 如果 load_ts_moduleFalsemodel 不为 None

    返回一个已加载权重的实例化网络。

  3. 如果 load_ts_moduleTrue,返回一个包含 TorchScript 模块的元组,

    以及相应的元数据字典和额外文件字典。请查阅 monai.data.load_net_with_metadata 以获取更多详细信息。

monai.bundle.get_all_bundles_list(repo='Project-MONAI/model-zoo', tag='dev', auth_token=None)[source]#

获取存储在指定仓库的发布版本中、带有提供标签的所有 bundle 名称(及最新版本)。如果标签为 “dev”,将从 https://raw.githubusercontent.com/repo_owner/repo_name/dev/models/model_info.json 获取模型信息。参数的默认值对应于 MONAI model zoo 的发布版本。为了增加调用 Github API 的速率限制,您可以输入您的个人访问令牌。请查看以下链接以获取有关速率限制的更多详细信息:https://githubdocs.cn/en/rest/overview/resources-in-the-rest-api#rate-limiting

以下链接展示了如何创建您的个人访问令牌:https://githubdocs.cn/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token

参数:
  • repo (str) – 应为 “repo_owner/repo_name/” 格式。

  • tag (str) – 发布版本的标签名称。

  • auth_token (Optional[str, None]) – github 个人访问令牌。

返回类型:

list[tuple[str, str]]

返回:

一个形如 (bundle 名称, 最新版本) 的元组列表。

monai.bundle.get_bundle_info(bundle_name, version=None, repo='Project-MONAI/model-zoo', tag='dev', auth_token=None)[source]#

获取存储在指定仓库的发布版本中、带有提供标签且具有指定 bundle 名称和版本的 bundle 的所有信息(包括 “name” 和 “browser_download_url”)。为了增加调用 Github API 的速率限制,您可以输入您的个人访问令牌。请查看以下链接以获取有关速率限制的更多详细信息:https://githubdocs.cn/en/rest/overview/resources-in-the-rest-api#rate-limiting

以下链接展示了如何创建您的个人访问令牌:https://githubdocs.cn/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token

参数:
  • bundle_name (str) – bundle 名称。

  • version (Optional[str, None]) – 目标 bundle 的版本名称,如果为 None,将使用最新版本。

  • repo (str) – 应为 “repo_owner/repo_name/” 格式。

  • tag (str) – 发布版本的标签名称。

  • auth_token (Optional[str, None]) – github 个人访问令牌。

返回类型:

dict[str, Any]

返回:

一个包含 bundle 信息的字典。

monai.bundle.get_bundle_versions(bundle_name, repo='Project-MONAI/model-zoo', tag='dev', auth_token=None)[source]#

获取存储在指定仓库的发布版本中、带有提供标签的 bundle 的最新版本以及所有现有版本。如果标签为 “dev”,将从 https://raw.githubusercontent.com/repo_owner/repo_name/dev/models/model_info.json 获取模型信息。为了增加调用 Github API 的速率限制,您可以输入您的个人访问令牌。请查看以下链接以获取有关速率限制的更多详细信息:https://githubdocs.cn/en/rest/overview/resources-in-the-rest-api#rate-limiting

以下链接展示了如何创建您的个人访问令牌:https://githubdocs.cn/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token

参数:
  • bundle_name (str) – bundle 名称。

  • repo (str) – 应为 “repo_owner/repo_name/” 格式。

  • tag (str) – 发布版本的标签名称。

  • auth_token (Optional[str, None]) – github 个人访问令牌。

返回类型:

dict[str, UnionType[list[str], str]]

返回:

一个包含 bundle 最新版本和所有版本的字典。

monai.bundle.run(run_id=None, init_id=None, final_id=None, meta_file=None, config_file=None, logging_file=None, tracking=None, args_file=None, **override)[source]#

指定 config_file 以运行 monai bundle 组件和工作流。

典型使用示例

# Execute this module as a CLI entry:
python -m monai.bundle run --meta_file <meta path> --config_file <config path>

# Execute with specified `run_id=training`:
python -m monai.bundle run training --meta_file <meta path> --config_file <config path>

# Execute with all specified `run_id=runtest`, `init_id=inittest`, `final_id=finaltest`:
python -m monai.bundle run --run_id runtest --init_id inittest --final_id finaltest ...

# Override config values at runtime by specifying the component id and its new value:
python -m monai.bundle run --net#input_chns 1 ...

# Override config values with another config file `/path/to/another.json`:
python -m monai.bundle run --net %/path/to/another.json ...

# Override config values with part content of another config file:
python -m monai.bundle run --net %/data/other.json#net_arg ...

# Set default args of `run` in a JSON / YAML file, help to record and simplify the command line.
# Other args still can override the default args at runtime:
python -m monai.bundle run --args_file "/workspace/data/args.json" --config_file <config path>
参数:
  • run_id (Optional[str, None]) – 要运行的预期配置表达式的 ID 名称,默认为 “run”。要运行此配置,目标配置必须包含此 ID。

  • init_id (Optional[str, None]) – 运行前要初始化的预期配置表达式的 ID 名称,默认为 “initialize”。对于配置文件和此 run 函数,它是可选的。

  • final_id (Optional[str, None]) – 运行后要完成的预期配置表达式的 ID 名称,默认为 “finalize”。对于配置文件和此 run 函数,它是可选的。

  • meta_file (Union[Sequence[str], str, None]) – 元数据文件的路径。如果是文件路径列表,它们的内容将被合并。默认为 None。

  • config_file (Union[Sequence[str], str, None]) – 配置文件的路径,如果为 None,则必须在 args_file 中提供。如果是文件路径列表,它们的内容将被合并。

  • logging_file (Optional[str, None]) – 程序中 logging 模块的配置文件。有关详细信息:https://docs.pythonlang.cn/3/library/logging.config.html#logging.config.fileConfig。默认为 None。

  • tracking (Union[str, dict, None]) –

    如果非 None,则启用运行时实验追踪,并可选择进行配置和扩展。如果为 “mlflow”,将向解析后的 bundle 添加 MLFlowHandler,并使用默认的追踪设置,其中下面显示的一组常见参数将被添加,并可通过此方法的 override 参数传递。

    • "output_dir": 在本地保存 mlflow 追踪输出的路径,默认为 “<bundle root>/eval”。

    • "tracking_uri": 保存 mlflow 追踪输出的 uri,默认为 “/output_dir/mlruns”。

    • "experiment_name": 此运行的实验名称,默认为 “monai_experiment”。

    • "run_name": 当前运行的名称。

    • "save_execute_config": 是否保存已执行的配置文件。它可以是 False/path/to/artifactsTrue。如果设为 True,将保存到默认路径 “<bundle_root>/eval”。默认为 True

    如果是其他字符串,则将其视为加载追踪设置的文件路径。如果是 dict,则将其视为追踪设置。将使用 tracking handlersconfigs 的顶级项修补目标配置内容。有关详细的使用示例,请查看教程:Project-MONAI/tutorials

  • args_file (Optional[str, None]) – 一个 JSON 或 YAML 文件,用于为 run_idmeta_fileconfig_filelogging 和覆盖对提供默认值。从而简化命令行输入。

  • override (Any) – 用于覆盖或添加相应配置内容的键值对。例如 --net#input_chns 42, --net %/data/other.json#net_arg

返回类型:

None

monai.bundle.verify_metadata(meta_file=None, filepath=None, create_dir=None, hash_val=None, hash_type=None, args_file=None, **kwargs)[source]#

基于预定义的 schema 验证提供的 metadata 文件。metadata 内容必须包含 schema 字段,用于指定要下载的 schema 文件的 URL。schema 标准遵循:https://schema.json.js.cn/

参数:
  • meta_file (Union[Sequence[str], str, None]) – 要验证的元数据文件的路径。如果为 None,则必须在 args_file 中提供。如果是文件路径列表,它们的内容将被合并。

  • filepath (Union[str, PathLike, None]) – 存储下载的 schema 的文件路径。

  • create_dir (Optional[bool, None]) – 如果目录不存在,是否创建目录,默认为 True

  • hash_val (Optional[str, None]) – 如果非 None,定义用于验证下载的 schema 文件的哈希值。

  • hash_type (Optional[str, None]) – 如果非 None,定义用于验证下载的 schema 文件的哈希类型。默认为 “md5”。

  • args_file (Optional[str, None]) – 一个 JSON 或 YAML 文件,用于提供此函数中所有参数的默认值。从而简化命令行输入。

  • kwargs (Any) – jsonschema.validate() 的其他参数。有关详细信息:https://python-jsonschema.readthedocs.io/en/stable/validate/#jsonschema.validate

返回类型:

None

monai.bundle.verify_net_in_out(net_id=None, meta_file=None, config_file=None, device=None, p=None, n=None, any=None, extra_forward_args=None, args_file=None, **override)[source]#

验证元数据中定义的网络的输入和输出数据形状及数据类型。将根据 metadata 中要求的数据形状,使用伪造的 Tensor 数据进行测试。

典型使用示例

python -m monai.bundle verify_net_in_out network --meta_file <meta path> --config_file <config path>
参数:
  • net_id (Optional[str, None]) – 要验证的网络组件的 ID 名称,它必须是 torch.nn.Module

  • meta_file (Union[Sequence[str], str, None]) – 获取网络参数的元数据文件的路径。如果为 None,则必须在 args_file 中提供。如果是文件路径列表,它们的内容将被合并。

  • config_file (Union[Sequence[str], str, None]) – 获取网络定义的配置文件的路径。如果为 None,则必须在 args_file 中提供。如果是文件路径列表,它们的内容将被合并。

  • device (Optional[str, None]) – 运行网络前向计算的目标设备。如果为 None,若存在则优先使用 “cuda”。

  • p (Optional[int, None]) – 如果预期形状的维度为 “x**p”,则生成伪造数据形状的幂因子,默认为 1。

  • n (Optional[int, None]) – 如果预期形状的维度为 “x*n”,则生成伪造数据形状的乘法因子,默认为 1。

  • any (Optional[int, None]) – 如果预期形状的维度为 “*”,则生成伪造数据形状的指定大小,默认为 1。

  • extra_forward_args (Optional[dict, None]) – 包含网络前向函数其他参数的字典。默认为空字典。

  • args_file (Optional[str, None]) – 一个 JSON 或 YAML 文件,用于为 net_idmeta_fileconfig_filedevicepnany 和覆盖对提供默认值。从而简化命令行输入。

  • override (Any) – 用于覆盖或添加相应配置内容的键值对。例如 --_meta#network_data_format#inputs#image#num_channels 3

返回类型:

None

monai.bundle.init_bundle(bundle_dir, ckpt_file=None, network=None, dataset_license=False, metadata_str=None, inference_str=None)[source]#

初始化一个新的 bundle 目录,其中包含一些默认配置文件和可选的网络权重。

典型用法示例

python -m monai.bundle init_bundle /path/to/bundle_dir network_ckpt.pt
参数:
  • bundle_dir (UnionType[str, PathLike]) – 要创建的目录名称,必须不存在,但父目录必须存在。

  • ckpt_file (Union[str, PathLike, None]) – 可选的要复制到 bundle 中的 checkpoint 文件。

  • network (Optional[Module, None]) – 如果给出了该网络而不是 ckpt_file,则此网络的权重将存储在 bundle 中。

  • dataset_license (bool) – 如果为 True,将生成一个名为 “data_license.txt” 的默认许可证文件。如果您的 bundle 使用的数据声明了任何许可证条件,则必须使用此文件。

  • metadata_str (Union[str, dict, None]) – 可选的写入 bundle 的元数据字符串,如果未给出,将使用默认值。

  • inference_str (Union[str, dict, None]) – 可选的写入 bundle 的推理字符串,如果未给出,将使用默认值。

返回类型:

None

monai.bundle.push_to_hf_hub(repo, name, bundle_dir, token=None, private=True, version=None, tag_as_latest_version=False, **upload_folder_kwargs)[source]#

将 MONAI bundle 推送到 Hugging Face Hub。

典型使用示例

python -m monai.bundle push_to_hf_hub --repo <HF repository id> --name <bundle name>             --bundle_dir <bundle directory> --version <version> ...
参数:
  • repo (str) – 命名空间(用户或组织)和以 / 分隔的仓库名称,例如 hf_username/bundle_name

  • bundle_name – 要推送的 bundle 目录的名称。

  • bundle_dir (str) – bundle 目录的路径。

  • token (Optional[str, None]) – Hugging Face 身份验证令牌。默认为 None(将默认为存储的令牌)。

  • private (UnionType[bool, None]) – Hugging Face 上仓库的私有可见性。默认为 True

  • version_name – 要创建的版本标签的名称。默认为 None(不创建版本标签)。

  • tag_as_latest_version (UnionType[bool, None]) – 是否将提交标记为 latest_version。使用 bundle.download() 时,将默认下载此版本。默认为 False

  • upload_folder_kwargs (Any) – 传递给 HfApi.upload_folder 的关键字参数。

返回:

Hugging Face 仓库的 URL

返回类型:

repo_url

monai.bundle.update_kwargs(args=None, ignore_none=True, **kwargs)[source]#

使用输入的 kwargs 更新 args 字典。对于 dict 数据,根据键递归更新内容。

示例

from monai.bundle import update_kwargs
update_kwargs({'exist': 1}, exist=2, new_arg=3)
# return {'exist': 2, 'new_arg': 3}
参数:
  • args (Union[str, dict, None]) – 要更新的源 args 字典(或读取为字典的 json/yaml 文件名)。

  • ignore_none (bool) – 是否忽略值为 None 的输入参数,默认为 True

  • kwargs (Any) – 要合并到 args 中的 key=value 对。

返回类型:

dict