Ejemplo n.º 1
0
    def __init__(self,
                 num_classes=2,
                 in_channels=3,
                 arch='resnet101',
                 output_stride=16,
                 bn_momentum=0.9,
                 freeze_bn=False,
                 pretrained=False,puzzle=3,
                 **kwargs):
        super(DeepLab, self).__init__(**kwargs)
        self.model_name = 'deeplabv3plus_' + arch

        #num_classes=puzzle**2

        # Setup arch
        if arch == 'resnet18':
            NotImplementedError('resnet18 backbone is not implemented yet.')
        elif arch == 'resnet34':
            NotImplementedError('resnet34 backbone is not implemented yet.')
        elif arch == 'resnet50':
            self.backbone = ResNet.resnet50(bn_momentum, pretrained)
            if in_channels != 3:
                self.backbone.conv1 = nn.Conv2d(
                    in_channels, 64, kernel_size=7, stride=2, padding=3, bias=False)
        elif arch == 'resnet101':
            self.backbone = ResNet.resnet101(bn_momentum, pretrained)
            if in_channels != 3:
                self.backbone.conv1 = nn.Conv2d(
                    in_channels, 64, kernel_size=7, stride=2, padding=3, bias=False)

        self.encoder = Encoder(bn_momentum, output_stride)
        #self.decoder = Decoder(num_classes, bn_momentum)
        self.avgpool =  nn.AdaptiveAvgPool2d((3, 3))
        self.fc5 = nn.Sequential(
            nn.Linear(256 * puzzle * puzzle, 256),
            nn.ReLU(),
            nn.Dropout(p=0.1)
        )
        self.fc6 = nn.Sequential(
            nn.Linear(256 * (puzzle**2), 1024),
            nn.ReLU(),
            nn.Dropout(p=0.1)
        )

        self.classifier = nn.Sequential(
            nn.Linear(1024, num_classes)
        )
        # projection head
        '''
        self.proj = nn.Sequential(
            nn.Conv2d(256, 256, 1, bias=False),
            nn.BatchNorm2d(256),
            nn.ReLU(inplace=True),
            nn.Conv2d(256, 10, 1, bias=True)
        )
        '''
        self.proj =nn.Sequential(nn.Linear(256, 256), nn.ReLU(), nn.Linear(256,num_classes))
Ejemplo n.º 2
0
    def __init__(self,
                 in_channels=3,
                 arch='resnet101',
                 output_stride=16,
                 bn_momentum=0.9,
                 freeze_bn=False,
                 pretrained=False,
                 **kwargs):
        super(DeepLab, self).__init__(**kwargs)
        self.model_name = 'deeplabv3plus_' + arch

        # Setup arch
        if arch == 'resnet18':
            NotImplementedError('resnet18 backbone is not implemented yet.')
        elif arch == 'resnet34':
            NotImplementedError('resnet34 backbone is not implemented yet.')
        elif arch == 'resnet50':
            self.backbone = ResNet.resnet50(bn_momentum, pretrained)
            if in_channels != 3:
                self.backbone.conv1 = nn.Conv2d(in_channels,
                                                64,
                                                kernel_size=7,
                                                stride=2,
                                                padding=3,
                                                bias=False)
        elif arch == 'resnet101':
            self.backbone = ResNet.resnet101(bn_momentum, pretrained)
            if in_channels != 3:
                self.backbone.conv1 = nn.Conv2d(in_channels,
                                                64,
                                                kernel_size=7,
                                                stride=2,
                                                padding=3,
                                                bias=False)

        self.encoder = Encoder(bn_momentum, output_stride)
        # self.decoder = Decoder(num_classes, bn_momentum)
        self.avgpool = nn.AdaptiveAvgPool2d((1, 1))
        # projection head
        '''
Ejemplo n.º 3
0
    def __init__(self,
                 num_classes=2,
                 in_channels=3,
                 arch='resnet101',
                 output_stride=16,
                 bn_momentum=0.9,
                 freeze_bn=False,
                 pretrained=False,
                 puzzle=3,
                 **kwargs):
        super(DeepLab, self).__init__(**kwargs)
        self.model_name = 'deeplabv3plus_' + arch

        #num_classes=puzzle**2

        # Setup arch
        if arch == 'resnet18':
            NotImplementedError('resnet18 backbone is not implemented yet.')
        elif arch == 'resnet34':
            NotImplementedError('resnet34 backbone is not implemented yet.')
        elif arch == 'resnet50':
            self.backbone = ResNet.resnet50(bn_momentum, pretrained)
            if in_channels != 3:
                self.backbone.conv1 = nn.Conv2d(in_channels,
                                                64,
                                                kernel_size=7,
                                                stride=2,
                                                padding=3,
                                                bias=False)
        elif arch == 'resnet101':
            self.backbone = ResNet.resnet101(bn_momentum, pretrained)
            if in_channels != 3:
                self.backbone.conv1 = nn.Conv2d(in_channels,
                                                64,
                                                kernel_size=7,
                                                stride=2,
                                                padding=3,
                                                bias=False)

        self.encoder = Encoder(bn_momentum, output_stride)
        #self.decoder = Decoder(num_classes, bn_momentum)
        self.decoder4 = nn.Sequential(
            nn.ConvTranspose2d(256, 256, 5, 2, padding=2, output_padding=0),
            nn.BatchNorm2d(256),
            nn.ReLU(True),
        )
        self.decoder3 = nn.Sequential(
            nn.ConvTranspose2d(256 + 1024,
                               256,
                               5,
                               2,
                               padding=2,
                               output_padding=1),
            nn.BatchNorm2d(256),
            nn.ReLU(True),
        )
        self.decoder2 = nn.Sequential(
            nn.ConvTranspose2d(256 + 512,
                               256,
                               3,
                               2,
                               padding=1,
                               output_padding=1),
            nn.BatchNorm2d(256),
            nn.ReLU(True),
        )
        self.decoder1 = nn.Sequential(
            nn.ConvTranspose2d(256, 64, 3, 2, padding=1, output_padding=1),
            nn.BatchNorm2d(64),
            nn.ReLU(True),
        )
        self.conv_final = nn.Sequential(
            nn.Conv2d(64, in_channels, kernel_size=7, padding=3, bias=True),
            nn.Tanh())
        # projection head
        '''
Ejemplo n.º 4
0
    def __init__(self,
                 num_classes=2,
                 in_channels=3,
                 arch='resnet101',
                 output_stride=16,
                 bn_momentum=0.9,
                 freeze_bn=False,
                 pretrained=False,
                 patch_size=16,
                 patch_num=4,
                 patch_out_channel=False,
                 pross_num=28,
                 **kwargs):
        super(DeepLab, self).__init__(**kwargs)
        self.model_name = 'deeplabv3plus_' + arch

        # Setup arch
        if arch == 'resnet18':
            NotImplementedError('resnet18 backbone is not implemented yet.')
        elif arch == 'resnet34':
            NotImplementedError('resnet34 backbone is not implemented yet.')
        elif arch == 'resnet50':
            self.backbone = ResNet.resnet50(bn_momentum, pretrained)
            if in_channels != 3:
                self.backbone.conv1 = nn.Conv2d(in_channels,
                                                64,
                                                kernel_size=7,
                                                stride=2,
                                                padding=3,
                                                bias=False)
        elif arch == 'resnet101':
            self.backbone = ResNet.resnet101(bn_momentum, pretrained)
            if in_channels != 3:
                self.backbone.conv1 = nn.Conv2d(in_channels,
                                                64,
                                                kernel_size=7,
                                                stride=2,
                                                padding=3,
                                                bias=False)

        self.encoder = Encoder(bn_momentum, output_stride)
        #self.decoder = Decoder(num_classes, bn_momentum)
        self.avgpool = nn.AdaptiveAvgPool2d((1, 1))
        self.patch_num = patch_num
        self.patch_size = patch_size
        self.pross_num = pross_num
        # projection head
        '''
        self.proj = nn.Sequential(
            nn.Conv2d(256, 256, 1, bias=False),
            nn.BatchNorm2d(256),
            nn.ReLU(inplace=True),
            nn.Conv2d(256, 10, 1, bias=True)
        )
        '''
        self.proj = nn.Sequential(nn.Linear(256 * 2, 256), nn.ReLU(),
                                  nn.Linear(256, num_classes))
        if not patch_out_channel:
            patch_out_channel = num_classes
        self.proj1 = nn.Sequential(nn.Linear(num_classes, num_classes),
                                   nn.ReLU(),
                                   nn.Linear(num_classes, patch_out_channel))