关于 mmcv 及其衍生库配置中_delete_参数的问题

用例子说结论:
这是 base 的配置:

loss_bbox=dict(type='L1Loss', loss_weight=1.0, 其他参数)

这是继承base的文件

loss_bbox=dict(
    _delete_=True,
    type='IoULoss',
    eps=1e-6,
    loss_weight=1.0,
    reduction='none')

_delete_ 参数会将 base 的 loss_bbox 配置全部失效,而最终留下的只有新的配置:

loss_bbox=dict(
    _delete_=True,
    type='IoULoss',
    eps=1e-6,
    loss_weight=1.0,
    reduction='none')

而不是:

loss_bbox=dict(
    _delete_=True,
    type='IoULoss',
    eps=1e-6,
    loss_weight=1.0,
    reduction='none', 
    其他参数)

当时有些奇怪,为什么 _delete_ 不出现在应该被删除的那个配置里,而是写在留下的那个配置里呢?

咱们写程序有个默认的习惯,维护旧代码应该 只增不改, 添加新功能,应该只增加代码,而不是修改代码,这就对代码的可拓展性要求较高

回到那个 _delete_ 出现位置的设计,我猜也是出于这一点吧,不改旧配置文件,只改新配置文件,很nice

但是这个 键 的名字,其实可以改一下,总有一种删除当前配置的感觉

参考自:
https://zhuanlan.zhihu.com/p/346203167
https://github.com/open-mmlab/mmdetection/issues/4485

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值