def get_M(self, F, tau=0.05):
     assert (F.dim() == 4)
     F_squared_sum = F.pow(2).sum(1, keepdim=True).pow(0.5)
     F_normalized = self.normalize_0_to_1(F_squared_sum)  # all feature normalize ~ [0,1]
     M = self.Tensor(F_normalized.size())
     M.copy_(torch.ge(F_normalized, tau))  # >= tau
     return M
Ejemplo n.º 2
0
def stdv_channels(F):
    assert (F.dim() == 4)
    F_mean = mean_channels(F)
    F_variance = (F - F_mean).pow(2).sum(3, keepdim=True).sum(
        2, keepdim=True) / (F.size(2) * F.size(3))
    x = F_variance.pow(0.5)
    return x
Ejemplo n.º 3
0
 def rescaled_contrast_layer(F):
     assert (F.dim() == 4)
     F_mean = mean_channels(F)
     F_variance = (F - F_mean).pow(2).sum(3, keepdim=True).sum(
         2, keepdim=True) / (F.size(2) * F.size(3))
     # return F_mean / F_variance.pow(0.5)
     # return - F_mean + F_variance
     return -F_mean / F_variance.pow(0.5) + F_variance.pow(0.5)
    def normalize_0_to_1(self, F):
        assert (F.dim() == 4)
        max_val = F.max()
        min_val = F.min()
        if max_val != min_val:
            F_normalized = (F - min_val) / (max_val - min_val)
        else:
            F_normalized = self.Tensor(F.size()).fill_(0)

        return F_normalized
Ejemplo n.º 5
0
def mean_channels(F):
    assert (F.dim() == 4)
    spatial_sum = F.sum(3, keepdim=True).sum(2, keepdim=True)
    return spatial_sum / (F.size(2) * F.size(3))