def resnet50(pretrained=False, progress=True, **kwargs): """Constructs a ResNet-50 model. Args: pretrained (bool): If True, returns a model pre-trained on ImageNet progress (bool): If True, displays a progress bar of the download to stderr """ model = _resnet('resnet50', Bottleneck, [3, 4, 6, 3], progress=progress, pretrained=False, **kwargs) if pretrained: model = load_and_modify_pretrained_num_classes(model, model_urls['resnet50'], kwargs['num_classes']) return model
def seatt_resnet50(pretrained=True, **kwargs): model = SeAtt(SEResNetBottleneck, layers=[3, 4, 6, 3], att_layers=[1, 2, 5], groups=1, reduction=16, dropout_p=None, inplanes=64, input_3x3=False, downsample_kernel_size=1, downsample_padding=0) if pretrained: model = load_and_modify_pretrained_num_classes( model, model_urls['seatt_resnet50'], kwargs['num_classes']) return model
def seatt154(pretrained=True, **kwargs): model = SeAtt(block=SEBottleneck, layers=[3, 8, 36, 3], att_layers=[1, 2, 5], groups=64, reduction=16, dropout_p=0.2, inplanes=128, input_3x3=True, downsample_kernel_size=3, downsample_padding=1) if pretrained: model = load_and_modify_pretrained_num_classes(model, model_urls['se154'], kwargs['num_classes']) return model
def seatt_resnext50_base(pretrained=True, **kwargs): """ The difference with `seatt_resnext50_32x4d` is the number of attention module layer """ model = SeAtt(block=SEResNeXtBottleneck, layers=[3, 4, 6, 3], att_layers=[1, 1, 1], groups=32, reduction=16, dropout_p=None, inplanes=64, input_3x3=False, downsample_kernel_size=1, downsample_padding=0) if pretrained: model = load_and_modify_pretrained_num_classes( model, model_urls['se_resnext50_32x4d'], kwargs['num_classes']) return model
def resnext50_32x4d(pretrained=True, progress=True, **kwargs): model = _resnet('resnext50_32x4d', Bottleneck, [3, 4, 6, 3], groups=32, width_per_group=4, pretrained=pretrained, progress=progress) if pretrained: model = load_and_modify_pretrained_num_classes(model, model_urls['resnext50_32x4d'], kwargs['num_classes']) return model