增加一个新的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
即可完成替换。