demo / app.py
Ammar971's picture
Update app.py
1dc20ae
import tensorrt
import tensorflow as tf
from tensorflow import keras
from keras import layers
from keras import activations
from keras.datasets import mnist
from keras.utils import to_categorical
from keras.models import Sequential
import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import confusion_matrix
import pandas as pd
import gradio as gr
from gradio import Interface
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import datasets, layers, models
import numpy as np
import pandas as pd
import matplotlib.image as mpimg
X_train = pd.read_csv("csvTrainImages 60k x 784.csv")
y_train = pd.read_csv("csvTrainLabel 60k x 1.csv")
X_test = pd.read_csv("csvTestImages 10k x 784.csv")
y_test = pd.read_csv("csvTestLabel 10k x 1.csv")
print('X_train shape', X_train.shape)
print('y_train shape', y_train.shape)
print('X_test shape', X_test.shape)
print('y_test shape', y_test.shape)
X_train /= 255
X_test /= 255
X_train = X_train.values.reshape(-1,28,28,1)
X_test = X_test.values.reshape(-1,28,28,1)
X_train = X_train.astype('float32')
X_test = X_test.astype('float32')
print("Training matrix shape", X_train.shape)
print("Testing matrix shape", X_test.shape)
nb_classes = 10
Y_train = to_categorical(y_train, nb_classes)
Y_test = to_categorical(y_test, nb_classes)
print(nb_classes)
print(Y_train.shape)
print(Y_test.shape)
import sklearn
from sklearn.model_selection import train_test_split
X_train, X_val, Y_train, Y_val = train_test_split(X_train, Y_train, test_size = 0.1, random_state=4)
print(X_train.shape)
print(Y_train.shape)
print(X_val.shape)
print(Y_val.shape)
#Creating CNN model
model = Sequential()
model.add(layers.Conv2D(filters = 80, kernel_size = (5,5),padding = 'Same', activation ='relu', input_shape = (28,28,1)))
model.add(layers.MaxPool2D(pool_size=(2,2)))
model.add(layers.Dropout(0.25))
model.add(layers.Conv2D(filters = 64, kernel_size = (5,5),padding = 'Same', activation ='relu'))
model.add(layers.MaxPool2D(pool_size=(2,2)))
model.add(layers.Dropout(0.25))
model.add(layers.Flatten())
model.add(layers.Dense(128, activation = "relu"))
model.add(layers.Dropout(0.25))
model.add(layers.Dense(10, activation = "softmax"))
model.summary()
from tensorflow.keras.optimizers import SGD
optimizer = SGD(learning_rate=0.001, momentum=0.30)
model.compile(optimizer = optimizer , loss = "categorical_crossentropy", metrics=["accuracy"])
history = model.fit( X_train,Y_train, batch_size=64, epochs = 10, validation_data = (X_val, Y_val), verbose = 1)
def predict_image(img):
img_3d = img.reshape(-1, 28,28)
img_scaled = img_3d/255
prediction = model.predict(img_scaled)
pred = np.argmax(prediction)
return pred.item()
sp = gr.Sketchpad(brush_radius=1.0, shape=(28,28), )
iface = gr.Interface(predict_image, inputs=sp, outputs='label', title='Arabic Numbers Recognition', description='Draw a number')
iface.launch()