示例#1
0
    def __init__(self,
                 encoder_dir=None,
                 decoder_dir=None,
                 temp=None,
                 pretrainRes=False,
                 uselayer=4):
        '''
		For switchable concenration loss
		Using Resnet18
		'''
        super(Model_switchGTfixdot_swCC_Res, self).__init__()
        self.gray_encoder = encoder_res18(pretrained=pretrainRes,
                                          uselayer=uselayer)
        self.rgb_encoder = encoder3(reduce=True)
        self.nlm = NLM_woSoft()
        self.decoder = decoder3(reduce=True)
        self.temp = temp
        self.softmax = nn.Softmax(dim=1)
        self.cos_window = torch.Tensor(np.outer(np.hanning(40),
                                                np.hanning(40))).cuda()
        self.normalize = normalize(mean=[0.485, 0.456, 0.406],
                                   std=[0.229, 0.224, 0.225])

        if (not encoder_dir is None):
            print("Using pretrained encoders: %s." % encoder_dir)
            self.rgb_encoder.load_state_dict(torch.load(encoder_dir))
        if (not decoder_dir is None):
            print("Using pretrained decoders: %s." % decoder_dir)
            self.decoder.load_state_dict(torch.load(decoder_dir))

        for param in self.decoder.parameters():
            param.requires_grad = False
        for param in self.rgb_encoder.parameters():
            param.requires_grad = False
示例#2
0
    def __init__(self,
                 pretrained,
                 encoder_dir=None,
                 decoder_dir=None,
                 temp=1,
                 Resnet="r18",
                 color_switch=True,
                 coord_switch=True):
        super(track_match_comb, self).__init__()

        if Resnet in "r18":
            self.gray_encoder = encoder_res18(pretrained=pretrained,
                                              uselayer=4)
        elif Resnet in "r50":
            self.gray_encoder = encoder_res50(pretrained=pretrained,
                                              uselayer=4)
        self.rgb_encoder = encoder3(reduce=True)
        self.decoder = decoder3(reduce=True)

        self.rgb_encoder.load_state_dict(torch.load(encoder_dir))
        self.decoder.load_state_dict(torch.load(decoder_dir))
        for param in self.decoder.parameters():
            param.requires_grad = False
        for param in self.rgb_encoder.parameters():
            param.requires_grad = False

        self.nlm = NLM_woSoft()
        self.normalize = normalize(mean=[0.485, 0.456, 0.406],
                                   std=[0.229, 0.224, 0.225])
        self.softmax = nn.Softmax(dim=1)
        self.temp = temp
        self.grid_flat = None
        self.grid_flat_crop = None
        self.color_switch = color_switch
        self.coord_switch = coord_switch
示例#3
0
    def __init__(self,
                 pretrained,
                 encoder_dir=None,
                 decoder_dir=None,
                 temp=1,
                 Resnet="r50",
                 color_switch=True,
                 coord_switch=True):
        super(track_match_comb, self).__init__()

        if Resnet in "r18":
            self.gray_encoder = encoder_res18(pretrained=pretrained,
                                              uselayer=4)
        elif Resnet in "r50":
            self.gray_encoder = encoder_res50(pretrained=pretrained,
                                              uselayer=4)
        self.rgb_encoder = encoder3(reduce=True)
        self.decoder = decoder3(reduce=True)
        self.CAM = DeepLab_org(base='densenet169', c_output=1)
        #self.CAM = nn.DataParallel(self.model_org).cuda()
        self.CAM.load_state_dict(
            convert_state_dict(torch.load('./libs/sal.pth')))
        for param in self.CAM.parameters():
            param.requires_grad = False
        self.CAM.eval()
        self.rgb_encoder.load_state_dict(torch.load(encoder_dir))
        self.decoder.load_state_dict(torch.load(decoder_dir))
        for param in self.decoder.parameters():
            param.requires_grad = False
        for param in self.rgb_encoder.parameters():
            param.requires_grad = False

        self.nlm = NLM_woSoft()
        self.normalize = normalize(mean=[0.485, 0.456, 0.406],
                                   std=[0.229, 0.224, 0.225])
        self.softmax = nn.Softmax(dim=1)
        self.temp = temp
        self.grid_flat = None
        self.grid_flat_crop = None
        self.color_switch = color_switch
        self.coord_switch = coord_switch
        self.value_num = 128
        self.key_num = 32
        self.channel = 512
        self.pool = nn.MaxPool2d(kernel_size=2)
        self.fusion3_1 = Residual_block(self.value_num * 2, self.value_num * 2)
        self.fusion3_2 = Residual_block(self.value_num * 2, self.value_num)
        self.fusion2_1 = Residual_block(self.value_num, self.value_num)
        self.fusion2_2 = Residual_block(self.value_num, self.value_num)
        self.weak_conv1 = GC(self.value_num, self.value_num // 2)
        self.weak_bn = nn.BatchNorm2d(self.value_num // 2)

        #self.weak_conv2 = nn.Conv2d(self.value_num,1,1, bias=True)
        self.weak_conv2_1 = nn.Conv2d(self.value_num // 2,
                                      1,
                                      kernel_size=3,
                                      stride=1,
                                      dilation=6,
                                      padding=6)
        self.weak_conv2_2 = nn.Conv2d(self.value_num // 2,
                                      1,
                                      kernel_size=3,
                                      stride=1,
                                      dilation=12,
                                      padding=12)
        self.weak_conv2_3 = nn.Conv2d(self.value_num // 2,
                                      1,
                                      kernel_size=3,
                                      stride=1,
                                      dilation=18,
                                      padding=18)
        self.memory_encoder = self._make_encoder(self.channel,
                                                 key_num=self.key_num,
                                                 value_num=self.value_num)
        self.linear_e = nn.Linear(self.key_num, self.key_num, bias=False)
        self.prelu = nn.ReLU(inplace=True)
        self.sigmoid = nn.Sigmoid()
示例#4
0
    def __init__(self,
                 encoder_dir=None,
                 decoder_dir=None,
                 temp=None,
                 pretrainRes=False,
                 uselayer=4):
        '''
		For switchable concenration loss
		Using Resnet18
		'''
        super(Model_switchGTfixdot_swCC_Res_ZVOS, self).__init__()
        self.gray_encoder = encoder_res18(pretrained=pretrainRes,
                                          uselayer=uselayer)
        self.rgb_encoder = encoder3(reduce=True)
        self.nlm = NLM_woSoft()
        self.decoder = decoder3(reduce=True)
        self.temp = temp
        self.softmax = nn.Softmax(dim=1)
        self.cos_window = torch.Tensor(np.outer(np.hanning(40),
                                                np.hanning(40))).cuda()
        self.normalize = normalize(mean=[0.485, 0.456, 0.406],
                                   std=[0.229, 0.224, 0.225])
        self.value_num = 256
        self.key_num = 64
        self.channel = 512
        self.CAM = DeepLab_org(base='densenet169', c_output=1)
        #self.CAM = nn.DataParallel(self.model_org).cuda()
        self.CAM.load_state_dict(
            convert_state_dict(torch.load('./libs/sal.pth')))
        for param in self.CAM.parameters():
            param.requires_grad = False
        self.pool = nn.MaxPool2d(kernel_size=2)
        self.weak_conv1 = GC(512 * 2, self.value_num)
        self.weak_bn = nn.BatchNorm2d(self.value_num)
        self.weak_conv2_1 = nn.Conv2d(self.value_num,
                                      1,
                                      kernel_size=3,
                                      stride=1,
                                      dilation=6,
                                      padding=6)
        self.weak_conv2_2 = nn.Conv2d(self.value_num,
                                      1,
                                      kernel_size=3,
                                      stride=1,
                                      dilation=12,
                                      padding=12)
        self.weak_conv2_3 = nn.Conv2d(self.value_num,
                                      1,
                                      kernel_size=3,
                                      stride=1,
                                      dilation=18,
                                      padding=18)
        self.prelu = nn.ReLU(inplace=True)
        self.sigmoid = nn.Sigmoid()

        if (not encoder_dir is None):
            print("Using pretrained encoders: %s." % encoder_dir)
            self.rgb_encoder.load_state_dict(torch.load(encoder_dir))
        if (not decoder_dir is None):
            print("Using pretrained decoders: %s." % decoder_dir)
            self.decoder.load_state_dict(torch.load(decoder_dir))

        for param in self.decoder.parameters():
            param.requires_grad = False
        for param in self.rgb_encoder.parameters():
            param.requires_grad = False