{"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 tensorflow as tf\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-07-18T10:25:03.809448Z","iopub.execute_input":"2022-07-18T10:25:03.810122Z","iopub.status.idle":"2022-07-18T10:25:14.147905Z","shell.execute_reply.started":"2022-07-18T10:25:03.809998Z","shell.execute_reply":"2022-07-18T10:25:14.146302Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_Data = pd.read_csv(\"../input/platesv2/sample_submission.csv\")\ny_Data","metadata":{"execution":{"iopub.status.busy":"2022-07-18T10:25:16.059409Z","iopub.execute_input":"2022-07-18T10:25:16.060208Z","iopub.status.idle":"2022-07-18T10:25:16.109709Z","shell.execute_reply.started":"2022-07-18T10:25:16.060170Z","shell.execute_reply":"2022-07-18T10:25:16.108367Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import zipfile\nimport os\nos.mkdir(\"./plates\")\nwith zipfile.ZipFile(\"../input/platesv2/plates.zip\", 'r') as zip_ref:\n    zip_ref.extractall(\"./plates\")","metadata":{"execution":{"iopub.status.busy":"2022-07-18T10:25:25.478907Z","iopub.execute_input":"2022-07-18T10:25:25.479271Z","iopub.status.idle":"2022-07-18T10:25:26.611343Z","shell.execute_reply.started":"2022-07-18T10:25:25.479242Z","shell.execute_reply":"2022-07-18T10:25:26.610213Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_path = \"./plates/plates/train\"\nimagename_list = []\nfor item in os.listdir(path = train_path + \"/cleaned\"):\n    if \".jpg\" in item:\n        imagename_list.append(item)\nprint(imagename_list)","metadata":{"execution":{"iopub.status.busy":"2022-07-18T11:26:39.586757Z","iopub.execute_input":"2022-07-18T11:26:39.587756Z","iopub.status.idle":"2022-07-18T11:26:39.594404Z","shell.execute_reply.started":"2022-07-18T11:26:39.587679Z","shell.execute_reply":"2022-07-18T11:26:39.593256Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from tensorflow.keras.preprocessing.image import ImageDataGenerator\ntrain_data_generator = ImageDataGenerator(rotation_range=60,\n                                          shear_range=0.2,\n                                          width_shift_range=0.4,\n                                          height_shift_range=0.4,\n                                          zoom_range=0.2,\n                                          horizontal_flip=True,\n                                          vertical_flip=True)\ntrain_generator = train_data_generator.flow_from_directory(train_path,\n                                                           target_size=(224, 224),\n                                                           batch_size = 10,\n                                                           class_mode='binary')","metadata":{"execution":{"iopub.status.busy":"2022-07-18T13:41:40.097822Z","iopub.execute_input":"2022-07-18T13:41:40.098336Z","iopub.status.idle":"2022-07-18T13:41:40.211702Z","shell.execute_reply.started":"2022-07-18T13:41:40.098298Z","shell.execute_reply":"2022-07-18T13:41:40.210413Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_path = \"./plates/plates\"\ntest_generator = ImageDataGenerator().flow_from_directory(test_path,\n                                                          classes=['test'],\n                                                          target_size = (224, 224),\n                                                          shuffle = False,\n                                                          class_mode = None) ","metadata":{"execution":{"iopub.status.busy":"2022-07-18T12:56:46.635343Z","iopub.execute_input":"2022-07-18T12:56:46.636474Z","iopub.status.idle":"2022-07-18T12:56:46.748760Z","shell.execute_reply.started":"2022-07-18T12:56:46.636424Z","shell.execute_reply":"2022-07-18T12:56:46.747298Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"core_model = tf.keras.applications.vgg16.VGG16(\n    include_top=False,\n    input_shape=(224,224,3),\n    weights='imagenet'\n)\ncore_model.trainable = False\nmodel_output = core_model.output\nmodel_output = tf.keras.layers.Flatten()(model_output)\nmodel_output = tf.keras.layers.Dense(1024, activation = 'relu')(model_output)\nmodel_output = tf.keras.layers.Dense(256, activation = 'relu')(model_output)\nmodel_output = tf.keras.layers.Dense(1, activation = 'sigmoid')(model_output)\nmodel = tf.keras.models.Model(inputs = core_model.input, outputs = model_output)\nmodel.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])","metadata":{"execution":{"iopub.status.busy":"2022-07-18T14:50:22.544664Z","iopub.execute_input":"2022-07-18T14:50:22.545159Z","iopub.status.idle":"2022-07-18T14:50:24.249429Z","shell.execute_reply.started":"2022-07-18T14:50:22.545119Z","shell.execute_reply":"2022-07-18T14:50:24.248264Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"optimizer = tf.keras.optimizers.Adam(\n    learning_rate=1e-04,\n    beta_1=0.9,\n    beta_2=0.999,\n    epsilon=1e-07,\n    amsgrad=False,\n)\nmodel.compile(optimizer = optimizer, loss = 'binary_crossentropy', metrics = ['accuracy'])","metadata":{"execution":{"iopub.status.busy":"2022-07-18T14:50:26.665748Z","iopub.execute_input":"2022-07-18T14:50:26.666865Z","iopub.status.idle":"2022-07-18T14:50:26.680286Z","shell.execute_reply.started":"2022-07-18T14:50:26.666809Z","shell.execute_reply":"2022-07-18T14:50:26.678952Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.fit_generator(train_generator, epochs = 25)","metadata":{"execution":{"iopub.status.busy":"2022-07-18T14:50:30.945904Z","iopub.execute_input":"2022-07-18T14:50:30.946298Z","iopub.status.idle":"2022-07-18T14:55:04.905872Z","shell.execute_reply.started":"2022-07-18T14:50:30.946266Z","shell.execute_reply":"2022-07-18T14:55:04.904593Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"predictions = model.predict_generator(test_generator)\npredictions.shape","metadata":{"execution":{"iopub.status.busy":"2022-07-18T14:55:14.686417Z","iopub.execute_input":"2022-07-18T14:55:14.686856Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"preds = []\nfor i in range(len(predictions)):\n    if predictions[i] >= 0.5:\n        preds.append(\"dirty\")\n    else:\n        preds.append(\"cleaned\")","metadata":{"_kg_hide-output":true,"execution":{"iopub.status.busy":"2022-07-18T13:23:31.834819Z","iopub.execute_input":"2022-07-18T13:23:31.835315Z","iopub.status.idle":"2022-07-18T13:23:31.844543Z","shell.execute_reply.started":"2022-07-18T13:23:31.835275Z","shell.execute_reply":"2022-07-18T13:23:31.843258Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission = pd.read_csv('../input/platesv2/sample_submission.csv')\nsubmission['label'] = preds\npreds","metadata":{"_kg_hide-output":false,"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission.to_csv('submission.csv', index=False)","metadata":{"execution":{"iopub.status.busy":"2022-07-18T13:23:40.967635Z","iopub.execute_input":"2022-07-18T13:23:40.968096Z","iopub.status.idle":"2022-07-18T13:23:40.976509Z","shell.execute_reply.started":"2022-07-18T13:23:40.968061Z","shell.execute_reply":"2022-07-18T13:23:40.975619Z"},"trusted":true},"execution_count":null,"outputs":[]}]}