{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import numpy as np \nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport os\nimport glob\nimport tensorflow as tf \nimport cv2\nfrom tensorflow.keras import Sequential\nfrom tensorflow.keras.layers import Conv2D, Flatten, Dense,GlobalAveragePooling2D,MaxPooling2D\nfrom tensorflow.keras.models import Model\nfrom tensorflow.keras.layers import Dense, Input, Conv2D, Flatten, MaxPooling2D, Activation,Dropout,BatchNormalization\nfrom tensorflow.keras.preprocessing.image import ImageDataGenerator\n\n\nfrom tensorflow.keras.applications.densenet import DenseNet121\nfrom tensorflow.keras.models import Sequential, Model\nfrom tensorflow.keras import layers, optimizers\n\n\n\n\nimport tensorflow \n\n\nimport pandas as pd\n\nimport numpy as np\n\nimport os\n\nimport keras\n\nimport random\n\nimport cv2\n\nimport math\n\nimport seaborn as sns\n\n\nfrom sklearn.metrics import confusion_matrix\n\nfrom sklearn.preprocessing import LabelBinarizer\n\nfrom sklearn.model_selection import train_test_split\n\n\nimport matplotlib.pyplot as plt\n\n\nfrom tensorflow.keras.layers import Dense,GlobalAveragePooling2D,Convolution2D,BatchNormalization\n\nfrom tensorflow.keras.layers import Flatten,MaxPooling2D,Dropout\n\n\nfrom tensorflow.keras.applications import DenseNet121\n\nfrom tensorflow.keras.applications.densenet import preprocess_input\n\n\nfrom tensorflow.keras.preprocessing import image\n\nfrom tensorflow.keras.preprocessing.image import ImageDataGenerator,img_to_array\n\n\nfrom tensorflow.keras.models import Model\n\n\nfrom tensorflow.keras.optimizers import Adam\n\n\nfrom tensorflow.keras.callbacks import ModelCheckpoint, ReduceLROnPlateau,EarlyStopping\n\n\nimport warnings\n\nwarnings.filterwarnings(\"ignore\")","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-05-15T04:59:44.961012Z","iopub.execute_input":"2022-05-15T04:59:44.961711Z","iopub.status.idle":"2022-05-15T04:59:51.777021Z","shell.execute_reply.started":"2022-05-15T04:59:44.961623Z","shell.execute_reply":"2022-05-15T04:59:51.77627Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from tensorflow.keras.applications import Xception\nfrom tensorflow.keras.applications import DenseNet121, DenseNet169, DenseNet201\nfrom tensorflow.keras.applications import ResNet50V2, ResNet101V2, ResNet152V2\nfrom tensorflow.keras.applications import InceptionV3\nfrom tensorflow.keras.applications import InceptionResNetV2","metadata":{"execution":{"iopub.status.busy":"2022-05-15T04:59:51.778562Z","iopub.execute_input":"2022-05-15T04:59:51.778805Z","iopub.status.idle":"2022-05-15T04:59:51.78581Z","shell.execute_reply.started":"2022-05-15T04:59:51.778771Z","shell.execute_reply":"2022-05-15T04:59:51.782983Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Detect hardware, return appropriate distribution strategy\ntry:\n    tpu = tf.distribute.cluster_resolver.TPUClusterResolver()  # TPU detection. No parameters necessary if TPU_NAME environment variable is set. On Kaggle this is always the case.\n    print('Running on TPU ', tpu.master())\nexcept ValueError:\n    tpu = None\n\nif tpu:\n    tf.config.experimental_connect_to_cluster(tpu)\n    tf.tpu.experimental.initialize_tpu_system(tpu)\n    strategy = tf.distribute.experimental.TPUStrategy(tpu)\nelse:\n    strategy = tf.distribute.get_strategy() # default distribution strategy in Tensorflow. Works on CPU and single GPU.\n\nprint(\"REPLICAS: \", strategy.num_replicas_in_sync)","metadata":{"execution":{"iopub.status.busy":"2022-05-15T04:59:51.788369Z","iopub.execute_input":"2022-05-15T04:59:51.78973Z","iopub.status.idle":"2022-05-15T04:59:51.810353Z","shell.execute_reply.started":"2022-05-15T04:59:51.789686Z","shell.execute_reply":"2022-05-15T04:59:51.809608Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"dataset_dir='../input/total-data-final-zip/Total_data_final'\n","metadata":{"execution":{"iopub.status.busy":"2022-05-15T04:59:51.812215Z","iopub.execute_input":"2022-05-15T04:59:51.812609Z","iopub.status.idle":"2022-05-15T04:59:51.816232Z","shell.execute_reply.started":"2022-05-15T04:59:51.812574Z","shell.execute_reply":"2022-05-15T04:59:51.81544Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"number_of_class=len(os.listdir(dataset_dir))\nnumber_of_class","metadata":{"execution":{"iopub.status.busy":"2022-05-15T04:59:51.817581Z","iopub.execute_input":"2022-05-15T04:59:51.818045Z","iopub.status.idle":"2022-05-15T04:59:51.989546Z","shell.execute_reply.started":"2022-05-15T04:59:51.818006Z","shell.execute_reply":"2022-05-15T04:59:51.988829Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for i in range(1,number_of_class+1):\n    #print(len(glob.glob(dataset_dir+'/'+str(i)+'/*')))\n    if len(glob.glob(dataset_dir+'/'+str(i)+'/*'))<80:\n        print(len(glob.glob(dataset_dir+'/'+str(i)+'/*')),i)","metadata":{"execution":{"iopub.status.busy":"2022-05-15T04:59:51.990917Z","iopub.execute_input":"2022-05-15T04:59:51.99119Z","iopub.status.idle":"2022-05-15T05:00:16.879425Z","shell.execute_reply.started":"2022-05-15T04:59:51.991154Z","shell.execute_reply":"2022-05-15T05:00:16.878667Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"img_height,img_width=(100,100)\n\n\ndef preprocessing_function(image):\n    ret,thresh1 = cv2.threshold(image,125,255,cv2.THRESH_BINARY)\n    kernel = np.ones((3,3), np.uint8)\n    thresh1=cv2.dilate(thresh1,kernel,iterations=1)\n    return thresh1\n    \n    \n\n\n\n\ntrain_datagen=tf.keras.preprocessing.image.ImageDataGenerator(\n\n    rescale=1./255,\n\n\n    #zoom_range=0.1,\n   \n    fill_mode='nearest',\n    cval=0.0,\n    rotation_range=5,\n    #width_shift_range=0.1,\n    #height_shift_range=0.01,\n\n   \n    #preprocessing_function=preprocessing_function,\n    data_format=None,\n    validation_split=0.1,\n\n)\ntest_datagen=tf.keras.preprocessing.image.ImageDataGenerator(\n\n    rescale=1./255)\ntrain_generator = train_datagen.flow_from_directory(\n        dataset_dir,\n        target_size=(img_height,img_width),\n        batch_size=64,\n        class_mode='categorical',\n        subset='training')\nvalidation_generator = train_datagen.flow_from_directory(\n        dataset_dir,\n        target_size=(img_height,img_width),\n        batch_size=64,\n        class_mode='categorical',\n        subset='validation')\n\n\ntest_data_dir='../input/test-data-set/test_folder_'\nnumber_of_class=len(os.listdir(test_data_dir))\nnumber_of_class\n\ntest_data = test_datagen.flow_from_directory(\n        test_data_dir,\n        target_size=(img_height,img_width),\n        batch_size=64,\n        class_mode='categorical'\n        )","metadata":{"execution":{"iopub.status.busy":"2022-05-15T05:00:16.881008Z","iopub.execute_input":"2022-05-15T05:00:16.881494Z","iopub.status.idle":"2022-05-15T05:00:26.622121Z","shell.execute_reply.started":"2022-05-15T05:00:16.881455Z","shell.execute_reply":"2022-05-15T05:00:26.621368Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# LeNet-5 model\nfrom tensorflow.keras.layers import BatchNormalization\nclass LeNet(Sequential):\n    def __init__(self, input_shape=(100,100,3), nb_classes=583):\n        super().__init__()\n\n        self.add(Conv2D(16, kernel_size=(5, 5), strides=(1, 1), activation='relu', input_shape=input_shape, padding=\"same\"))\n        self.add(BatchNormalization())\n        \n        self.add(tf.keras.layers.AveragePooling2D (pool_size=(2, 2), strides=(2, 2), padding='valid'))\n        self.add(Conv2D(32, kernel_size=(5, 5), strides=(1, 1), activation='relu', padding='valid'))\n        self.add(BatchNormalization())\n        \n        self.add(tf.keras.layers.AveragePooling2D (pool_size=(2, 2), strides=(2, 2), padding='valid'))\n        self.add(Flatten())\n        self.add(Dense(2915, activation='relu'))\n        #self.add(tf.keras.layers.Dropout(0.2))\n        self.add(BatchNormalization())\n        self.add(Dense(2915, activation='relu'))\n        self.add(tf.keras.layers.Dropout(0.5))\n        self.add(BatchNormalization())\n        self.add(Dense(nb_classes, activation='softmax'))\n\n        self.compile(optimizer='rmsprop',\n                    loss='categorical_crossentropy',\n                    metrics=['accuracy'])\nmodel=LeNet()\nmodel.summary()\n\nfrom tensorflow.keras.callbacks import ModelCheckpoint,EarlyStopping,ReduceLROnPlateau\ncheckpoint = ModelCheckpoint(\"proposed.h5\",monitor=\"val_acc\",verbose=1,save_best_only=True,\n                             save_weights_only=False,period=1)\nreduce_lr = ReduceLROnPlateau(monitor='loss', factor=0.1, patience=1, verbose=1, mode='auto', cooldown=0, min_lr=0)\nearlystop = EarlyStopping(monitor='val_acc',mode='auto',verbose=1,baseline=.99,patience=0)\n\n#model.compile(optimizer = tf.keras.optimizers.RMSprop(lr=0.0001), loss = 'sparse_categorical_crossentropy',metrics = ['acc'])\nhistory = model.fit(\n    train_generator,\n    #steps_per_epoch = train_generator.samples // 64,\n    batch_size=64,\n    validation_data = validation_generator, \n    #validation_steps = validation_generator.samples // 64,\n    epochs = 20,\n                    verbose=1,callbacks=[checkpoint,reduce_lr])","metadata":{"execution":{"iopub.status.busy":"2022-05-15T05:00:26.623437Z","iopub.execute_input":"2022-05-15T05:00:26.623843Z","iopub.status.idle":"2022-05-15T05:00:41.895858Z","shell.execute_reply.started":"2022-05-15T05:00:26.623804Z","shell.execute_reply":"2022-05-15T05:00:41.892306Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"result=model.evaluate(test_data,batch_size=64)\nresult","metadata":{}},{"cell_type":"code","source":"plt.figure(figsize=(12,10))\nplt.plot(loss)\nplt.plot(val_loss)\nplt.xlabel('number of epoch')\nplt.ylabel('accuracy')\nplt.title('train and validation loss ')\nplt.legend(['train_loss','validation_loss'])","metadata":{"execution":{"iopub.status.busy":"2022-05-15T05:00:41.899807Z","iopub.status.idle":"2022-05-15T05:00:41.900531Z","shell.execute_reply.started":"2022-05-15T05:00:41.900277Z","shell.execute_reply":"2022-05-15T05:00:41.900305Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"acc=history.history['accuracy']\n\nval_acc=history.history['val_accuracy']\nloss=history.history['loss']\nval_loss=history.history['val_loss']","metadata":{"execution":{"iopub.status.busy":"2022-05-15T05:00:41.904361Z","iopub.status.idle":"2022-05-15T05:00:41.908162Z","shell.execute_reply.started":"2022-05-15T05:00:41.907876Z","shell.execute_reply":"2022-05-15T05:00:41.90791Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure()\nplt.plot(acc)\nplt.plot(val_acc)\nplt.title(' ptoposed train and validation  accuracy ')\nplt.legend(['train','validation'])\nplt.savefig('proposed acc.png')","metadata":{"execution":{"iopub.status.busy":"2022-05-15T05:00:41.909214Z","iopub.status.idle":"2022-05-15T05:00:41.909992Z","shell.execute_reply.started":"2022-05-15T05:00:41.909763Z","shell.execute_reply":"2022-05-15T05:00:41.909785Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize=(12,10))\nplt.plot(acc)\nplt.plot(val_acc)\nplt.xlabel('number of epoch')\nplt.ylabel('accuracy')\nplt.title('train and validation accuracy  ')\nplt.legend(['train_accuracy ','validation_accuracy'])\nplt.savefig('proposed  acc.png')","metadata":{"execution":{"iopub.status.busy":"2022-05-15T05:00:41.910976Z","iopub.status.idle":"2022-05-15T05:00:41.91654Z","shell.execute_reply.started":"2022-05-15T05:00:41.916249Z","shell.execute_reply":"2022-05-15T05:00:41.916282Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize=(12,10))\nplt.plot(loss)\nplt.plot(val_loss)\nplt.xlabel('number of epoch')\nplt.ylabel('loss')\nplt.title('train and validation loss ')\nplt.legend(['train_loss','validation_loss'])\nplt.savefig('proposed loss.png')","metadata":{"execution":{"iopub.status.busy":"2022-05-15T05:00:41.91741Z","iopub.status.idle":"2022-05-15T05:00:41.9178Z","shell.execute_reply.started":"2022-05-15T05:00:41.917579Z","shell.execute_reply":"2022-05-15T05:00:41.917601Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"'''for _ in range(10):\n    img, label = train_generator.next()\n    print(img.shape)   #  (1,256,256,3)\n    plt.imshow(img[0])\n    \n    plt.show()'''","metadata":{"execution":{"iopub.status.busy":"2022-05-15T05:00:41.918679Z","iopub.status.idle":"2022-05-15T05:00:41.919917Z","shell.execute_reply.started":"2022-05-15T05:00:41.919697Z","shell.execute_reply":"2022-05-15T05:00:41.91972Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"dense_weight='../input/densenet-keras/DenseNet-BC-169-32.h5'","metadata":{"execution":{"iopub.status.busy":"2022-05-15T05:00:41.920975Z","iopub.status.idle":"2022-05-15T05:00:41.921519Z","shell.execute_reply.started":"2022-05-15T05:00:41.921278Z","shell.execute_reply":"2022-05-15T05:00:41.921302Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\nvgg =tf.keras.applications.VGG16(weights=\"imagenet\",include_top = False,input_shape=(img_height, img_width,3))\nfor layer in vgg.layers:\n    layer.trainable = False\nfrom tensorflow.keras import Sequential\nfrom tensorflow.keras.layers import Flatten,Dense\nmodel1 = Sequential()\nmodel1.add(vgg)\nmodel1.add(Flatten())\nmodel1.add(Dense(2915,activation='relu'))\nmodel1.add(tf.keras.layers.BatchNormalization())\nmodel1.add(Dense(2915,activation='relu'))\nmodel1.add(tf.keras.layers.BatchNormalization())\nmodel1.add(tf.keras.layers.Dropout(0.5))\nmodel1.add(Dense(583,activation=\"softmax\"))\nfrom tensorflow.keras.callbacks import ModelCheckpoint,EarlyStopping,ReduceLROnPlateau\ncheckpoint = ModelCheckpoint(\"/kaggle/working/vgg16.h5\",monitor=\"val_acc\",verbose=1,save_best_only=True,\n                             save_weights_only=False,period=1)\nreduce_lr = ReduceLROnPlateau(monitor='val_acc', factor=0.1, patience=1, verbose=1, mode='auto', cooldown=0, min_lr=0)\nearlystop = EarlyStopping(monitor='val_acc',mode='auto',verbose=1,baseline=.99,patience=0)\n\n\n\n\nmodel1.compile(optimizer='rmsprop'\n,loss='categorical_crossentropy'\n,metrics=[\"accuracy\"])\n\nhistory1= model1.fit(\n    train_generator,\n    #steps_per_epoch = train_generator.samples // 64,\n    batch_size=64,\n    validation_data = validation_generator, \n    #validation_steps = validation_generator.samples // 64,\n    epochs = 20,\n                    verbose=1,callbacks=[checkpoint,earlystop,reduce_lr])","metadata":{"execution":{"iopub.status.busy":"2022-05-15T05:00:41.922581Z","iopub.status.idle":"2022-05-15T05:00:41.923148Z","shell.execute_reply.started":"2022-05-15T05:00:41.922886Z","shell.execute_reply":"2022-05-15T05:00:41.922911Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"result1=model.evaluate(test_data,batch_size=64)\nresult1","metadata":{}},{"cell_type":"markdown","source":"","metadata":{}},{"cell_type":"code","source":"acc1=history1.history['accuracy']\nloss1=history1.history['loss']\nval_acc1=history1.history['val_accuracy']\nval_loss1=history1.history['val_loss']\n","metadata":{"execution":{"iopub.status.busy":"2022-05-15T05:00:41.928248Z","iopub.status.idle":"2022-05-15T05:00:41.92893Z","shell.execute_reply.started":"2022-05-15T05:00:41.928689Z","shell.execute_reply":"2022-05-15T05:00:41.928716Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize=(12,12))\nplt.plot(acc1)\nplt.plot(val_acc1)\nplt.title('vgg train and validation accuracy')\nplt.xlabel('number of epoch ')\nplt.ylable('accuracy')\nplt.legend([' train acc','val acc'])\nplt.savefig('vgg acc.png')","metadata":{"execution":{"iopub.status.busy":"2022-05-15T05:00:41.930315Z","iopub.status.idle":"2022-05-15T05:00:41.930971Z","shell.execute_reply.started":"2022-05-15T05:00:41.930672Z","shell.execute_reply":"2022-05-15T05:00:41.930699Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize=(12,10))\nplt.plot(loss1)\nplt.plot(val_loss1)\nplt.xlabel('number of epoch')\nplt.ylabel('loss')\nplt.title('vgg train and validation loss ')\nplt.legend(['train_loss','validation_loss'])\nplt.savefig('vgg loss.png')","metadata":{"execution":{"iopub.status.busy":"2022-05-15T05:00:41.932269Z","iopub.status.idle":"2022-05-15T05:00:41.93285Z","shell.execute_reply.started":"2022-05-15T05:00:41.932589Z","shell.execute_reply":"2022-05-15T05:00:41.932626Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize=(12,10))\nplt.plot(acc)\nplt.plot(acc1)\nplt.xlabel('number of epoch')\nplt.ylabel('accuracy')\nplt.title('proposed and vgg accuracy ')\nplt.legend(['proposed model acc','vgg model accuracy])\nplt.savefig('proposed and vgg accuracy.png')\n            ","metadata":{"execution":{"iopub.status.busy":"2022-05-15T05:00:41.933925Z","iopub.status.idle":"2022-05-15T05:00:41.934488Z","shell.execute_reply.started":"2022-05-15T05:00:41.934249Z","shell.execute_reply":"2022-05-15T05:00:41.934276Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize=(12,10))\nplt.plot(loss)\nplt.plot(loss1)\nplt.xlabel('number of epoch')\nplt.ylabel('loss)\nplt.title('proposed and vgg loss')\nplt.legend(['proposed model loss','vgg model loss'])\nplt.savefig('proposed and vgg loss.png')\n            ","metadata":{"execution":{"iopub.status.busy":"2022-05-15T05:00:41.935644Z","iopub.status.idle":"2022-05-15T05:00:41.936316Z","shell.execute_reply.started":"2022-05-15T05:00:41.9361Z","shell.execute_reply":"2022-05-15T05:00:41.936122Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\nvgg =tf.keras.applications.densenet.DenseNet121(weights=\"imagenet\",include_top = False,input_shape=(img_height, img_width,3))\nfor layer in vgg.layers:\n    layer.trainable = False\nfrom tensorflow.keras import Sequential\nfrom tensorflow.keras.layers import Flatten,Dense\nmodel = Sequential()\nmodel.add(vgg)\nmodel.add(Flatten())\nmodel.add(Dense(4096,activation='relu'))\nmodel.add(Dense(4096,activation='relu'))\nmodel.add(tf.keras.layers.Dropout(0.5))\nmodel.add(Dense(583,activation=\"softmax\"))\nfrom tensorflow.keras.callbacks import ModelCheckpoint,EarlyStopping,ReduceLROnPlateau\ncheckpoint = ModelCheckpoint(\"Densenet.h5\",monitor=\"val_acc\",verbose=1,save_best_only=True,\n                             save_weights_only=False,period=1)\nreduce_lr = ReduceLROnPlateau(monitor='loss', factor=0.1, patience=1, verbose=1, mode='auto', cooldown=0, min_lr=0)\nearlystop = EarlyStopping(monitor='val_acc',mode='auto',verbose=1,baseline=.99,patience=0)\n\n\n\n\nmodel.compile(optimizer='rmsprop'\n,loss='categorical_crossentropy'\n,metrics=[\"accuracy\"])\n\nhistory2 = model.fit(\n    train_generator,\n    #steps_per_epoch = train_generator.samples // 64,\n    batch_size=64,\n    validation_data = validation_generator, \n    #validation_steps = validation_generator.samples // 64,\n    epochs = 20,\n                    verbose=1,callbacks=[checkpoint,earlystop,reduce_lr])","metadata":{"execution":{"iopub.status.busy":"2022-05-15T05:00:41.937259Z","iopub.status.idle":"2022-05-15T05:00:41.938189Z","shell.execute_reply.started":"2022-05-15T05:00:41.937918Z","shell.execute_reply":"2022-05-15T05:00:41.937964Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"\nvgg =tf.keras.applications.densenet.DenseNet201(weights=\"imagenet\",include_top = False,input_shape=(img_height, img_width,3))\nfor layer in vgg.layers:\n    layer.trainable = False\nfrom tensorflow.keras import Sequential\nfrom tensorflow.keras.layers import Flatten,Dense\nmodel = Sequential()\nmodel.add(vgg)\nmodel.add(Flatten())\nmodel.add(Dense(4096,activation='relu'))\nmodel.add(Dense(4096,activation='relu'))\nmodel.add(tf.keras.layers.Dropout(0.5))\nmodel.add(Dense(583,activation=\"softmax\"))\nfrom tensorflow.keras.callbacks import ModelCheckpoint,EarlyStopping,ReduceLROnPlateau\ncheckpoint = ModelCheckpoint(\"Densenet201.h5\",monitor=\"val_acc\",verbose=1,save_best_only=True,\n                             save_weights_only=False,period=1)\nreduce_lr = ReduceLROnPlateau(monitor='loss', factor=0.1, patience=1, verbose=1, mode='auto', cooldown=0, min_lr=0)\nearlystop = EarlyStopping(monitor='val_acc',mode='auto',verbose=1,baseline=.99,patience=0)\n\n\n\n\nmodel.compile(optimizer='rmsprop'\n,loss='categorical_crossentropy'\n,metrics=[\"accuracy\"])\n\nhistory3 = model.fit(\n    train_generator,\n    #steps_per_epoch = train_generator.samples // 64,\n    batch_size=64,\n    validation_data = validation_generator, \n    #validation_steps = validation_generator.samples // 64,\n    epochs = 20,\n                    verbose=1,callbacks=[checkpoint,earlystop,reduce_lr])","metadata":{"execution":{"iopub.status.busy":"2022-05-14T06:15:07.691767Z","iopub.status.idle":"2022-05-14T06:15:07.692782Z","shell.execute_reply.started":"2022-05-14T06:15:07.6925Z","shell.execute_reply":"2022-05-14T06:15:07.692541Z"}}},{"cell_type":"markdown","source":"result2=model.evaluate(test_data,batch_size=64)\nresult2","metadata":{}},{"cell_type":"code","source":"vgg =tf.keras.applications.efficientnet.EfficientNetB7(weights=\"imagenet\",include_top = False,input_shape=(img_height, img_width,3))\nfor layer in vgg.layers:\n    layer.trainable = False\nfrom tensorflow.keras import Sequential\nfrom tensorflow.keras.layers import Flatten,Dense\nmodel = Sequential()\nmodel.add(vgg)\nmodel.add(Flatten())\nmodel.add(Dense(4096,activation='relu'))\nmodel.add(Dense(4096,activation='relu'))\nmodel.add(tf.keras.layers.Dropout(0.5))\nmodel.add(Dense(583,activation=\"softmax\"))\nfrom tensorflow.keras.callbacks import ModelCheckpoint,EarlyStopping,ReduceLROnPlateau\ncheckpoint = ModelCheckpoint(\"Densenet201.h5\",monitor=\"val_acc\",verbose=1,save_best_only=True,\n                             save_weights_only=False,period=1)\nreduce_lr = ReduceLROnPlateau(monitor='loss', factor=0.1, patience=1, verbose=1, mode='auto', cooldown=0, min_lr=0)\nearlystop = EarlyStopping(monitor='val_acc',mode='auto',verbose=1,baseline=.99,patience=0)\n\n\n\n\nmodel.compile(optimizer='rmsprop'\n,loss='categorical_crossentropy'\n,metrics=[\"accuracy\"])\n\nhistory4 = model.fit(\n    train_generator,\n    #steps_per_epoch = train_generator.samples // 64,\n    batch_size=64,\n    validation_data = validation_generator, \n    #validation_steps = validation_generator.samples // 64,\n    epochs = 10,\n                    verbose=1,callbacks=[checkpoint,earlystop,reduce_lr])","metadata":{"execution":{"iopub.status.busy":"2022-05-15T05:00:41.939702Z","iopub.status.idle":"2022-05-15T05:00:41.940341Z","shell.execute_reply.started":"2022-05-15T05:00:41.940096Z","shell.execute_reply":"2022-05-15T05:00:41.940136Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"result4=model.evaluate(test_data,batch_size=64)\nresult4","metadata":{}},{"cell_type":"code","source":"vgg =tf.keras.applications.ResNet50(weights=\"imagenet\",include_top = False,input_shape=(img_height, img_width,3))\nfor layer in vgg.layers:\n    layer.trainable = False\nfrom tensorflow.keras import Sequential\nfrom tensorflow.keras.layers import Flatten,Dense\nmodel = Sequential()\nmodel.add(vgg)\nmodel.add(Flatten())\nmodel.add(Dense(4096,activation='relu'))\nmodel.add(Dense(4096,activation='relu'))\nmodel.add(tf.keras.layers.Dropout(0.5))\nmodel.add(Dense(583,activation=\"softmax\"))\nfrom tensorflow.keras.callbacks import ModelCheckpoint,EarlyStopping,ReduceLROnPlateau\ncheckpoint = ModelCheckpoint(\"Densenet201.h5\",monitor=\"val_acc\",verbose=1,save_best_only=True,\n                             save_weights_only=False,period=1)\nreduce_lr = ReduceLROnPlateau(monitor='loss', factor=0.1, patience=1, verbose=1, mode='auto', cooldown=0, min_lr=0)\nearlystop = EarlyStopping(monitor='val_acc',mode='auto',verbose=1,baseline=.99,patience=0)\n\n\n\n\nmodel.compile(optimizer='rmsprop'\n,loss='categorical_crossentropy'\n,metrics=[\"accuracy\"])\n\nhistory5 = model.fit(\n    train_generator,\n    #steps_per_epoch = train_generator.samples // 64,\n    batch_size=64,\n    validation_data = validation_generator, \n    #validation_steps = validation_generator.samples // 64,\n    epochs = 20,\n                    verbose=1,callbacks=[checkpoint,earlystop,reduce_lr])","metadata":{"execution":{"iopub.status.busy":"2022-05-15T05:00:41.941645Z","iopub.status.idle":"2022-05-15T05:00:41.942289Z","shell.execute_reply.started":"2022-05-15T05:00:41.942057Z","shell.execute_reply":"2022-05-15T05:00:41.942082Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"result5=model.evaluate(test_data,batch_size=64)\nresult5","metadata":{}},{"cell_type":"code","source":"from tensorflow.keras.applications.inception_v3 import InceptionV3\ncheckpoint = ModelCheckpoint(\"Densenet201.h5\",monitor=\"val_acc\",verbose=1,save_best_only=True,\n                             save_weights_only=False,period=1)\nreduce_lr = ReduceLROnPlateau(monitor='loss', factor=0.1, patience=1, verbose=1, mode='auto', cooldown=0, min_lr=0)\nearlystop = EarlyStopping(monitor='val_acc',mode='auto',verbose=1,baseline=.99,patience=0)\n\nbase_model = InceptionV3(input_shape = (100, 100, 3), include_top = False, weights = 'imagenet')\n\nfor layer in base_model.layers:\n    layer.trainable = False\nfrom tensorflow.keras.optimizers import RMSprop\n\nx = layers.Flatten()(base_model.output)\nx = layers.Dense(2915, activation='relu')(x)\nx = layers.Dropout(0.2)(x)\nx = layers.Dense(2915, activation='relu')(x)\nx = layers.Dropout(0.2)(x)\n\n# Add a final sigmoid layer with 1 node for classification output\nx = layers.Dense(583, activation='softmax')(x)\n\nmodel = tf.keras.models.Model(base_model.input, x)\n\nmodel.compile(optimizer = RMSprop(lr=0.0001), loss = 'binary_crossentropy', metrics = ['acc'])    \n\ncheckpoint = ModelCheckpoint(\"inception.h5\",monitor=\"val_acc\",verbose=1,save_best_only=True,\n                             save_weights_only=False,period=1)\nreduce_lr = ReduceLROnPlateau(monitor='loss', factor=0.1, patience=1, verbose=1, mode='auto', cooldown=0, min_lr=0)\nearlystop = EarlyStopping(monitor='val_acc',mode='auto',verbose=1,baseline=.99,patience=0)\n\nmodel.compile(optimizer = tf.keras.optimizers.RMSprop(lr=0.001), loss = 'categorical_crossentropy',metrics = ['acc'])\nhistory6 = model.fit(\n    train_generator,\n    #steps_per_epoch = train_generator.samples // 64,\n    batch_size=64,\n    validation_data = validation_generator, \n    #validation_steps = validation_generator.samples // 64,\n    epochs = 20,\n                    verbose=1,callbacks=[checkpoint,reduce_lr])","metadata":{"execution":{"iopub.status.busy":"2022-05-15T05:00:41.943619Z","iopub.status.idle":"2022-05-15T05:00:41.944138Z","shell.execute_reply.started":"2022-05-15T05:00:41.943885Z","shell.execute_reply":"2022-05-15T05:00:41.943909Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"result6=model.evaluate(test_data,batch_size=64)\nresult6","metadata":{}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.summary()","metadata":{"execution":{"iopub.status.busy":"2022-05-15T05:00:41.945428Z","iopub.status.idle":"2022-05-15T05:00:41.946176Z","shell.execute_reply.started":"2022-05-15T05:00:41.945895Z","shell.execute_reply":"2022-05-15T05:00:41.945921Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"new_model = tf.keras.models.load_model('./model.h5')","metadata":{"execution":{"iopub.status.busy":"2022-05-15T05:00:41.947401Z","iopub.status.idle":"2022-05-15T05:00:41.948109Z","shell.execute_reply.started":"2022-05-15T05:00:41.947826Z","shell.execute_reply":"2022-05-15T05:00:41.947853Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.save('/kaggle/working/model.h5')","metadata":{"execution":{"iopub.status.busy":"2022-05-15T05:00:41.949494Z","iopub.status.idle":"2022-05-15T05:00:41.950331Z","shell.execute_reply.started":"2022-05-15T05:00:41.950103Z","shell.execute_reply":"2022-05-15T05:00:41.950127Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"tf.keras.utils.plot_model(\n    model,\n    to_file='model.png',\n    show_shapes=False,\n    show_dtype=False,\n    show_layer_names=True,\n    rankdir='TB',\n    expand_nested=False,\n    dpi=96,\n    layer_range=None\n)\n","metadata":{"execution":{"iopub.status.busy":"2022-05-15T05:00:41.95209Z","iopub.status.idle":"2022-05-15T05:00:41.952719Z","shell.execute_reply.started":"2022-05-15T05:00:41.952474Z","shell.execute_reply":"2022-05-15T05:00:41.952499Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"acc2=history2.history['accuracy']\nloss2=history2.history['loss']\nval_acc2=history2.history['val_accuracy']\nval_loss2=history2.history['val_loss']\n\n'''acc3=history3.history['accuracy']\nloss3=history3.history['loss']\nval_acc3=history3.history['val_accuracy']\nval_loss3=history3.history['val_loss']'''\n\nacc4=history4.history['accuracy']\nloss4=history4.history['loss']\nval_acc4=history4.history['val_accuracy']\nval_loss4=history4.history['val_loss']\n\nacc5=history5.history['accuracy']\nloss5=history5.history['loss']\nval_acc5=history5.history['val_accuracy']\nval_loss5=history5.history['val_loss']\n\nacc6=history6.history['accuracy']\nloss6=history6.history['loss']\nval_acc6=history6.history['val_accuracy']\nval_loss6=history6.history['val_loss']","metadata":{"execution":{"iopub.status.busy":"2022-05-15T05:00:41.953988Z","iopub.status.idle":"2022-05-15T05:00:41.955066Z","shell.execute_reply.started":"2022-05-15T05:00:41.954769Z","shell.execute_reply":"2022-05-15T05:00:41.954792Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"","metadata":{}},{"cell_type":"code","source":"plt.figure(figsize=(12,10))\nplt.plot(acc)\nplt.plot(acc1)\nplt.plot(ac2)\n#\nplt.plot(ac4)\nplt.plot(acc5)\nplt.plot(acc6)\n\nplt.xlabel('number of epoch')\nplt.ylabel('accuracy')\nplt.title('All Model Accuracy ')\nplt.legend(['proposed model acc','vgg model accuracy','densenet121','efficinetNetB7','ResNet50','Inception_v3'])\nplt.savefig('all model accuracy.png')\n            ","metadata":{"execution":{"iopub.status.busy":"2022-05-15T05:00:41.956761Z","iopub.status.idle":"2022-05-15T05:00:41.957486Z","shell.execute_reply.started":"2022-05-15T05:00:41.957266Z","shell.execute_reply":"2022-05-15T05:00:41.957289Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize=(12,10))\nplt.plot(loss)\nplt.plot(loss1)\nplt.plot(loss2)\n#\nplt.plot(loss4)\nplt.plot(loss5)\nplt.plot(loss6)\n\nplt.xlabel('Number of Epoch')\nplt.ylabel('Loss')\nplt.title('All Model Loss ')\nplt.legend(['proposed model acc','vgg model accuracy','densenet121','efficinetNetB7','ResNet50','Inception_v3'])\nplt.savefig('all model loss.png')","metadata":{"execution":{"iopub.status.busy":"2022-05-15T05:00:41.95856Z","iopub.status.idle":"2022-05-15T05:00:41.960956Z","shell.execute_reply.started":"2022-05-15T05:00:41.960689Z","shell.execute_reply":"2022-05-15T05:00:41.960715Z"},"trusted":true},"execution_count":null,"outputs":[]}]}