从Faster RCNN开始学python(二)

之前已经解读了parse_args()子程序。
在这第二篇解读博客中,我们先解读三个子程序再回到我们的主函数中。

主要代码为三个子程序cfg_from_file(args.cfg_file),cfg_from_list(args.set_cfgs),cfg,这两个子程序以及变量路径为/py-faster-rcnn/lib/fast_rcnn/config.py

首先是

cfg

先解析前面几行代码

from easydict import EasyDict as edict
__C = edict()
cfg = __C
__C.TRAIN = edict()
__C.TRAIN.SCALES = (600,)

EasyDict可以使得变量以属性的方式去访问字典的值
__C = edict() 将 __C 变成一个字典。
cfg = __C 在这里将__C 的地址给了cfg,在下面更改__C 时也同时更改了cfg的值。
__C.TRAIN = edict() 将 __C.TRAIN也改变为一个字典,整体就是字典中嵌套一个字典。
__C.TRAIN.SCALES = (600,) 给字典 __C.TRAIN 中设置一个变量 SCALES 并赋值为 (600,) 。
下面的都是一样进行赋值,不做重复解释。

所以在主函数中“cfg.GPU_ID = args.gpu_id”是给cfg这个字典中的GPU_ID进行赋值,取值为之前设定的参数args.gpu_id,在默认中我们设置为0。

cfg_from_file(filename)

def cfg_from_file(filename):
    """Load a config file and merge it into the default options."""
    import yaml
    with open(filename, 'r') as f:
        yaml_cfg = edict(yaml.load(f))

    _merge_a_into_b(yaml_cfg, __C)

在这段子程序中通过以写的方式打开文件“filename”(with open(filename, ‘r’) as f),并使用edict()将文件的内容变更为一个字典的数据结构赋值给 yaml_cfg ( yaml_cfg = edict(yaml.load(f)) ),最后程序调用了_merge_a_into_b(a,b)将a与b合并。接下来来解读这个子程序的内容 (_merge_a_into_b(yaml_cfg, __C)) 。

def _merge_a_into_b(a, b):
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值