def feasc50(num_classes=200, nparts=1, seflag=False): """Constructs a ResNet-50 model. Args: pretrained (bool): If True, returns a model pre-trained on ImageNet """ if seflag: rd = [16, 32, 64, 128] model = ResNet(SEBottleneck, [3, 4, 6, 3], num_classes=num_classes, rd=rd, nparts=nparts, seflag=True) else: model = ResNet(ResBottleneck, [3, 4, 6, 3], num_classes=num_classes, nparts=nparts, seflag=False) model.avgpool = nn.AdaptiveAvgPool2d(1) return model
def __init__(self, class_num=62): super(bnneck, self).__init__() resnet = ResNet(BasicBlock, [2, 2, 2, 2]) self.base_model = nn.Sequential( resnet.conv1, resnet.bn1, resnet.relu, resnet.layer1, resnet.layer2, resnet.layer3, resnet.layer4 ) self.maxpool = nn.AdaptiveMaxPool2d(1) self.bnneck = nn.BatchNorm1d(256) self.bnneck.bias.requires_grad_(False) # no shift self.reduce_layer = nn.Conv2d(512, 256, 1) # self.classifier = ClassBlock(512, 1024) self.fc1 = nn.Sequential( nn.Linear(256, class_num)) self.fc2 = nn.Sequential( nn.Linear(256, class_num)) self.fc3 = nn.Sequential( nn.Linear(256, class_num)) self.fc4 = nn.Sequential( nn.Linear(256, class_num))
def __init__(self, class_num=62): super(res18, self).__init__() model_ft = ResNet(BasicBlock, [2, 2, 2, 2]) self.base_model = nn.Sequential(*list(model_ft.children())[:-3]) # attention schema self.avgpool = nn.AdaptiveAvgPool2d(1) self.maxpool = nn.AdaptiveMaxPool2d(1) self.sign = nn.Sigmoid() in_plances = 256 ratio = 8 self.a_fc1 = nn.Conv2d(in_plances,in_plances//ratio,1,bias=False) self.a_relu = nn.ReLU() self.a_fc2 = nn.Conv2d(in_plances//ratio, in_plances, 1, bias=False) self.avg_pool = nn.AdaptiveAvgPool2d(1) self.max_pool = nn.AdaptiveMaxPool2d(1) self.reduce_layer = nn.Conv2d(512, 256, 1) # self.classifier = ClassBlock(512, 1024) self.fc1 = nn.Sequential(nn.Dropout(0.5), nn.Linear(256, class_num)) self.fc2 = nn.Sequential(nn.Dropout(0.5), nn.Linear(256, class_num)) self.fc3 = nn.Sequential(nn.Dropout(0.5), nn.Linear(256, class_num)) self.fc4 = nn.Sequential(nn.Dropout(0.5), nn.Linear(256, class_num))
def se_resnet34(num_classes): """Constructs a ResNet-34 model. Args: pretrained (bool): If True, returns a model pre-trained on ImageNet """ model = ResNet(PSEBasicBlock, [3, 4, 6, 3], num_classes=num_classes) return model
def se_resnet152(num_classes): """Constructs a ResNet-152 model. Args: pretrained (bool): If True, returns a model pre-trained on ImageNet """ model = ResNet(PSEBottleneck, [3, 8, 36, 3], num_classes=num_classes) return model
def resnet152(pretrained=False, **kwargs): if pretrained: model = ResNet(Bottleneck, [3, 8, 36, 3], **kwargs) pretrained_state_dict = torch.load( './Authority/resnet152-b121ed2d.pth' ) # load_url函数根据model_urls字典下载或导入相应的预训练模型 now_state_dict = model.state_dict() # 返回model模块的字典 pretrained_state_dict.pop('fc.weight') # 排除全连接层的参数(全连接层返回分类个数) pretrained_state_dict.pop('fc.bias') now_state_dict.update(pretrained_state_dict) model.load_state_dict(now_state_dict) # 最后通过调用model的load_state_dict方法用预训练的模型参数来初始化你构建的网络结构, # 这个方法就是PyTorch中通用的用一个模型的参数初始化另一个模型的层的操作。load_state_dict方法还有一个重要的参数是strict, # 该参数默认是True,表示预训练模型的层和你的网络结构层严格对应相等(比如层名和维度) return model return ResNet(Bottleneck, [3, 8, 36, 3], **kwargs)
def se_resnet18(num_classes=1_000): """Constructs a ResNet-18 model. Args: pretrained (bool): If True, returns a model pre-trained on ImageNet """ model = ResNet(SEBasicBlock, [2, 2, 2, 2], num_classes=num_classes) model.avgpool = nn.AdaptiveAvgPool2d(1) return model
def SE_ResNet101(num_classes=1_000): """Constructs a ResNet-101 model. Args: pretrained (bool): If True, returns a model pre-trained on ImageNet """ model = ResNet(SEBottleneck, [3, 4, 23, 3], num_classes=num_classes) model.avgpool = nn.AdaptiveAvgPool2d(1) return model
def se_resnet34(num_classes=5): """Constructs a ResNet-34 model. Args: pretrained (bool): If True, returns a model pre-trained on ImageNet """ model = ResNet(SEBasicBlock, [3, 4, 6, 3], num_classes=num_classes) model.avgpool = nn.AdaptiveAvgPool2d(1) return model
def se_resnet152(num_classes=5): """Constructs a ResNet-152 model. Args: pretrained (bool): If True, returns a model pre-trained on ImageNet """ model = ResNet(SEBottleneck, [3, 8, 36, 3], num_classes=num_classes) model.avgpool = nn.AdaptiveAvgPool2d(1) return model
def se_resnet34(pretrained, num_classes=1000): """Constructs a SE-ResNet-34 model.""" model = ResNet(SEBasicBlock, [3, 4, 6, 3], num_classes=num_classes) model.avgpool = nn.AdaptiveAvgPool2d(1) if pretrained: state_dict = torch.load('/home/kg2/se_resnet34_best.pth')['state_dict'] model.load_state_dict(state_dict, strict=False) return model
def feasc18(num_classes=200, nparts=1): """Constructs a ResNet-18 model. Args: pretrained (bool): If True, returns a model pre-trained on ImageNet """ model = ResNet(SEBasicBlock, [2, 2, 2, 2], num_classes=num_classes, nparts=nparts) model.avgpool = nn.AdaptiveAvgPool2d(1) return model
def resnet18(pretrained=False, **kwargs): """Constructs a ResNet-18 model. Args: pretrained (bool): If True, returns a model pre-trained on ImageNet """ model = ResNet(BasicBlock, [2, 2, 2, 2], **kwargs) if pretrained: model.load_state_dict(model_zoo.load_url(model_urls['resnet18'])) return model
def resnet18_l05_w05(pretrained=False, **kwargs): """Constructs a ResNet-18 model. Args: pretrained (bool): If True, returns a model pre-trained on ImageNet """ model = ResNet(BasicBlock, [1, 1, 1, 1], scale_factor=2, **kwargs) model.name = 'ResNet18(length=05 width=05)' return model
def dse_resnet50(num_classes=1000): """Constructs a ResNet-50 model. Args: pretrained (bool): If True, returns a model pre-trained on ImageNet """ model = ResNet(DSEBottleneck, [3, 4, 6, 3], num_classes=num_classes) model.avgpool = nn.AdaptiveAvgPool2d(1) return model
def resnet36_l2_w2(pretrained=False, **kwargs): """Constructs a ResNet-18 model. Args: pretrained (bool): If True, returns a model pre-trained on ImageNet """ model = ResNet(BasicBlock, [4, 4, 4, 4], scale_factor=0.5, **kwargs) model.name = 'ResNet18(length=2 width=2)' return model
def _se_resnet(arch, block, layers, pretrained, progress, **kwargs): # adapted from the _resnet function in torch vision model = ResNet(block, layers, **kwargs) model.avgpool = nn.AdaptiveAvgPool2d(1) if pretrained: state_dict = load_state_dict_from_url(model_urls[arch], progress=progress) model.load_state_dict(state_dict) return model
def _resnet(arch, block, layers, variant=None, **kwargs): if variant is None: model = ResNet(block, layers, **kwargs) elif variant == "C": model = ResNet_C(block, layers, **kwargs) elif variant == "D": model = ResNet_D(block, layers, **kwargs) elif variant == "PA": model = ResNetV2_C(block, layers, **kwargs) return model
def resnet18_nr3_234(pretrained=False, **kwargs): """Constructs a ResNet-18 model. Args: pretrained (bool): If True, returns a model pre-trained on ImageNet """ model = ResNet(BasicBlock, [2, 2, 2, 2], noskip_by_layer=[False, True, True, True], **kwargs) if pretrained: model.load_state_dict(model_zoo.load_url(model_urls['resnet18'])) model.name = 'ResNet18_NR3_234' return model
def resnet18_ep01(pretrained=False, **kwargs): """Constructs a ResNet-18 model. Args: pretrained (bool): If True, returns a model pre-trained on ImageNet """ model = ResNet(BasicBlock, [2, 2, 2, 2], disable_early_downsampling=True, **kwargs) if pretrained: model.load_state_dict(model_zoo.load_url(model_urls['resnet18'])) model.name = 'ResNet18_EP01' return model
def se_resnet50(num_classes=5, pretrained=False): """Constructs a ResNet-50 model. Args: pretrained (bool): If True, returns a model pre-trained on ImageNet """ model = ResNet(SEBottleneck, [3, 4, 6, 3], num_classes=num_classes) model.avgpool = nn.AdaptiveAvgPool2d(1) if pretrained: model.load_state_dict(load_state_dict_from_url( "https://github.com/moskomule/senet.pytorch/releases/download/archive/seresnet50-60a8950a85b2b.pkl")) return model
def resnet18_dp00_dspl2(pretrained=False, **kwargs): """Constructs a ResNet-18 model. Args: pretrained (bool): If True, returns a model pre-trained on ImageNet """ model = ResNet(BasicBlock, [4, 4, None, None], disable_early_pooling=True, disable_early_downsampling=True, **kwargs) if pretrained: model.load_state_dict(model_zoo.load_url(model_urls['resnet18'])) model.name = 'ResNet18_dp00_DSPL2' return model
def se_resnet50(num_classes=1000, pretrained=False): """Constructs a ResNet-50 model. Args: pretrained (bool): If True, returns a model pre-trained on ImageNet """ model = ResNet(SEBottleneck, [3, 4, 6, 3], num_classes=num_classes) model.avgpool = nn.AdaptiveAvgPool2d(1) if pretrained: model.load_state_dict(model_zoo.load_url("https://www.dropbox.com/s/xpq8ne7rwa4kg4c/seresnet50-60a8950a85b2b.pkl")) return model
def __init__(self, class_num=62): super(senet, self).__init__() self.model = ResNet( SEBasicBlock, [2, 2, 2, 2], num_classes=class_num) self.model.fc = nn.Linear(512, 256) self.model.avgpool = nn.AdaptiveAvgPool2d((1,1)) self.drop = nn.Dropout(0.5) self.fc1 = nn.Linear(256, class_num) self.fc2 = nn.Linear(256, class_num) self.fc3 = nn.Linear(256, class_num) self.fc4 = nn.Linear(256, class_num)
def resnet152(pretrained=False, **kwargs): """Constructs a ResNet-152 model. Args: pretrained (bool): If True, returns a model pre-trained on ImageNet """ model = ResNet(Bottleneck, [3, 8, 36, 3], **kwargs) if pretrained: model.load_state_dict(model_zoo.load_url(model_urls['resnet152'])) model.name = 'ResNet152' return model
def resnet18_thin(pretrained=False, **kwargs): """Constructs a ResNet-18 model. Args: pretrained (bool): If True, returns a model pre-trained on ImageNet """ model = ResNet(BasicBlock, [4, 4, 4, 4], scale_factor=2, **kwargs) if pretrained: model.load_state_dict(model_zoo.load_url(model_urls['resnet18'])) model.name = 'ResNet18_Thin' return model
def resnet18_dspl6(pretrained=False, **kwargs): """Constructs a ResNet-18 model. Args: pretrained (bool): If True, returns a model pre-trained on ImageNet """ model = ResNet(BasicBlock, [1, 1, 1, 1, 2, 2, None, None], **kwargs) if pretrained: model.load_state_dict(model_zoo.load_url(model_urls['resnet18'])) model.name = 'ResNet18_DSPL6' return model
def resnet18noskip_dspl3(pretrained=False, **kwargs): """Constructs a ResNet-18 model. Args: pretrained (bool): If True, returns a model pre-trained on ImageNet """ kwargs["noskip"] = True model = ResNet(BasicBlock, [2, 3, 3, None], **kwargs) if pretrained: model.load_state_dict(model_zoo.load_url(model_urls['resnet18'])) model.name = 'ResNet18NoSkip_DSPL3' return model
def resnet34(pretrained=False, **kwargs): """Constructs a ResNet-34 model. Args: pretrained (bool): If True, returns a model pre-trained on ImageNet """ model = ResNet(BasicBlock, [3, 4, 6, 3], **kwargs) if pretrained: model.load_state_dict(model_zoo.load_url(model_urls['resnet34'])) model.name = 'ResNet34' return model
def __init__(self, pretrained=False, out_features=2): """ """ super().__init__() self.net = ResNet(BasicBlock, [2, 2, 2, 2]) if pretrained: self.net.load_state_dict( model_zoo.load_url(model_urls['resnet_18'])) # change last layer self.net.fc = nn.Linear(self.net.fc.in_features, out_features) self.out_features = out_features