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)
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)
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))
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[:]
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)