Пример #1
0
    def forward(self, in0, in1, retPerLayer=False):
        if self.pnet_type == 'vggface':
            in0 = (in0 + 1) * 255. / 2
            in0_sc = in0 - self.shift.expand_as(in0)
            in1 = (in1 + 1) * 255. / 2
            in1_sc = in1 - self.shift.expand_as(in1)
        else:
            in0_sc = (in0 -
                      self.shift.expand_as(in0)) / self.scale.expand_as(in0)
            in1_sc = (in1 -
                      self.shift.expand_as(in0)) / self.scale.expand_as(in0)

        outs0 = self.net.forward(in0_sc)
        outs1 = self.net.forward(in1_sc)

        if (retPerLayer):
            all_scores = []

        st = 3
        en = 4

        for i in range(st, en + 1):
            cur_score = (1. - util.cos_sim(outs0[i], outs1[i]))
            if (i == st):
                val = 1. * cur_score
            else:
                val = val + cur_score
            if (retPerLayer):
                all_scores += [cur_score]

        if (retPerLayer):
            return (val, all_scores)
        else:
            return val
Пример #2
0
    def forward(self, in0, in1, retPerLayer=False):
        in0_sc = (in0 - self.shift.expand_as(in0)) / self.scale.expand_as(in0)
        in1_sc = (in1 - self.shift.expand_as(in0)) / self.scale.expand_as(in0)

        if self.colorspace == 'Gray':
            in0_sc = util.tensor2tensorGrayscaleLazy(in0_sc)
            in1_sc = util.tensor2tensorGrayscaleLazy(in1_sc)

        outs0 = self.net.forward(in0_sc)
        outs1 = self.net.forward(in1_sc)

        if (retPerLayer):
            all_scores = []
        for (kk, out0) in enumerate(outs0):
            cur_score = (1. - util.cos_sim(outs0[kk], outs1[kk]))
            if (kk == 0):
                val = 1. * cur_score
            else:
                # val = val + self.lambda_feat_layers[kk]*cur_score
                val = val + cur_score
            if (retPerLayer):
                all_scores += [cur_score]

        if (retPerLayer):
            return (val, all_scores)
        else:
            return val
Пример #3
0
    def forward_layers(self, in0, in1, st, en):
        in0_sc = (in0 - self.shift.expand_as(in0)) / self.scale.expand_as(in0)
        in1_sc = (in1 - self.shift.expand_as(in0)) / self.scale.expand_as(in0)

        outs0 = self.net.forward(in0_sc)
        outs1 = self.net.forward(in1_sc)

        for i in range(st, en + 1):
            cur_score = (1. - util.cos_sim(outs0[i], outs1[i]))
            if (i == st):
                val = 1. * cur_score
            else:
                val = val + cur_score

        return val
    def forward(self, in0, in1, retPerLayer=False):
        in0_sc = (in0 - self.shift.expand_as(in0))/self.scale.expand_as(in0)
        in1_sc = (in1 - self.shift.expand_as(in0))/self.scale.expand_as(in0)

        outs0 = self.net.forward(in0_sc)
        outs1 = self.net.forward(in1_sc)

        if(retPerLayer):
            all_scores = []
        for (kk,out0) in enumerate(outs0):
            cur_score = (1.-util.cos_sim(outs0[kk],outs1[kk]))
            if(kk==0):
                val = 1.*cur_score
            else:
                # val = val + self.lambda_feat_layers[kk]*cur_score
                val = val + cur_score
            if(retPerLayer):
                all_scores+=[cur_score]

        if(retPerLayer):
            return (val, all_scores)
        else:
            return val