import tensorflow as tf from tensorflow import keras from tensorflow.keras import Sequential from tensorflow.keras.layers import Dense, Flatten from tensorflow.keras import layers import matplotlib.pyplot as plt import gradio as gr import numpy as np import pandas as pd from PIL import Image as im import PIL #%matplotlib inline num_classes = 10 input_shape = (28, 28, 1) objt=tf.keras.datasets.mnist (X_train, y_train), (X_test,y_test)=objt.load_data() # X_train = X_train.astype("float32") / 255 # X_test = X_test.astype("float32") / 255 # # Make sure images have shape (28, 28, 1) # X_train = np.expand_dims(X_train, -1) # X_test = np.expand_dims(X_test, -1) # print("x_train shape:", X_train.shape) # print(X_train.shape[0], "train samples") # print(X_test.shape[0], "test samples") # # convert class vectors to binary class matrices # y_train = keras.utils.to_categorical(y_train, num_classes) # y_test = keras.utils.to_categorical(y_test, num_classes) # X_new=np.concatenate((X_train, X_test)) # y_new=np.concatenate((y_train, y_test)) # print(X_train.shape) # print(X_new.shape) # print(y_new.shape) # print(y_train) # model = keras.Sequential( # [ # keras.Input(shape=input_shape), # layers.Conv2D(32, kernel_size=(3, 3), activation="relu"), # layers.MaxPooling2D(pool_size=(2, 2)), # layers.Conv2D(64, kernel_size=(3, 3), activation="relu"), # layers.MaxPooling2D(pool_size=(2, 2)), # layers.Flatten(), # layers.Dropout(0.5), # layers.Dense(num_classes, activation="softmax"), # ] # ) # model.summary() # batch_size = 128 # epochs = 15 # model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=["accuracy"]) # model.fit(X_new, y_new, batch_size=batch_size, epochs=epochs, validation_split=0.1) # model.save("keras_digit_test_include.h5") # score = model.evaluate(X_test, y_test, verbose=0) # print("Test loss:", score[0]) # print("Test accuracy:", score[1]) # loaded_model = keras.models.load_model('keras_digit_accurate.h5') # score = loaded_model.evaluate(X_test, y_test, verbose=0) # print("Test loss:", score[0]) # print("Test accuracy:", score[1]) #................................................................................................ # for i in range(9): # plt.subplot(330+1+i) # plt.imshow(X_train[i]) # plt.show() # X_train=X_train/255.0 # X_test=X_test/255.0 # model=tf.keras.models.Sequential([Flatten(input_shape=(28,28)), # Dense(650,activation='relu'), # Dense(450,activation='relu'), # Dense(250,activation='relu'), # Dense(150,activation='relu'), # Dense(10,activation=tf.nn.softmax)]) # model.compile(optimizer='adam', # loss='sparse_categorical_crossentropy', # metrics=['accuracy']) # model.fit(X_train,y_train, epochs=10) # model.save("keras_digit_temp.h5") # test=X_test[0].reshape(-1,28,28) # predicted=model.predict(test) # print(predicted) #count=0 def predict_digit(img): if img is not None: loaded_model = keras.models.load_model('keras_digit_test_include.h5') #img_data = im.fromarray(img) #img_data.save(f"image1.jpg") #count=count+1 print(img) img_3d=img['background'].reshape(-1,28,28) print(img_3d) img_resized=img/255.0 pred_prob=loaded_model.predict(img_resized) pred_prob=pred_prob*100 print((pred_prob)) simple = pd.DataFrame( { "a": ["0", "1", "2", "3", "4", "5", "6", "7", "8","9"], "b": pred_prob[0], } ) predicted_val=np.argmax(pred_prob) return int(predicted_val), gr.BarPlot.update( simple, x="a", y="b", x_title="Digits", y_title="Identification Probabilities", title="Identification Probability", tooltip=["a", "b"], vertical=False, y_lim=[0, 100], ) else: simple_empty = pd.DataFrame( { "a": ["0", "1", "2", "3", "4", "5", "6", "7", "8","9"], "b": [0,0,0,0,0,0,0,0,0,0], } ) return " ", gr.BarPlot.update( simple_empty, x="a", y="b", x_title="Digits", y_title="Identification Probabilities", title="Identification Probability", tooltip=["a", "b"], vertical=False, y_lim=[0, 100], ) # iface=gr.Interface(prdict_digit, inputs='sketchpad', outputs=['label', gr.Slider(0,100, label='Probably 0'), gr.Slider(0,100, label='Probably 1')] ).launch() # iface.launch(debug='true') css=''' #title_head{ text-align: center; text-weight: bold; text-size:30px; } #name_head{ text-align: center; } ''' with gr.Blocks(css=css) as demo: with gr.Row(): with gr.Column(): gr.Markdown("