Ejemplo n.º 1
0
    def __init__(self):
        super(DeformNet, self).__init__()
        self.conv1 = nn.Conv2d(1, 32, kernel_size=3, padding=1)
        self.bn1 = nn.BatchNorm2d(32)

        self.conv2 = nn.Conv2d(32, 64, kernel_size=3, padding=1)
        self.bn2 = nn.BatchNorm2d(64)

        self.conv3 = nn.Conv2d(64, 128, kernel_size=3, padding=1)
        self.bn3 = nn.BatchNorm2d(128)

        self.offsets = nn.Conv2d(128, 18, kernel_size=3, padding=1)
        self.conv4 = DeformConv2D(128, 128, kernel_size=3, padding=1)
        self.bn4 = nn.BatchNorm2d(128)

        self.classifier = nn.Linear(128, 10)
Ejemplo n.º 2
0
    def __init__(self):
        super(DeformNet, self).__init__()
        self.conv1 = nn.Conv2d(3, 32, kernel_size=3, padding=1)
        self.bn1 = nn.BatchNorm2d(32)

        self.conv2 = nn.Conv2d(32, 64, kernel_size=3, padding=1)
        self.bn2 = nn.BatchNorm2d(64)

        self.conv3 = nn.Conv2d(64, 128, kernel_size=3, padding=1)
        self.bn3 = nn.BatchNorm2d(128)

        # the 18 is the 2 * 3 * 3 (3 * 3 is the size of the kernel) - multiply with 2 because it generate 
        # the offsets coordinates for each of the 3 * 3 kernel
        self.offsets = nn.Conv2d(128, 18, kernel_size=3, padding=1) # first step in DCN process
        self.conv4 = DeformConv2D(128, 128, kernel_size=3, padding=1)
        self.bn4 = nn.BatchNorm2d(128)

        self.classifier = nn.Linear(128, 10)
Ejemplo n.º 3
0
    def __init__(self):
        super(Fine, self).__init__()
        self.conv1_1 = nn.Conv2d(1, 64, 3, padding=1)
        self.relu1_1 = nn.ReLU(inplace=True)
        self.conv1_2 = nn.Conv2d(64, 64, 3, padding=1)
        self.relu1_2 = nn.ReLU(inplace=True)
        self.pool1 = nn.MaxPool2d(2, stride=2, ceil_mode=True)  # 1/2

        # conv2
        self.conv2_1 = nn.Conv2d(64, 128, 3, padding=1)
        self.relu2_1 = nn.ReLU(inplace=True)
        self.conv2_2 = nn.Conv2d(128, 128, 3, padding=1)
        self.relu2_2 = nn.ReLU(inplace=True)
        self.pool2 = nn.MaxPool2d(2, stride=2, ceil_mode=True)  # 1/4

        # conv3
        self.conv3_1 = nn.Conv2d(128, 256, 3, padding=1)
        self.relu3_1 = nn.ReLU(inplace=True)
        self.conv3_2 = nn.Conv2d(256, 256, 3, padding=1)
        self.relu3_2 = nn.ReLU(inplace=True)
        self.conv3_3 = nn.Conv2d(256, 256, 3, padding=1)
        self.relu3_3 = nn.ReLU(inplace=True)
        self.pool3 = nn.MaxPool2d(2, stride=2, ceil_mode=True)  # 1/8

        # conv4
        self.conv4_1 = nn.Conv2d(256, 512, 3, padding=1)
        self.relu4_1 = nn.ReLU(inplace=True)
        self.conv4_2 = nn.Conv2d(512, 512, 3, padding=1)
        self.relu4_2 = nn.ReLU(inplace=True)
        self.conv4_3 = nn.Conv2d(512, 512, 3, padding=1)
        self.relu4_3 = nn.ReLU(inplace=True)
        self.pool4 = nn.MaxPool2d(2, stride=2, ceil_mode=True)  # 1/16

        #conv5
        self.conv5_1 = nn.Conv2d(512, 512, 3, padding=1)
        self.relu5_1 = nn.ReLU(inplace=True)
        self.conv5_2 = nn.Conv2d(512, 512, 3, padding=1)
        self.relu5_2 = nn.ReLU(inplace=True)
        self.conv5_3 = nn.Conv2d(512, 512, 3, padding=1)
        self.relu5_3 = nn.ReLU(inplace=True)

        self.conv6_1 = nn.Conv2d(512, 256, 3, padding=1)
        self.relu6_1 = nn.ReLU(inplace=True)
        self.conv6_2 = nn.Conv2d(256, 128, 3, padding=1)
        self.relu6_2 = nn.ReLU(inplace=True)
        self.conv6_3 = nn.Conv2d(128, 64, 3, padding=1)
        self.relu6_3 = nn.ReLU(inplace=True)

        self.conv7_1 = nn.Conv2d(64, 32, 3, padding=1)
        self.relu7_1 = nn.ReLU(inplace=True)
        self.conv7_2 = nn.Conv2d(32, 16, 3, padding=1)
        self.relu7_2 = nn.ReLU(inplace=True)
        self.conv7_3 = nn.Conv2d(16, 8, 3, padding=1)
        self.relu7_3 = nn.ReLU(inplace=True)

        self.conv8_1 = nn.Conv2d(8, 4, 3, padding=1)
        self.relu8_1 = nn.ReLU(inplace=True)
        self.conv8_2 = nn.Conv2d(4, 2, 3, padding=1)
        self.relu8_2 = nn.ReLU(inplace=True)
        self.conv8_3 = nn.Conv2d(2, 1, 3, padding=1)
        self.relu8_3 = nn.ReLU(inplace=True)

        self.offsets4 = nn.Conv2d(512, 18, kernel_size=3, padding=1)
        self.conv4 = DeformConv2D(512, 1, 3, padding=1)
        self.relu4 = nn.ReLU(inplace=True)

        self.offsets5 = nn.Conv2d(512, 18, kernel_size=3, padding=1)
        self.conv5 = DeformConv2D(512, 1, 3, padding=1)
        self.relu5 = nn.ReLU(inplace=True)

        self.offsets6 = nn.Conv2d(64, 18, kernel_size=3, padding=1)
        self.conv6 = DeformConv2D(64, 1, 3, padding=1)
        self.relu6 = nn.ReLU(inplace=True)

        self.offsets7 = nn.Conv2d(8, 18, kernel_size=3, padding=1)
        self.conv7 = DeformConv2D(8, 1, 3, padding=1)
        self.relu7 = nn.ReLU(inplace=True)

        self.w4 = nn.Parameter(torch.ones(1))
        self.w5 = nn.Parameter(torch.ones(1))
        self.w6 = nn.Parameter(torch.ones(1))
        self.w7 = nn.Parameter(torch.ones(1))
        self.w8 = nn.Parameter(torch.ones(1))
Ejemplo n.º 4
0
    def __init__(self, load_weights=False):
        super(ASPDNet, self).__init__()
        self.seen = 0
        ## frontend feature extraction
        self.frontend_feat = [
            64, 64, 'M', 128, 128, 'M', 256, 256, 256, 'M', 512, 512, 512
        ]
        self.mid_feat = [512, 512, 512]
        self.frontend = make_layers(self.frontend_feat)
        '''
        # CBAM module (convolution block attention module)
        cite as "CBAM: Convolutional Block Attention Module, 2018 ECCV"
        '''
        self.planes = self.frontend_feat[-1]
        self.ca = ChannelAttention(self.planes)
        self.sa = SpatialAttention()
        '''
        dilation convolution (Spatial Pyramid Module)
        cite as "Scale Pyramid Network for Crowd Counting, 2019 WACV"
        '''
        self.conv4_3_1 = nn.Conv2d(512,
                                   512,
                                   kernel_size=3,
                                   padding=2,
                                   dilation=2)
        self.conv4_3_2 = nn.Conv2d(512,
                                   512,
                                   kernel_size=3,
                                   padding=4,
                                   dilation=4)
        self.conv4_3_3 = nn.Conv2d(512,
                                   512,
                                   kernel_size=3,
                                   padding=8,
                                   dilation=8)
        self.conv4_3_4 = nn.Conv2d(512,
                                   512,
                                   kernel_size=3,
                                   padding=12,
                                   dilation=12)
        # self.conv4 = [self.conv4_3_1, self.conv4_3_2, self.conv4_3_3, self.conv4_3_4]
        self.conv5 = nn.Conv2d(2048, 512, kernel_size=1)
        '''
        convolution layers
        '''
        self.mid_end = make_layers(
            self.mid_feat,
            in_channels=512,
        )
        '''
        deformable convolution network
        cite as "Deformable Convolutional Networks, 2017 ICCV"
        '''
        self.offset1 = nn.Conv2d(512, 18, kernel_size=3, padding=1)
        self.conv6_1 = DeformConv2D(512, 256, kernel_size=3, padding=1)
        self.bn6_1 = nn.BatchNorm2d(256)

        self.offset2 = nn.Conv2d(256, 18, kernel_size=3, padding=1)
        self.conv6_2 = DeformConv2D(256, 128, kernel_size=3, padding=1)
        self.bn6_2 = nn.BatchNorm2d(128)

        self.offset3 = nn.Conv2d(128, 18, kernel_size=3, padding=1)
        self.conv6_3 = DeformConv2D(128, 64, kernel_size=3, padding=1)
        self.bn6_3 = nn.BatchNorm2d(64)

        self.output_layer = nn.Conv2d(64, 1, kernel_size=1)

        if not load_weights:
            mod = models.vgg16(pretrained=True)
            self._initialize_weights()
            for i in range(len(self.frontend.state_dict().items())):
                list(self.frontend.state_dict().items())[i][1].data[:] = list(
                    mod.state_dict().items())[i][1].data[:]
Ejemplo n.º 5
0
 def __init__(self, in_c, out_c):  #inc, outc 이거 알아서 파라미터로 받아보기
     super(deformable_filter, self).__init__()
     self.offset = nn.Conv2d(in_c, 18, kernel_size=3, padding=1)
     self.deform_conv = DeformConv2D(in_c, out_c, kernel_size=3, padding=1)
     init_conv_offset(self.offset)