def __init__(self, backbone='resnet_edge', output_stride=16, num_classes=21, sync_bn=True, freeze_bn=False): super(DeepLab, self).__init__() if backbone == 'drn': output_stride = 8 if freeze_bn ==True: print("Use frozen BN in DeepLab") BatchNorm=FrozenBatchNorm2d elif sync_bn == True: BatchNorm = SynchronizedBatchNorm2d else: BatchNorm = nn.BatchNorm2d self.backbone = build_backbone(backbone, output_stride, BatchNorm) self.aspp = build_aspp(backbone, output_stride, BatchNorm) self.decoder = build_decoder(num_classes, backbone, BatchNorm)
def __init__(self, backbone='resnet', output_stride=16, num_classes=21, sync_bn=False, freeze_bn=False): super(DeepLab, self).__init__() if backbone == 'drn': output_stride = 8 if sync_bn: BatchNorm = SynchronizedBatchNorm2d else: BatchNorm = nn.BatchNorm2d self.backbone = build_backbone(backbone, output_stride, BatchNorm) self.aspp = build_aspp(backbone, output_stride, BatchNorm) self.decoder = build_decoder(num_classes, backbone, BatchNorm) if freeze_bn: self.freeze_bn()
def __init__(self, backbone='resnet', output_stride=16, num_classes=21, sync_bn=False, num_domain=3, freeze_bn=False, lam =0.9): super(DeepLab, self).__init__() if backbone == 'drn': output_stride = 8 if sync_bn == True: BatchNorm = SynchronizedBatchNorm2d else: BatchNorm = nn.BatchNorm2d self.lam = lam self.centroids = nn.Parameter(torch.randn(num_domain, 304, 64, 64), requires_grad=False) self.backbone = build_backbone(backbone, output_stride, BatchNorm) self.aspp = build_aspp(backbone, output_stride, BatchNorm) self.decoder = build_decoder(num_classes, num_domain, backbone, BatchNorm) self.last_conv_mask = nn.Sequential(BatchNorm(3), nn.ReLU(), nn.Dropout(0.5), nn.Conv2d(3, num_domain, kernel_size=1, stride=1)) # build encoder for domain code self.encoder_d = build_encoderDC(num_domain, backbone, BatchNorm) if freeze_bn: self.freeze_bn()