ForensicHub 文档ForensicHub 文档
  • 基本信息

    • 简介
    • 框架设计
  • 快速上手

    • 安装
    • 组件注册
    • Yaml配置
  • 模型

    • 模型汇总
  • 指标

    • 评估指标
  • English
  • 简体中文
GitHub
  • 基本信息

    • 简介
    • 框架设计
  • 快速上手

    • 安装
    • 组件注册
    • Yaml配置
  • 模型

    • 模型汇总
  • 指标

    • 评估指标
  • English
  • 简体中文
GitHub
  • 指南

    • 简介
    • 框架设计
  • 快速上手

    • 安装
    • 组件注册
    • Yaml配置

组件注册

ForensicHub的核心组件为Dataset、Transform、Model和Evaluator ,分别负责数据读入、数据预处理和数据增强、模型结构实现和评估指标实现。四种组件分别以注册到框架中实现任意组合形成Pipeline。理解这四种组件的功能和注册方式对您使用ForensicHub非常有帮助。

组件Dataset、Transform和Model均继承/core路径下的Base基类 ,基类中定义了入参和出参等接口规范,分别为:base_dataset.py, base_model.py, base_transform.py。组件Evaluator 的格式在/common/evaluation路径下。

如何注册

如果您对注册机制不太熟悉,本节会简单介绍注册机制。注册机制是一种常用于 Python 框架中的设计模式,主要用于将用户自定义的类或函数“登记”到系统中,便于统一管理和调用。

这样做的好处是:

  • 无需手动修改框架主逻辑,即可新增模块;
  • 实现组件的解耦与统一调度,便于快速组合 pipeline;
  • 支持从配置文件中按名字动态调用对应类,非常适合大批量实验和自动化管理。

在ForensicHub,将组件注册到框架中只需要两步:注册组件和类名索引。 以Model为例讲解如何注册组件,其它三种同理。

  1. 注册组件

ForensicHub在registry.py 文件中提供了注册四种组件的函数:register_model, register_dataset, register_transform, register_transform 。

对于一个写好的模型类,我们只需要:

from ForensicHub.core.base_model import BaseModel # 引入基类
from ForensicHub.registry import register_model # 引入注册函数

@register_model("MyModel") # 自定义名称并注册
class Model(BaseModel):
    def __init__(self, backbone="resnet50"):
    ...
  1. 类名索引

在注册组件后,我们还需要在__init__.py中加入类名或文件的索引,使得ForensicHub在加载时可以索引到需要注册的组件并注册。

我们可以通过__init__.py加入:

from xxx import Model # 索引到自己加入的组件的位置

如何使用注册的组件

我们在训练和测试时使用的train.py, test.py 时会自动尝试注册Yaml文件中配置的组件,因此不需要手动去加载。但考虑到用户自定义需求时或Debug组件是否注册进框架时会使用组件,我们简单介绍如何使用注册的组件。

  1. 如何查看已有注册组件

注册的组件以字典形式存放,通过下面代码可以快速查看组件是否被注册进框架:

from ForensicHub.registry import DATASETS, MODELS, TRANSFORMS, EVALUATORS
print(DATASETS._module_dict.keys())
print(MODELS._module_dict.keys())
print(TRANSFORMS._module_dict.keys())
print(EVALUATORS._module_dict.keys())
  1. 如何使用已有注册组件

ForensicHub在registry.py文件中提供了函数:build_from_registry,入参为registry, config_args ,实现可以通过字典文件实现获取组件,其中config_args字典中init_config中存放类的初始化参数,您可以选择使用或不使用。

下面是调用注册组件的示例:

from ForensicHub.registry import MODELS, build_from_registry

name = "MyModel"
model_args = {
    "name": name,
    # 初始化参数
    "init_config": {
        backbone: "resnet50",
    },
}
model = build_from_registry(MODELS, model_args)
在 GitHub 上编辑此页
上次更新: 2025/5/21 08:11
贡献者: Bo Du
Prev
安装
Next
Yaml配置