{"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 seaborn as sns\nimport matplotlib.pyplot as plt\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.model_selection import train_test_split\nimport tensorflow as tf\nfrom tensorflow import keras\nfrom tensorflow.keras.models import Sequential\nfrom tensorflow.keras.callbacks import ModelCheckpoint\nfrom tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dropout, Dense\nfrom tensorflow.keras import layers\nimport cv2, os\nfrom tqdm import tqdm\nfrom random import shuffle\nimport shutil\nimport csv","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-09-16T18:15:27.627832Z","iopub.execute_input":"2022-09-16T18:15:27.628281Z","iopub.status.idle":"2022-09-16T18:15:35.653031Z","shell.execute_reply.started":"2022-09-16T18:15:27.628229Z","shell.execute_reply":"2022-09-16T18:15:35.651826Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!pwd; mkdir train_data; cd train_data; mkdir hit; mkdir nohit\n!cd train_data; ls -la;","metadata":{"execution":{"iopub.status.busy":"2022-09-16T18:15:39.161060Z","iopub.execute_input":"2022-09-16T18:15:39.162446Z","iopub.status.idle":"2022-09-16T18:15:41.384300Z","shell.execute_reply.started":"2022-09-16T18:15:39.162399Z","shell.execute_reply":"2022-09-16T18:15:41.382894Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# assign directory\nlabel_directory = '../input/hsgs-hackathon2022/train_data/Train_labels'\npng_directory = '../input/hsgs-hackathon2022/train_data/Train'\nnew_train_data_hit = '../working/train_data/hit'\nnew_train_data_nohit = '../working/train_data/nohit'\n# iterate over files in\n# that directory\ncnt = 0\nfor filename in sorted(os.listdir(label_directory)):\n    if cnt == 4:\n        break\n    cnt += 1 \n    with open(os.path.join(label_directory, filename)) as file:\n        labelFile = csv.reader(file)\n        for row in labelFile:\n            if row[0] == 'Frame':\n                continue\n            else:\n                if row[1] == '0':\n                    #print(os.path.join(png_directory, filename[:-4], row[0] + '.PNG'), os.path.join(new_train_data_nohit, filename[:-4] + '_' + row[0] + '.PNG'))\n                    os.system('cp {} {}'.format(os.path.join(png_directory, filename[:-4], row[0] + '.PNG'), os.path.join(new_train_data_nohit, filename[:-4] + '_' + row[0] + '.PNG')))\n                else:\n                    #print(os.path.join(png_directory, filename[:-4], row[0] + '.PNG'), os.path.join(new_train_data_nohit, filename[:-4] + '_' + row[0] + '.PNG'))\n                    os.system('cp {} {}'.format(os.path.join(png_directory, filename[:-4], row[0] + '.PNG'), os.path.join(new_train_data_hit, filename[:-4] + '_' + row[0] + '.PNG')))\n                    \n!cd train_data; cd hit; cd video_10; ls -la\n","metadata":{"execution":{"iopub.status.busy":"2022-09-16T18:15:47.481591Z","iopub.execute_input":"2022-09-16T18:15:47.482030Z","iopub.status.idle":"2022-09-16T18:19:26.658410Z","shell.execute_reply.started":"2022-09-16T18:15:47.481990Z","shell.execute_reply":"2022-09-16T18:19:26.656404Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_dir= \"../input/hsgs-hackathon2022/Test_data\"\ntrain_dir= \"../working/train_data\"\ntrain_datagen = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1./255, validation_split= 0.2)\ntrain_generator = train_datagen.flow_from_directory(train_dir, target_size=(299,299), color_mode='grayscale', batch_size=20, class_mode='binary', subset= 'training')\nval_generator = train_datagen.flow_from_directory(train_dir, target_size=(299,299), color_mode='grayscale', batch_size=20, class_mode='binary', subset= 'validation')\n","metadata":{"execution":{"iopub.status.busy":"2022-09-16T18:51:36.449473Z","iopub.execute_input":"2022-09-16T18:51:36.449998Z","iopub.status.idle":"2022-09-16T18:51:37.090548Z","shell.execute_reply.started":"2022-09-16T18:51:36.449956Z","shell.execute_reply":"2022-09-16T18:51:37.089319Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model = tf.keras.models.Sequential()\nmodel.add(tf.keras.layers.Conv2D(16, kernel_size=(3,3), activation='relu',input_shape=(299,299,1), padding='same'))\n# model.add(LeakyReLU(alpha=0.1))\nmodel.add(tf.keras.layers.MaxPooling2D(pool_size=(2,2), padding='same'))\nmodel.add(tf.keras.layers.Conv2D(32, kernel_size=(3,3), activation='relu', padding='same'))\n# model.add(tf.keras.activations.relu(alpha=0.1))\nmodel.add(tf.keras.layers.MaxPooling2D(pool_size=(2,2), padding='same'))\nmodel.add(tf.keras.layers.Conv2D(64, kernel_size=(3,3), activation='relu', padding='same'))\n# model.add(tf.keras.activations.relu(alpha=0.1))\nmodel.add(tf.keras.layers.MaxPooling2D(pool_size=(2,2), padding='same'))\nmodel.add(tf.keras.layers.Conv2D(64, kernel_size=(3,3), activation='relu', padding='same'))\n# model.add(tf.keras.activations.relu(alpha=0.1))\nmodel.add(tf.keras.layers.MaxPooling2D(pool_size=(2,2), padding='same'))\nmodel.add(tf.keras.layers.Flatten())\nmodel.add(tf.keras.layers.Dropout(0.5))\nmodel.add(tf.keras.layers.Dense(128, activation=tf.nn.relu))\n# model.add(tf.keras.activations.relu(alpha=0.1))\nmodel.add(Dropout(0.5))\nmodel.add(tf.keras.layers.Dense(256, activation=tf.nn.relu))\nmodel.add(tf.keras.layers.Dense(1, activation='sigmoid'))\nmodel.summary()","metadata":{"execution":{"iopub.status.busy":"2022-09-16T18:51:46.167591Z","iopub.execute_input":"2022-09-16T18:51:46.168044Z","iopub.status.idle":"2022-09-16T18:51:46.299943Z","shell.execute_reply.started":"2022-09-16T18:51:46.168003Z","shell.execute_reply":"2022-09-16T18:51:46.298811Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\nfrom keras import callbacks\nearlystopping = callbacks.EarlyStopping(monitor =\"val_loss\", \n                                        mode =\"min\", patience = 5, \n                                        restore_best_weights = True)\n# Model Compilation\nmodel.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])\nhistory = model.fit(train_generator, epochs=20, validation_data=val_generator, validation_steps=50, callbacks = [earlystopping])","metadata":{"execution":{"iopub.status.busy":"2022-09-16T19:00:11.296508Z","iopub.execute_input":"2022-09-16T19:00:11.296993Z"},"trusted":true},"execution_count":null,"outputs":[]}]}