{"cells":[{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"import numpy as np\nimport tensorflow as tf\nimport os\nimport cv2\nfrom tensorflow.keras import layers\nimport pandas as pd","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Preprocessing function\ndef preprocess(cat, split, label):\n    train_images = []\n    train_labels = []\n    for i in os.listdir(cat):\n            image = cv2.imread(cat + '/' + i)\n            res = cv2.resize(image, dsize=(128,128), interpolation=cv2.INTER_CUBIC) # Resize\n            gray = cv2.cvtColor(res, cv2.COLOR_BGR2GRAY) # Converting to grayscale\n            train_images.append(gray)\n            train_labels.append(label)\n            \n    size = len(train_images)\n    return train_images[int(split*size):], train_images[:int(split*size)], train_labels[int(split*size):], train_labels[:int(split*size)] \n        ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Preparing train and test sets\ntrain = []\ntest = []\nlabeltrain = []\nlabeltest = []\n# Bed\ntrain_images, test_images, train_labels, test_labels = preprocess('../input/day-3-kaggle-competition/data_comp/data_comp/train/bed', 0.2, 0)\ntrain.extend(train_images)\ntest.extend(test_images)\nlabeltrain.extend(train_labels)\nlabeltest.extend(test_labels)\n\n# Chair\ntrain_images, test_images, train_labels, test_labels = preprocess('../input/day-3-kaggle-competition/data_comp/data_comp/train/chair', 0.15, 1)\ntrain.extend(train_images)\ntest.extend(test_images)\nlabeltrain.extend(train_labels)\nlabeltest.extend(test_labels)\n\n# Sofa\ntrain_images, test_images, train_labels, test_labels = preprocess('../input/day-3-kaggle-competition/data_comp/data_comp/train/sofa', 0.15, 2)\ntrain.extend(train_images)\ntest.extend(test_images)\nlabeltrain.extend(train_labels)\nlabeltest.extend(test_labels)\n\n# Swivelchair\ntrain_images, test_images, train_labels, test_labels = preprocess('../input/day-3-kaggle-competition/data_comp/data_comp/train/swivelchair', 0.1, 3)\ntrain.extend(train_images)\ntest.extend(test_images)\nlabeltrain.extend(train_labels)\nlabeltest.extend(test_labels)\n\n# Table\ntrain_images, test_images, train_labels, test_labels = preprocess('../input/day-3-kaggle-competition/data_comp/data_comp/train/table', 0.15, 4)\ntrain.extend(train_images)\ntest.extend(test_images)\nlabeltrain.extend(train_labels)\nlabeltest.extend(test_labels)\n\ntrain = np.array(train)\ntest = np.array(test)\nlabeltrain = np.array(labeltrain)\nlabeltest = np.array(labeltest)\n\ntrain = train.reshape(train.shape[0], 128, 128, 1).astype('float32')\ntrain = (train - 127.5) / 127.5 # Normalize the images to [-1, 1]\n\ntest = test.reshape(test.shape[0], 128, 128, 1).astype('float32')\ntest = (test - 127.5) / 127.5 # Normalize the images to [-1, 1]\n\nprint (train.shape)\nprint (test.shape)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Model\nmodel = tf.keras.models.Sequential([\n    layers.Conv2D(16, (3,3), activation='relu', input_shape=(128, 128, 1)),\n    layers.MaxPooling2D(2,2),\n    layers.Conv2D(32, (3,3), activation='relu'),\n    layers.MaxPooling2D(2,2),\n    layers.Conv2D(64, (3,3), activation='relu'),\n    layers.MaxPooling2D(2,2),\n    layers.Conv2D(32, (3,3), activation='relu', kernel_regularizer=tf.keras.regularizers.l2(0.0028)),\n    layers.MaxPooling2D(2,2),\n    layers.Dropout(0.75),\n    layers.Flatten(),\n    layers.Dense(1024, activation='relu'),\n    layers.Dense(512, activation='relu'),\n    #layers.Dense(256, activation='relu'),\n    layers.Dense(128, activation='relu'),\n    #layers.Dropout(0.4),\n    layers.Dense(64, activation='relu'),\n    #layers.Dense(32, activation='relu'),\n    layers.Dense(5, activation='softmax')])\n\nmodel.summary()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.compile(optimizer='adam',\n    loss='sparse_categorical_crossentropy',\n    metrics=['accuracy'])\n\n\nhistory = model.fit(train, labeltrain, epochs = 30,\n                    validation_data=(test, labeltest), verbose=2)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"val = []\nfol = []\nfor i in range(2164):\n    image = cv2.imread('../input/day-3-kaggle-competition/data_comp/data_comp/test/img' + str(i) + '.jpg')\n    res = cv2.resize(image, dsize=(128,128), interpolation=cv2.INTER_CUBIC)\n    gray = cv2.cvtColor(res, cv2.COLOR_BGR2GRAY) # Converting to grayscale\n    gray = np.array(gray)\n    gray = gray.reshape(1, 128, 128, 1).astype('float32')\n    gray = (gray - 127.5) / 127.5\n    pred = np.argmax(model.predict(gray)) # Predicting class\n    val.append(pred)\n    fol.append('img' + str(i))\n\n#print (val[0:5])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#print (fol[0:5])\noutput = pd.DataFrame({'image':fol ,'target':val}) # Creating dataframe\nprint (output)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"output.to_csv('submission3.csv')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"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":4,"nbformat_minor":4}