Beispiel #1
0
class NormalIntermediateFeature(Filter):
    def __init__(self, filter_size, input_size, scales, features, orientations,
                 folder_name, mode):
        self.filter_size = filter_size  # size of patch
        self.input_size = input_size
        self.orientations = orientations  # number of orientation
        self.scales = scales
        self.features = features
        self.folder_name = folder_name
        self.mode = mode

    def compute_s2(self, input_layer, output_layer):
        class_number = 1
        data_number = 1
        exi1 = path.isdir(self.folder_name + "/" + str(class_number) + "_" +
                          str(data_number) + "_" + str(self.input_size))
        print "\n", "normal_s2"
        while exi1:
            exi2 = path.isdir(self.folder_name + "/" + str(class_number) +
                              "_" + str(data_number) + "_" +
                              str(self.input_size))
            while exi2:
                self.prototype = Layer(self.filter_size, self.scales,
                                       self.orientations, "learning_s2",
                                       self.features, self.filter_size,
                                       input_layer)
                self.prototype.set_layer(
                    self.folder_name,
                    str(class_number) + "_" + str(data_number) + "_" +
                    str(self.input_size))
                print "feature set " + str(class_number) + "_" + str(
                    data_number)
                self.compute_layer(input_layer, output_layer)

                data_number += 1
                exi2 = path.isdir(self.folder_name + "/" + str(class_number) +
                                  "_" + str(data_number) + "_" +
                                  str(self.input_size))
            data_number = 1
            class_number += 1
            exi1 = path.isdir(self.folder_name + "/" + str(class_number) +
                              "_" + str(data_number) + "_" +
                              str(self.input_size))

    def compute_unit(self, input_layer, scale, feature, x, y, orientation):
        patch = input_layer.get_array(scale)[0, x:x + self.filter_size,
                                             y:y + self.filter_size,
                                             orientation]
        p_patch = self.prototype.get_array(scale)[feature, 0:self.filter_size,
                                                  0:self.filter_size,
                                                  orientation]
        alpha = (self.filter_size / 4)**2.0
        res = np.exp(-np.linalg.norm(p_patch - patch) * 1.0 / (2 * alpha))
        return res
class NormalIntermediateFeature(Filter):
    def __init__(self, filter_size, input_size, scales, features, orientations, folder_name, mode):
        self.filter_size = filter_size  # size of patch
        self.input_size = input_size
        self.orientations = orientations  # number of orientation
        self.scales = scales
        self.features = features
        self.folder_name = folder_name
        self.mode = mode

    def compute_s2(self, input_layer, output_layer):
        class_number = 1
        data_number = 1
        exi1 = path.isdir(self.folder_name + "/" + str(class_number) + "_" + str(data_number)
                          + "_" + str(self.input_size))
        print "\n", "normal_s2"
        while exi1:
            exi2 = path.isdir(self.folder_name + "/" + str(class_number) + "_" + str(data_number)
                              + "_" + str(self.input_size))
            while exi2:
                self.prototype = Layer(self.filter_size, self.scales, self.orientations, "learning_s2",
                                       self.features, self.filter_size, input_layer)
                self.prototype.set_layer(self.folder_name, str(class_number) + "_" + str(data_number)
                                         + "_" + str(self.input_size))
                print "feature set " + str(class_number) + "_" + str(data_number)
                self.compute_layer(input_layer, output_layer)

                data_number += 1
                exi2 = path.isdir(self.folder_name + "/" + str(class_number) + "_" + str(data_number)
                                  + "_" + str(self.input_size))
            data_number = 1
            class_number += 1
            exi1 = path.isdir(self.folder_name + "/" + str(class_number) + "_" + str(data_number)
                              + "_" + str(self.input_size))

    def compute_unit(self, input_layer, scale, feature, x, y, orientation):
        patch = input_layer.get_array(scale)[0, x:x + self.filter_size, y:y + self.filter_size, orientation]
        p_patch = self.prototype.get_array(scale)[feature, 0:self.filter_size, 0:self.filter_size, orientation]
        alpha = (self.filter_size / 4) ** 2.0
        res = np.exp(-np.linalg.norm(p_patch - patch) * 1.0 / (2 * alpha))
        return res
Beispiel #3
0
        ns2Layer = Layer(INPUT_SIZE, C1_SCALES, ORIENTATIONS, "normal_s2",
                         FEATURES, PROTOTYPE_SIZE, c1Layer)
        #print "\nC2 Layer"
        c2Layer = Layer(PROTOTYPE_SIZE, C1_SCALES, ORIENTATIONS, "c2",
                        FEATURES, 0, ns2Layer)

        S1.compute_layer(InputLayer, s1Layer)
        C1.compute_layer(s1Layer, c1Layer)
        NormalS2.compute_s2(c1Layer, ns2Layer)
        C2.compute_layer(ns2Layer, c2Layer)

        vector = []
        for s in range(C1_SCALES):
            #features = c2Layer.get_features(s)
            for o in range(ORIENTATIONS):
                vector.extend(c2Layer.get_array(s)[:, 0, 0, o])

        print "\n"
        NormalSVM.predict_class(vector)

        print "\n", time.time() - start

    elif mode == "l":
        start = time.time()

        S1 = GaborFilter(11, 0.3, 4.0, 1.0, ORIENTATIONS)
        C1 = LocalInvariance(10, ORIENTATIONS)
        LearningS2 = LearningIntermediateFeature(PROTOTYPE_SIZE, ORIENTATIONS,
                                                 FEATURES_FOLDER_NAME)
        NormalS2 = NormalIntermediateFeature(PROTOTYPE_SIZE, INPUT_SIZE,
                                             C1_SCALES, FEATURES, ORIENTATIONS,