Exemple #1
0
    def testingCNN(self, img_test):
        print("Proses")
        bar = progressbar.ProgressBar(maxval=2,
                                      widgets=[
                                          progressbar.Bar('=', '[', ']'), ' ',
                                          progressbar.Percentage()
                                      ])
        bar.start()

        ## Panggil filter 12345
        filter_load = np.load("bobot/filter.npz")
        l1_filter = filter_load['f1']
        l2_filter = filter_load['f2']
        # l3_filter = filter_load['f3']
        # l4_filter = filter_load['f4']
        # l5_filter = filter_load['f5']

        ## Panggil bobot+bias
        bobot_simpan = np.load("bobot/0,000125/bobot200.npz")

        weight = bobot_simpan['bobot']
        bias = bobot_simpan['biass']

        ## Layer 1 ##
        # C1 #
        l1_feature_map = numpycnn.conv(img_test, l1_filter)
        l1_feature_map_relu = numpycnn.relu(l1_feature_map)

        # S1 #
        l1_feature_map_relu_pool = numpycnn.pooling(l1_feature_map_relu)

        bar.update(1)
        time.sleep(0.1)

        ## Layer 2 ##
        # C2 #
        l2_feature_map = numpycnn.conv(l1_feature_map_relu_pool, l2_filter)
        l2_feature_map_relu = numpycnn.relu(l2_feature_map)

        # S2 #
        l2_feature_map_relu_pool = numpycnn.pooling(l2_feature_map_relu)

        bar.update(2)
        time.sleep(0.1)

        # ## Layer 3 ##
        #  # C3 #
        # l3_feature_map = numpycnn.conv(l2_feature_map_relu_pool, l3_filter)
        # l3_feature_map_relu = numpycnn.relu(l3_feature_map)
        #
        #  # S3 #
        # l3_feature_map_relu_pool = numpycnn.pooling(l3_feature_map_relu)
        #
        # bar.update(3)
        # time.sleep(0.1)
        #
        # ## Layer 4 ##
        #  # C4 #
        # l4_feature_map = numpycnn.conv(l3_feature_map_relu_pool, l4_filter)
        # l4_feature_map_relu = numpycnn.relu(l4_feature_map)
        #
        #  # S4 #
        # l4_feature_map_relu_pool = numpycnn.pooling(l4_feature_map_relu)
        #
        # bar.update(4)
        # time.sleep(0.1)
        #
        # ## Layer 5 ##
        #  # C5 #
        # l5_feature_map = numpycnn.conv(l4_feature_map_relu_pool, l5_filter)
        # l5_feature_map_relu = numpycnn.relu(l5_feature_map)
        # npad = ((0,1), (0,1), (0,0))
        # l5_feature_map_relu = np.pad(l5_feature_map_relu, pad_width=npad, mode='constant', constant_values=0)
        #
        #  # S5 #
        # l5_feature_map_relu_pool = numpycnn.pooling(l5_feature_map_relu)
        #
        # bar.update(5)
        # time.sleep(0.1)

        bar.finish()

        ### Vektorisasi ###
        vektor = np.zeros((4, 1, 5184))
        for i in range(0, 4):
            vektor[i, :, :] = l2_feature_map_relu_pool[:, :, i].flatten()

        flatten = np.reshape(vektor, 20736).flatten()
        flatten = flatten.reshape((-1, 1))

        ### Fully-connected ###
        kelas = ["Optimis", "Pesimis", "Seimbang"]

        fully = []
        for i in range(0, len(kelas)):
            fully.append(np.sum(flatten * weight[i, :]) + bias[i])

        ## Exponensial ##
        eksponen = []
        for i in range(0, len(kelas)):
            eksponen.append(math.exp(fully[i]))

        ## Softmax ##
        softmax = []
        for i in range(0, len(kelas)):
            softmax.append(eksponen[i] / sum(eksponen))

        print("\n")
        # print("--> Hasil prediksi :",softmax)
        print("Maka, kepribadian yang diprediksi adalah :",
              kelas[np.argmax(softmax)])
        self.label.setText(kelas[np.argmax(softmax)])
Exemple #2
0
    def trainingCNN(self):
        ## Timer ##
        start = time.time()

        # ##### Siapin Data #####
        training_data = []
        DATADIR = "D:/Datasets/Benar/TulisanTanganTest/"
        CATEGORIES = ["Optimis", "Pesimis", "Seimbang"]

        list1 = os.listdir(os.path.join(DATADIR, "Optimis"))
        list2 = os.listdir(os.path.join(DATADIR, "Pesimis"))
        list3 = os.listdir(os.path.join(DATADIR, "Seimbang"))
        jumlah_file = len(list1) + len(list2) + len(list3)

        print("Preprocessing")
        print(jumlah_file)
        bar = progressbar.ProgressBar(maxval=50,
                                      widgets=[
                                          progressbar.Bar('=', '[', ']'), ' ',
                                          progressbar.Percentage()
                                      ])
        bar.start()
        x = 0
        for category in CATEGORIES:
            path = os.path.join(
                DATADIR,
                category)  # Ambil Folder Kelas['Optimis','Pesimis','Seimbang']
            class_num = CATEGORIES.index(category)
            for gambar in os.listdir(path):
                img = cv2.imread(os.path.join(path, gambar))
                gray = self.grayscale(img)
                thres = self.threshold(gray)
                crop = self.segmentasi(thres, img)
                res = self.resize(crop)

                training_data.append([res, class_num])

                random.shuffle(training_data)

                bar.update(x + 1)
                time.sleep(0.1)
                x = x + 1

        bar.finish()

        end = time.time()
        cetak = "Lamanya Proses : " + str(int(round(end - start))) + "s"
        self.textBrowser.append(cetak)

        # Split data training
        X = []
        y = []
        for features, label in training_data:
            X.append(features)
            y.append(label)

        for i in range(0, len(y)):
            ohl = [0, 0, 0]
            ohl[y[i]] = 1
            y[i] = ohl

        y = np.array(y)

        # np.savez("bobot/draft/data.npz", matriks=X, label=y)

        # data_load = np.load("bobot/data.npz")
        # X = data_load['matriks']
        # y = data_load['label']

        # print(y)
        ##### END #####

        ##### CNN #####

        #### Inisialisasi Awal ####

        ## Panggil bobot awal

        ## Panggil filter 12345
        filter_load = np.load("bobot/filter.npz")
        l1_filter = filter_load['f1']
        l2_filter = filter_load['f2']
        # l3_filter = filter_load['f3']
        # l4_filter = filter_load['f4']
        # l5_filter = filter_load['f5']

        ## Panggil weight
        # weight = np.load("bobot/weight_awal.npy")

        weight = np.zeros((3, 20736, 1))
        for i in range(0, 2):
            for j in range(0, 20735):
                angka = round(random.uniform(-0.05, 0.05), 2)
                weight[i, j, :] = angka

        ## Panggil Flatten
        flatten = np.load("bobot/flatten.npy")

        #### Feedforward ####
        print("Training CNN")
        # bar.start()
        x = 0
        bias = [0, 0, 0]
        epoch = 200
        lrate = 0.000125

        for ep in range(0, epoch):
            for image_i in range(0, len(X)):

                cetak = "Input Ke-" + str(image_i + 1)
                print(cetak)
                self.textBrowser.append(cetak)

                ### Layer 1 ###
                # C1
                l1_feature_map = numpycnn.conv(X[image_i], l1_filter)
                l1_feature_map_relu = numpycnn.relu(l1_feature_map)

                # S1
                l1_feature_map_relu_pool = numpycnn.pooling(
                    l1_feature_map_relu)

                # ### Layer 2 ###
                # C2
                l2_feature_map = numpycnn.conv(l1_feature_map_relu_pool,
                                               l2_filter)
                l2_feature_map_relu = numpycnn.relu(l2_feature_map)

                # S2
                l2_feature_map_relu_pool = numpycnn.pooling(
                    l2_feature_map_relu)

                # ### Layer 3 ###
                # # C3
                # l3_feature_map = numpycnn.conv(l2_feature_map_relu_pool, l3_filter)
                # l3_feature_map_relu = numpycnn.relu(l3_feature_map)
                #
                # # S3
                # l3_feature_map_relu_pool = numpycnn.pooling(l3_feature_map_relu)
                #
                # ### Layer 4 ###
                # # C4
                # l4_feature_map = numpycnn.conv(l3_feature_map_relu_pool, l4_filter)
                # l4_feature_map_relu = numpycnn.relu(l4_feature_map)
                #
                # # S4
                # l4_feature_map_relu_pool = numpycnn.pooling(l4_feature_map_relu)
                #
                # ### Layer 5 ###
                # # C5
                # l5_feature_map = numpycnn.conv(l4_feature_map_relu_pool, l5_filter)
                # l5_feature_map_relu = numpycnn.relu(l5_feature_map)
                # npad = ((0,1), (0,1), (0,0))
                # l5_feature_map_relu = np.pad(l5_feature_map_relu, pad_width=npad, mode='constant', constant_values=0)
                #
                # # S5
                # l5_feature_map_relu_pool = numpycnn.pooling(l5_feature_map_relu)
                #
                ### Vektorisasi ###
                vektor = np.zeros((4, 1, 5184))
                for i in range(0, 4):
                    vektor[i, :, :] = l2_feature_map_relu_pool[:, :,
                                                               i].flatten()

                flatten = np.reshape(vektor, 20736).flatten()
                flatten = flatten.reshape((-1, 1))

                flatten_simpan.append(flatten)

                ### Fully-connected ###
                kelas = 3

                fully = []
                for i in range(0, kelas):
                    fully.append(
                        np.sum(flatten[image_i] * weight[i, :]) + bias[i])

                ## Exponensial ##
                eksponen = []
                for i in range(0, kelas):
                    eksponen.append(math.exp(fully[i]))

                ## Softmax ##
                softmax = []
                for i in range(0, kelas):
                    softmax.append(eksponen[i] / sum(eksponen))

                ## Cross-entropy Loss ##
                ohl = y[image_i]
                loss = []
                terror = 0.00001

                for i in range(0, kelas):
                    loss.append(ohl[i] * math.log10(softmax[i]))

                loss = sum(loss) * -1

                ## Backpropagation ##

                if loss > terror:
                    cetak = "-> epoch ke" + str(ep + 1)
                    print(cetak)
                    self.textBrowser.append(cetak)
                    delta_y = []
                    for i in range(0, kelas):
                        delta_y.append(softmax[i] - ohl[i])

                    delta_w = np.zeros((kelas, flatten[image_i].shape[0]))
                    for i in range(0, kelas):
                        for j in range(0, flatten[image_i].shape[0]):
                            delta_w[i, j] = delta_y[i] * flatten[image_i][j]

                    delta_b = delta_y

                    ## SGD ##
                    weight_baru = np.zeros_like(weight)
                    for i in range(0, kelas):
                        for j in range(0, weight.shape[1]):
                            weight_baru[i, j] = weight[i, j] - (lrate *
                                                                delta_w[i, j])

                    weight = weight_baru

                    bias_baru = bias
                    for i in range(0, kelas):
                        bias_baru[i] = bias[i] - (lrate * delta_b[i])
                    bias = bias_baru

                    # FULLY LAGI #
                    fully = []
                    for i in range(0, kelas):
                        fully.append(
                            np.sum(flatten[image_i] * weight[i, :]) + bias[i])

                    ## Exponensial ##
                    eksponen = []
                    for i in range(0, kelas):
                        eksponen.append(math.exp(fully[i]))

                    ## Softmax ##
                    softmax = []
                    for i in range(0, kelas):
                        softmax.append(eksponen[i] / sum(eksponen))

                    cetak = "--> Softmax" + str(softmax)
                    print(cetak)
                    self.textBrowser.append(cetak)

                # np.savez("bobot/filter.npz",f1=l1_filter, f2=l2_filter, f3=l3_filter, f4=l4_filter, f5=l5_filter)

                # lokasi_weight = "bobot/0,000125/bobot" + str(ep + 1) + ".npz"
                #
                # np.savez(lokasi_weight, bobot=weight, biass=bias)

                # if(ep+1 == 50):
                #     np.save("bobot/0,001/ep50/weight.npy", weight)
                #     np.save("bobot/0,001/ep50/bias.npy", bias)
                # elif(ep+1 == 100):
                #     np.save("bobot/0,001/ep100/weight.npy", weight)
                #     np.save("bobot/0,001/ep100/bias.npy", bias)
                # elif(ep+1 == 150):
                #     np.save("bobot/0,001/ep150/weight.npy", weight)
                #     np.save("bobot/0,001/ep150/bias.npy", bias)
                # elif(ep+1 == 200):
                #     np.save("bobot/0,001/ep200/weight.npy", weight)
                #     np.save("bobot/0,001/ep200/bias.npy", bias)
                # elif(ep+1 == 250):
                #     np.save("bobot/0,000125/ep250/weight.npy", weight)
                #     np.save("bobot/0,000125/ep250/bias.npy", bias)

            bar.update(x + 1)
            time.sleep(0.1)
            x = x + 1

            bar.finish()

        end = time.time()
        cetak = "Lamanya Proses : " + str(int(round(end - start))) + "s"
        print(cetak)
        self.textBrowser.append(cetak)
Exemple #3
0
    def cnn_example(self, numpy_img, layer=1):
        if layer == 1:
            #**Working with conv layer 1**
            l1_filter = numpy.zeros((2, 3, 3))
            l1_filter[0, :, :] = numpy.array([[[-1, 0, 1], [-1, 0, 1],
                                               [-1, 0, 1]]])
            l1_filter[1, :, :] = numpy.array([[[1, 1, 1], [0, 0, 0],
                                               [-1, -1, -1]]])

            l1_feature_map = numpycnn.conv(numpy_img, l1_filter)
            im = PIL.Image.fromarray(numpy.uint8(l1_feature_map[:, :, 0]))
            im.save("conv1_filter1.png")

            im = PIL.Image.fromarray(numpy.uint8(l1_feature_map[:, :, 1]))
            im.save("conv1_filter2.png")

            l1_feature_map_relu = numpycnn.relu(l1_feature_map)
            im = PIL.Image.fromarray(numpy.uint8(l1_feature_map[:, :, 0]))
            im.save("conv1_relu1.png")

            im = PIL.Image.fromarray(numpy.uint8(l1_feature_map[:, :, 1]))
            im.save("conv1_relu2.png")

            l1_feature_map_relu_pool = numpycnn.pooling(
                l1_feature_map_relu, 2, 2)
            im = PIL.Image.fromarray(
                numpy.uint8(l1_feature_map_relu_pool[:, :, 0]))
            im.save("conv1_relu_pool1.png")

            im = PIL.Image.fromarray(
                numpy.uint8(l1_feature_map_relu_pool[:, :, 1]))
            im.save("conv1_relu_pool2.png")

            return l1_feature_map_relu_pool

        elif layer == 2:
            #**Working with conv layer 2**
            l2_filter = numpy.random.rand(3, 5, 5, numpy_img.shape[-1])
            l2_feature_map = numpycnn.conv(numpy_img, l2_filter)
            im = PIL.Image.fromarray(numpy.uint8(l2_feature_map[:, :, 0]))
            im.save("conv2_filter1.png")
            im = PIL.Image.fromarray(numpy.uint8(l2_feature_map[:, :, 1]))
            im.save("conv2_filter2.png")
            im = PIL.Image.fromarray(numpy.uint8(l2_feature_map[:, :, 2]))
            im.save("conv2_filter3.png")

            l2_feature_map_relu = numpycnn.relu(l2_feature_map)
            im = PIL.Image.fromarray(numpy.uint8(l2_feature_map_relu[:, :, 0]))
            im.save("conv2_relu1.png")
            im = PIL.Image.fromarray(numpy.uint8(l2_feature_map_relu[:, :, 1]))
            im.save("conv2_relu2.png")
            im = PIL.Image.fromarray(numpy.uint8(l2_feature_map_relu[:, :, 2]))
            im.save("conv2_relu3.png")

            l2_feature_map_relu_pool = numpycnn.pooling(
                l2_feature_map_relu, 2, 2)
            im = PIL.Image.fromarray(
                numpy.uint8(l2_feature_map_relu_pool[:, :, 0]))
            im.save("conv2_relu_pool1.png")
            im = PIL.Image.fromarray(
                numpy.uint8(l2_feature_map_relu_pool[:, :, 1]))
            im.save("conv2_relu_pool2.png")
            im = PIL.Image.fromarray(
                numpy.uint8(l2_feature_map_relu_pool[:, :, 2]))
            im.save("conv2_relu_pool3.png")
            return l2_feature_map_relu_pool

        elif layer == 0:  #0 corresponds to layer 3
            #**Working with conv layer 3**
            l3_filter = numpy.random.rand(1, 7, 7, numpy_img.shape[-1])
            l3_feature_map = numpycnn.conv(numpy_img, l3_filter)
            im = PIL.Image.fromarray(numpy.uint8(l3_feature_map[:, :, 0]))
            im.save("conv3_filter1.png")
            l3_feature_map_relu = numpycnn.relu(l3_feature_map)
            im = PIL.Image.fromarray(numpy.uint8(l3_feature_map_relu[:, :, 0]))
            im.save("conv3_relu1.png")
            l3_feature_map_relu_pool = numpycnn.pooling(
                l3_feature_map_relu, 2, 2)
            im = PIL.Image.fromarray(
                numpy.uint8(l3_feature_map_relu_pool[:, :, 0]))
            im.save("conv3_relu_pool1.png")

            return l3_feature_map_relu_pool
Exemple #4
0
# Converting the image into gray.
img = color.rgb2gray(img)

# First conv layer
# l1_filter = numpy.random.rand(2,7,7)*20 # Preparing the filters randomly.
l1_filter = numpy.zeros((2, 3, 3))
l1_filter[0, :, :] = numpy.array([[[-1, 0, 1], [-1, 0, 1], [-1, 0, 1]]])
l1_filter[1, :, :] = numpy.array([[[1, 1, 1], [0, 0, 0], [-1, -1, -1]]])

print("\n**Working with conv layer 1**")
l1_feature_map = numpycnn.conv(img, l1_filter)
print("\n**ReLU**")
l1_feature_map_relu = numpycnn.relu(l1_feature_map)
print("\n**Pooling**")
l1_feature_map_relu_pool = numpycnn.pooling(l1_feature_map_relu, 2, 2)
print("**End of conv layer 1**\n")

# Second conv layer
l2_filter = numpy.random.rand(3, 5, 5, l1_feature_map_relu_pool.shape[-1])
print("\n**Working with conv layer 2**")
l2_feature_map = numpycnn.conv(l1_feature_map_relu_pool, l2_filter)
print("\n**ReLU**")
l2_feature_map_relu = numpycnn.relu(l2_feature_map)
print("\n**Pooling**")
l2_feature_map_relu_pool = numpycnn.pooling(l2_feature_map_relu, 2, 2)
print("**End of conv layer 2**\n")

# Third conv layer
l3_filter = numpy.random.rand(1, 7, 7, l2_feature_map_relu_pool.shape[-1])
print("\n**Working with conv layer 3**")
    def cnn_example(self, numpy_img, layer=1):
        img1 = self.ids.img1
        img2 = self.ids.img2
        img3 = self.ids.img3
        img4 = self.ids.img4
        img5 = self.ids.img5
        img6 = self.ids.img6
        img7 = self.ids.img7
        img8 = self.ids.img8
        img9 = self.ids.img9

        lbl1 = self.ids.lbl1
        lbl2 = self.ids.lbl2
        lbl3 = self.ids.lbl3
        lbl4 = self.ids.lbl4
        lbl5 = self.ids.lbl5
        lbl6 = self.ids.lbl6
        lbl7 = self.ids.lbl7
        lbl8 = self.ids.lbl8
        lbl9 = self.ids.lbl9

        if layer == 1:
            #**Working with conv layer 1**
            l1_filter = numpy.zeros((2, 3, 3))
            l1_filter[0, :, :] = numpy.array([[[-1, 0, 1], [-1, 0, 1],
                                               [-1, 0, 1]]])
            l1_filter[1, :, :] = numpy.array([[[1, 1, 1], [0, 0, 0],
                                               [-1, -1, -1]]])

            l1_feature_map = numpycnn.conv(numpy_img, l1_filter)
            im = PIL.Image.fromarray(numpy.uint8(l1_feature_map[:, :, 0]))
            im.save("conv1_filter1.png")
            lbl2.text = "L1Map1"
            img2.source = "conv1_filter1.png"
            img2.reload()

            im = PIL.Image.fromarray(numpy.uint8(l1_feature_map[:, :, 1]))
            im.save("conv1_filter2.png")
            lbl3.text = "L1Map2"
            img3.source = "conv1_filter2.png"
            img3.reload()

            l1_feature_map_relu = numpycnn.relu(l1_feature_map)
            im = PIL.Image.fromarray(numpy.uint8(l1_feature_map[:, :, 0]))
            im.save("conv1_relu1.png")
            lbl4.text = "L1Map1ReLU"
            img4.source = "conv1_relu1.png"
            img4.reload()

            im = PIL.Image.fromarray(numpy.uint8(l1_feature_map[:, :, 1]))
            im.save("conv1_relu2.png")
            lbl5.text = "L1Map2ReLU"
            img5.source = "conv1_relu2.png"
            img5.reload()

            l1_feature_map_relu_pool = numpycnn.pooling(
                l1_feature_map_relu, 2, 2)
            im = PIL.Image.fromarray(
                numpy.uint8(l1_feature_map_relu_pool[:, :, 0]))
            im.save("conv1_relu_pool1.png")
            lbl6.text = "L1Map1ReLUPool"
            img6.source = "conv1_relu_pool1.png"
            img6.reload()

            im = PIL.Image.fromarray(
                numpy.uint8(l1_feature_map_relu_pool[:, :, 1]))
            im.save("conv1_relu_pool2.png")
            lbl7.text = "L1Map2ReLUPool"
            img7.source = "conv1_relu_pool2.png"
            img7.reload()

            return l1_feature_map_relu_pool

        elif layer == 2:
            #**Working with conv layer 2**
            l2_filter = numpy.random.rand(3, 5, 5, numpy_img.shape[-1])
            l2_feature_map = numpycnn.conv(numpy_img, l2_filter)
            im = PIL.Image.fromarray(numpy.uint8(l2_feature_map[:, :, 0]))
            im.save("conv2_filter1.png")
            lbl1.text = "L2Map1"
            img1.source = "conv2_filter1.png"
            img1.reload()
            im = PIL.Image.fromarray(numpy.uint8(l2_feature_map[:, :, 1]))
            im.save("conv2_filter2.png")
            lbl2.text = "L2Map2"
            img2.source = "conv2_filter2.png"
            img2.reload()
            im = PIL.Image.fromarray(numpy.uint8(l2_feature_map[:, :, 2]))
            im.save("conv2_filter3.png")
            lbl3.text = "L2Map3"
            img3.source = "conv2_filter3.png"
            img3.reload()

            l2_feature_map_relu = numpycnn.relu(l2_feature_map)
            im = PIL.Image.fromarray(numpy.uint8(l2_feature_map_relu[:, :, 0]))
            im.save("conv2_relu1.png")
            lbl4.text = "L2Map1ReLU"
            img4.source = "conv2_relu1.png"
            img4.reload()
            im = PIL.Image.fromarray(numpy.uint8(l2_feature_map_relu[:, :, 1]))
            im.save("conv2_relu2.png")
            lbl5.text = "L2Map3ReLU"
            img5.source = "conv2_relu2.png"
            img5.reload()
            im = PIL.Image.fromarray(numpy.uint8(l2_feature_map_relu[:, :, 2]))
            im.save("conv2_relu3.png")
            lbl6.text = "L2Map3ReLU"
            img6.source = "conv2_relu3.png"
            img6.reload()

            l2_feature_map_relu_pool = numpycnn.pooling(
                l2_feature_map_relu, 2, 2)
            im = PIL.Image.fromarray(
                numpy.uint8(l2_feature_map_relu_pool[:, :, 0]))
            im.save("conv2_relu_pool1.png")
            lbl7.text = "L2Map1ReLU"
            img7.source = "conv2_relu_pool1.png"
            img7.reload()
            im = PIL.Image.fromarray(
                numpy.uint8(l2_feature_map_relu_pool[:, :, 1]))
            im.save("conv2_relu_pool2.png")
            lbl8.text = "L2Map2ReLU"
            img8.source = "conv2_relu_pool2.png"
            img8.reload()
            im = PIL.Image.fromarray(
                numpy.uint8(l2_feature_map_relu_pool[:, :, 2]))
            im.save("conv2_relu_pool3.png")
            lbl9.text = "L2Map3ReLU"
            img9.source = "conv2_relu_pool3.png"
            img9.reload()
            return l2_feature_map_relu_pool

        elif layer == 3:
            lbl1.text = "Original"
            img1.source = "input_image.jpg"
            img1.reload()

            #**Working with conv layer 3**
            l3_filter = numpy.random.rand(1, 7, 7, numpy_img.shape[-1])
            l3_feature_map = numpycnn.conv(numpy_img, l3_filter)
            im = PIL.Image.fromarray(numpy.uint8(l3_feature_map[:, :, 0]))
            im.save("conv3_filter1.png")
            lbl2.text = "L3Map1"
            img2.source = "conv3_filter1.png"
            img2.reload()
            l3_feature_map_relu = numpycnn.relu(l3_feature_map)
            im = PIL.Image.fromarray(numpy.uint8(l3_feature_map_relu[:, :, 0]))
            im.save("conv3_relu1.png")
            lbl3.text = "L3Map1ReLU"
            img3.source = "conv3_relu1.png"
            img3.reload()
            l3_feature_map_relu_pool = numpycnn.pooling(
                l3_feature_map_relu, 2, 2)
            im = PIL.Image.fromarray(
                numpy.uint8(l3_feature_map_relu_pool[:, :, 0]))
            im.save("conv3_relu_pool1.png")
            lbl4.text = "L3Map1ReLUPool"
            img4.source = "conv3_relu_pool1.png"
            img4.reload()

            img5.source = ""
            img5.reload()
            img6.source = ""
            img6.reload()
            img7.source = ""
            img7.reload()
            img8.source = ""
            img8.reload()
            img9.source = ""
            img9.reload()

            lbl5.text = ""
            lbl6.text = ""
            lbl7.text = ""
            lbl8.text = ""
            lbl9.text = ""

            return l3_feature_map_relu_pool