【mmengine】配置器(config)(入门)读取与使用

一、 介绍

MMEngine 实现了抽象的配置类(Config),为用户提供统一的配置访问接口。

配置类能够支持不同格式的配置文件,包括 python,json,yaml,用户可以根据需求选择自己偏好的格式。

配置类提供了类似字典或者 Python 对象属性的访问接口,用户可以十分自然地进行配置字段的读取和修改。

为了方便算法框架管理配置文件,配置类也实现了一些特性,例如配置文件的字段继承等。

二、 配置文件读取

配置类提供了统一的接口 Config.fromfile(),来读取和解析配置文件。

  1. python格式配置文件:perfon_cfg.py
python 复制代码
# Python 格式
name = "SHUAI"
addr = "Shanghai"
interest = ["food","travel"]
computer = dict(brand='dell', gpu="mx350")
  1. yaml格式配置文件:perfon_cfg.yaml
yaml 复制代码
name: "SHUAI"
addr: "Shanghai"
interest:
    - food
    - travel
computer:
    brand: "dell"
    gpu: mx350
  1. json格式配置文件:perfon_cfg.json
json 复制代码
{
  "name": "SHUAI",
  "addr": "Shanghai",
  "interest": ["food", "travel"],
  "computer": {"brand": "dell", "gpu": "mx350"}
}
  1. mmengine.config.Config.fromfile读取py,yaml,json三种格式的配置信息
python 复制代码
from mmengine.config import Config

# 从py中读取
import person_cfg as cfg_py
print(cfg_py.name)
print(cfg_py.addr)
print(cfg_py.interest)
print(cfg_py.computer)

# 从yaml中读取
cfg_yaml = Config.fromfile('person_cfg.yaml')
print(cfg_yaml)

# 从json中读取
cfg_json = Config.fromfile('person_cfg.json')
print(cfg_json)

三、 配置文件的使用

通过读取配置文件来初始化配置对象后,就可以像使用普通字典或者 Python 类一样来使用这个变量了。提供了两种访问接口,即类似字典的接口 cfg['key'] 或者类似 Python 对象属性的接口 cfg.key。这两种接口都支持读写。

python 复制代码
### 使用 ###
print('------')
print(cfg_yaml.name)
print(cfg_yaml.addr)
print(cfg_yaml.interest)
print(cfg_yaml.computer)

print('------')
print(cfg_json["name"])
print(cfg_json["addr"])
print(cfg_json["interest"])
print(cfg_json["computer"])

注意,配置文件中定义的嵌套字段(即类似字典的字段),在 Config 中会将其转化为 ConfigDict 类,该类继承了 Python 内置字典类型的全部接口,同时也支持以对象属性的方式访问数据。

附上完整代码:

python 复制代码
# 1. person_cfg.py中代码
name = "SHUAI"
addr = "Shanghai"
interest = ["food","travel"]
computer = dict(brand='dell', gpu="mx350")
# 2. person_cfg.json中代码
{
  "name": "SHUAI",
  "addr": "Shanghai",
  "interest": ["food", "travel"],
  "computer": {"brand": "dell", "gpu": "mx350"}
}
# 3. person_cfg.yaml中代码
name: "SHUAI"
addr: "Shanghai"
interest:
    - food
    - travel
computer:
    brand: "dell"
    gpu: mx350


# 4. config.py中代码
from mmengine.config import Config

### 读取 ###
# 从py中读取
import person_cfg as cfg_py
print(cfg_py.name)
print(cfg_py.addr)
print(cfg_py.interest)
print(cfg_py.computer)

# 从yaml中读取
cfg_yaml = Config.fromfile('person_cfg.yaml')
print(cfg_yaml)

# 从json中读取
cfg_json = Config.fromfile('person_cfg.json')
print(cfg_json)

### 使用 ###
print('------')
print(cfg_yaml.name)
print(cfg_yaml.addr)
print(cfg_yaml.interest)
print(cfg_yaml.computer)

print('------')
print(cfg_json["name"])
print(cfg_json["addr"])
print(cfg_json["interest"])
print(cfg_json["computer"])
相关推荐
Mr.Winter`3 小时前
自动驾驶运动规划 | 基于自行车模型的运动学模型和横向动力学模型详细推导图解
人工智能·机器人·自动驾驶·ros
Godspeed Zhao14 小时前
自动驾驶中的传感器技术24.2——Camera(17)
人工智能·机器学习·自动驾驶
Godspeed Zhao16 小时前
自动驾驶中的传感器技术74——Navigation(11)
人工智能·机器学习·自动驾驶
Godspeed Zhao16 小时前
自动驾驶中的传感器技术75——Navigation(12)
人工智能·机器学习·自动驾驶
NewCarRen1 天前
自动驾驶汽车与利益相关者互动的功能安全与网络安全分析方法
安全·网络安全·自动驾驶·汽车
NewCarRen1 天前
基于健康指标的自动驾驶全系统运行时安全分析方法
人工智能·安全·自动驾驶·预期功能安全
TsingtaoAI1 天前
企业实训|AI技术在高阶自动驾驶的应用——某央企汽车集团
自动驾驶·ai机器人·具身智能开发·物理ai·多模态算法
武子康2 天前
AI研究-116 特斯拉 HW3.0 与 HW4.0 区别详解:摄像头分辨率、FSD算力、雷达与Vision泊车
人工智能·深度学习·计算机视觉·ai·自动驾驶·汽车·视觉检测
猫先生Mr.Mao2 天前
2025年10月AGI月评|OmniNWM/X-VLA/DreamOmni2等6大开源项目:自动驾驶、机器人、文档智能的“技术底座”全解析
人工智能·机器人·大模型·自动驾驶·agi·大模型部署·分布式推理框架
MIXLLRED4 天前
自动驾驶技术全景解析:从感知、决策到控制的演进与挑战
人工智能·机器学习·自动驾驶