def __init__(self, pretrained=False): super().__init__() # 3*100*100 -> 64*32*32 self.img_conv = nn.Sequential( conv3x3(3, 64, stride=1, dilation=1), nn.BatchNorm2d(64), nn.ReLU(inplace=True), Bottleneck(64, 64, stride=2, dilation=1, expansion=2, need_downsample=True), Bottleneck(64 * 2, 64, stride=2, padding=8, expansion=1, need_downsample=True), ) self.features = UNet(in_depth=64) self.features.fc = nn.Sequential( nn.Dropout(0.5), nn.Linear(in_features=64, out_features=128, bias=True)) self.visit_model = DPN26() self.visit_model.linear = nn.Sequential( nn.Dropout(0.5), nn.Linear(in_features=self.visit_model.linear.in_features, out_features=64, bias=True), ) self.fc = nn.Sequential( nn.Dropout(0.5), nn.Linear(192, 9, bias=True), ) if (pretrained): for m in self.modules(): if isinstance(m, nn.Conv2d): nn.init.kaiming_normal_(m.weight) elif isinstance(m, nn.BatchNorm2d): nn.init.constant_(m.weight, 1) nn.init.constant_(m.bias, 0) elif isinstance(m, nn.Linear): nn.init.constant_(m.bias, 0)
def __init__(self, pretrained=False): super().__init__() if pretrained: mdl = pretrainedmodels.__dict__['se_resnext50_32x4d']( num_classes=1000, pretrained='imagenet') else: mdl = pretrainedmodels.__dict__['se_resnext50_32x4d']( num_classes=1000, pretrained=None) self.features = list(mdl.children())[:-2] self.features.append(nn.AdaptiveAvgPool2d(1)) self.features = nn.Sequential(*self.features) self.features[0].conv1 = nn.Conv2d(3, 64, kernel_size=7, stride=2, padding=3, bias=False) self.fc_img = nn.Sequential( nn.Dropout(0.5), nn.Linear(in_features=mdl.last_linear.in_features, out_features=256, bias=True), ) self.visit_model = DPN26() self.visit_model.linear = nn.Sequential( nn.Dropout(0.5), nn.Linear(in_features=self.visit_model.linear.in_features, out_features=128, bias=True), ) self.fc = nn.Sequential( nn.Dropout(0.5), nn.Linear(384, 9, bias=True), ) if not (pretrained): for m in self.modules(): if isinstance(m, nn.Conv2d): nn.init.kaiming_normal_(m.weight) elif isinstance(m, nn.BatchNorm2d): nn.init.constant_(m.weight, 1) nn.init.constant_(m.bias, 0) elif isinstance(m, nn.Linear): nn.init.constant_(m.bias, 0)
def __init__(self, pretrained=False): super().__init__() # print(pretrainedmodels.model_names) if pretrained: mdl = pretrainedmodels.__dict__['polynet'](num_classes=1000, pretrained='imagenet') else: mdl = pretrainedmodels.__dict__['polynet'](num_classes=1000, pretrained=None) # self.features = list(mdl.children()) self.img_model = mdl self.img_model.stem.conv1[0].conv = nn.Conv2d(3, 32, kernel_size=3, padding=1) self.img_model.avg_pool = nn.AdaptiveAvgPool2d(1) self.img_model.last_linear = nn.Linear( in_features=mdl.last_linear.in_features, out_features=64, bias=True) self.vis_model = DPN26() self.vis_model.linear = nn.Sequential( nn.Dropout(0.5), nn.Linear(in_features=self.vis_model.linear.in_features, out_features=64, bias=True), ) self.fc = nn.Sequential( nn.Dropout(0.5), nn.Linear(128, 9, bias=True), ) if not (pretrained): for m in self.modules(): if isinstance(m, nn.Conv2d): nn.init.kaiming_normal_(m.weight) elif isinstance(m, nn.BatchNorm2d): nn.init.constant_(m.weight, 1) nn.init.constant_(m.bias, 0) elif isinstance(m, nn.Linear): nn.init.constant_(m.bias, 0)
def __init__(self, pretrained=True): super().__init__() if pretrained: img_model = pretrainedmodels.__dict__['se_resnext101_32x4d']( num_classes=1000, pretrained='imagenet') #seresnext101 else: img_model = pretrainedmodels.__dict__['se_resnext101_32x4d']( num_classes=1000, pretrained=None) self.visit_model = DPN26() self.img_encoder = list(img_model.children())[:-2] self.img_encoder.append(nn.AdaptiveAvgPool2d(1)) self.img_encoder = nn.Sequential(*self.img_encoder) self.img_fc = nn.Sequential( FCViewer(), nn.Dropout(0.5), nn.Linear(img_model.last_linear.in_features, 256)) self.cls = nn.Linear(320, 9)
def __init__(self, pretrained=False): super().__init__() self.visit_model = DPN26() self.cls = nn.Linear(64, 9)