增加一个新的Backbone
本节相关代码:
core/model/backbone/*
config/backbones/*
如果想在LibFewShot
中添加一个新的backbone
,可以将所有与backbone
有关的文件放到core/model/backbone/
目录下,例如添加ResNet网络到LibFewShot
中,需要将代码写入core/model/backbone/resnet.py
中,并且在resnet.py
中提供一个能够生成backbone
的class
或者是function
。例如resnet.py
文件:
...
class ResNet(nn.Module):
def __init(self,...):
...
def ResNet18():
model = ResNet(BasicBlock, [2,2,2,2], **kwargs)
return model
之后为了能够从backbone
包中调用到ResNet18
这个function
,需要修改/core/model/backbone/__init__.py
文件,添加如下一行代码
...
from resnet import ResNet18
这样一个新的backbone
就添加完成了。
这个新加入的backbone
和其他的backbone
是同样的使用方式。举个例子,要将ResNet18
替换为DN4
的backbone
,只需要在config/dn4.yaml
中将修改backbone
字段如下:
# arch info
backbone:
name: resnet18
kwargs:
avg_pool: False
is_flatten: False
即可完成替换。