Spaces:
Runtime error
Runtime error
| import numpy as np | |
| import matplotlib.pyplot as plt | |
| import cv2 | |
| import os | |
| import tensorflow as tf | |
| from PIL import Image | |
| from sklearn.model_selection import train_test_split | |
| from sklearn.metrics import classification_report | |
| from tqdm import tqdm | |
| image_dir=r"C:\Users\shahi\Desktop\My Projects\DeepPredictorHub\CNN\tumordata" | |
| no_tumor_images=os.listdir(r"C:\Users\shahi\Desktop\My Projects\DeepPredictorHub\CNN\tumordata\no") | |
| yes_tumor_images=os.listdir(r"C:\Users\shahi\Desktop\My Projects\DeepPredictorHub\CNN\tumordata\yes") | |
| dataset=[] | |
| label=[] | |
| img_siz=(128,128) | |
| for i , image_name in tqdm(enumerate(no_tumor_images),desc="No Tumor"): | |
| if(image_name.split('.')[1]=='jpg'): | |
| image=cv2.imread(image_dir+'/no/'+image_name) | |
| image=Image.fromarray(image,'RGB') | |
| image=image.resize(img_siz) | |
| dataset.append(np.array(image)) | |
| label.append(0) | |
| for i ,image_name in tqdm(enumerate(yes_tumor_images),desc="Tumor"): | |
| if(image_name.split('.')[1]=='jpg'): | |
| image=cv2.imread(image_dir+'/yes/'+image_name) | |
| image=Image.fromarray(image,'RGB') | |
| image=image.resize(img_siz) | |
| dataset.append(np.array(image)) | |
| label.append(1) | |
| dataset=np.array(dataset) | |
| label = np.array(label) | |
| print("--------------------------------------\n") | |
| print('Dataset Length: ',len(dataset)) | |
| print('Label Length: ',len(label)) | |
| print("--------------------------------------\n") | |
| print("--------------------------------------\n") | |
| print("Train-Test Split") | |
| x_train,x_test,y_train,y_test=train_test_split(dataset,label,test_size=0.2,random_state=42) | |
| print("--------------------------------------\n") | |
| print("--------------------------------------\n") | |
| print("Normalaising the Dataset. \n") | |
| # x_train=x_train.astype('float')/255 | |
| # x_test=x_test.astype('float')/255 | |
| # Same step above is implemented using tensorflow functions. | |
| x_train=tf.keras.utils.normalize(x_train,axis=1) | |
| x_test=tf.keras.utils.normalize(x_test,axis=1) | |
| print("--------------------------------------\n") | |
| model=tf.keras.models.Sequential([ | |
| tf.keras.layers.Conv2D(32,(3,3),activation='relu',input_shape=(128,128,3)), | |
| tf.keras.layers.MaxPooling2D((2,2)), | |
| tf.keras.layers.Flatten(), | |
| tf.keras.layers.Dense(256,activation='relu'), | |
| tf.keras.layers.Dropout(0.5), | |
| tf.keras.layers.Dense(512,activation='relu'), | |
| tf.keras.layers.Dense(1,activation='sigmoid') | |
| ]) | |
| print("--------------------------------------\n") | |
| model.summary() | |
| print("--------------------------------------\n") | |
| model.compile(optimizer='adam', | |
| loss='binary_crossentropy', | |
| metrics=['accuracy']) | |
| print("--------------------------------------\n") | |
| print("Training Started.\n") | |
| history=model.fit(x_train,y_train,epochs=20,batch_size =128,validation_split=0.1) | |
| print("Training Finished.\n") | |
| print("--------------------------------------\n") | |
| print("--------------------------------------\n") | |
| print("Model Evalutaion Phase.\n") | |
| loss,accuracy=model.evaluate(x_test,y_test) | |
| print(f'Accuracy: {round(accuracy*100,2)}') | |
| print("--------------------------------------\n") | |
| y_pred=model.predict(x_test) | |
| y_pred = (y_pred > 0.5).astype(int) | |
| print('classification Report\n',classification_report(y_test,y_pred)) | |
| print("--------------------------------------\n") | |
| def make_prediction(img,model): | |
| img=cv2.imread(img) | |
| img=Image.fromarray(img) | |
| img=img.resize((128,128)) | |
| img=np.array(img) | |
| input_img = np.expand_dims(img, axis=0) | |
| res = model.predict(input_img) | |
| if res: | |
| print("Tumor Detected") | |
| else: | |
| print("No Tumor") | |
| model.save(r'C:\Users\shahi\Desktop\My Projects\DeepPredictorHub\CN.keras') |