{"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 os\nimport pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport cv2\nimport random","metadata":{"execution":{"iopub.status.busy":"2021-07-16T09:42:48.65586Z","iopub.execute_input":"2021-07-16T09:42:48.656364Z","iopub.status.idle":"2021-07-16T09:42:48.939925Z","shell.execute_reply.started":"2021-07-16T09:42:48.656259Z","shell.execute_reply":"2021-07-16T09:42:48.938872Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **Prepare data**","metadata":{}},{"cell_type":"code","source":"len(os.listdir('../input/beginners-cats-and-dogs/testing_set/testing_set'))","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-07-16T10:23:33.482288Z","iopub.execute_input":"2021-07-16T10:23:33.482655Z","iopub.status.idle":"2021-07-16T10:23:33.715741Z","shell.execute_reply.started":"2021-07-16T10:23:33.482622Z","shell.execute_reply":"2021-07-16T10:23:33.714698Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import pandas as pd\ndf = pd.read_csv(\"../input/beginners-cats-and-dogs/Train.csv\")\ndf['label'] = df['label'].astype('str')\ndf\n\n# 1 = cat, 0 = dog","metadata":{"execution":{"iopub.status.busy":"2021-07-16T09:42:52.028558Z","iopub.execute_input":"2021-07-16T09:42:52.028889Z","iopub.status.idle":"2021-07-16T09:42:52.085773Z","shell.execute_reply.started":"2021-07-16T09:42:52.028859Z","shell.execute_reply":"2021-07-16T09:42:52.0844Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_test = pd.read_csv(\"../input/beginners-cats-and-dogs/Test.csv\")\ndf_test","metadata":{"execution":{"iopub.status.busy":"2021-07-16T09:42:53.31506Z","iopub.execute_input":"2021-07-16T09:42:53.315568Z","iopub.status.idle":"2021-07-16T09:42:53.340552Z","shell.execute_reply.started":"2021-07-16T09:42:53.315539Z","shell.execute_reply":"2021-07-16T09:42:53.339313Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df[\"label\"].hist(bins = 4)","metadata":{"execution":{"iopub.status.busy":"2021-07-16T09:42:53.912028Z","iopub.execute_input":"2021-07-16T09:42:53.912343Z","iopub.status.idle":"2021-07-16T09:42:54.120323Z","shell.execute_reply.started":"2021-07-16T09:42:53.912316Z","shell.execute_reply":"2021-07-16T09:42:54.119319Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df[\"label\"].value_counts()","metadata":{"execution":{"iopub.status.busy":"2021-07-16T09:42:54.685699Z","iopub.execute_input":"2021-07-16T09:42:54.686024Z","iopub.status.idle":"2021-07-16T09:42:54.697967Z","shell.execute_reply.started":"2021-07-16T09:42:54.685995Z","shell.execute_reply":"2021-07-16T09:42:54.696657Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Visualize data","metadata":{}},{"cell_type":"code","source":"# import matplotlib.pyplot as plt\n# import cv2\n\nimg = cv2.imread('../input/beginners-cats-and-dogs/training_set/training_set/training_5.jpg')\nimg = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)\n\nfig, ax = plt.subplots(1, 1, figsize=(10,10))\nax.imshow(img)\n\nimg = cv2.imread('../input/beginners-cats-and-dogs/training_set/training_set/training_4.jpg')\nimg = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)\n\nfig, ax = plt.subplots(1, 1, figsize=(10,10))\nax.imshow(img)","metadata":{"execution":{"iopub.status.busy":"2021-07-16T09:42:56.144696Z","iopub.execute_input":"2021-07-16T09:42:56.145111Z","iopub.status.idle":"2021-07-16T09:42:56.73704Z","shell.execute_reply.started":"2021-07-16T09:42:56.145082Z","shell.execute_reply":"2021-07-16T09:42:56.735673Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# df = df[df['label'] == 1]\n# random.shuffle(df['filename'].tolist())\n# # df['filename'].tolist()","metadata":{"execution":{"iopub.status.busy":"2021-07-16T09:42:59.472555Z","iopub.execute_input":"2021-07-16T09:42:59.472919Z","iopub.status.idle":"2021-07-16T09:42:59.477493Z","shell.execute_reply.started":"2021-07-16T09:42:59.472876Z","shell.execute_reply":"2021-07-16T09:42:59.476148Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\n#setting_____________________________\nkey = 'cat' #cat = 1, dog = 0\nshuffle_img = True \ncolumns = 5 \nrow = 2 \nstart_photo = 0\npathh = '../input/beginners-cats-and-dogs/training_set/training_set/'\n\n\n# code_______________________________\n# filter class\nif key == 'cat':\n    df_vis = df[df['label'] == '1']\n    path_file = df_vis['filename'].tolist()\n\nelif key == 'dog':\n    df_vis = df[df['label'] == '0']\n    path_file = df_vis['filename'].tolist()\n    \nelse:\n    path_file = df['filename'].tolist()\n\n    \n# shuffle data\nphoto = path_file[start_photo:]\nif shuffle_img == True:\n    random.shuffle(photo)\nelse:\n    pass\n\n\n# Visualize img\ntry:\n    fig, ax = plt.subplots(row, columns, figsize=(columns * 5 , row * 4))\n    num = 0\n\n    for i in range(row):\n        for j in range(columns):\n    \n            image = cv2.imread(pathh + '/' + photo[num])\n            image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)\n            ax[i][j].imshow(image)\n            num = num + 1\n            \nexcept:\n    print('Please re-setting')\n    pass\n","metadata":{"execution":{"iopub.status.busy":"2021-07-16T09:43:01.178761Z","iopub.execute_input":"2021-07-16T09:43:01.179093Z","iopub.status.idle":"2021-07-16T09:43:03.146497Z","shell.execute_reply.started":"2021-07-16T09:43:01.179064Z","shell.execute_reply":"2021-07-16T09:43:03.145196Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Model","metadata":{}},{"cell_type":"markdown","source":"DataGen","metadata":{}},{"cell_type":"code","source":"import numpy as np\nimport pandas as pd \nfrom keras.preprocessing.image import ImageDataGenerator, load_img\nfrom keras.utils import to_categorical\nfrom sklearn.model_selection import train_test_split\nimport matplotlib.pyplot as plt\nimport random","metadata":{"execution":{"iopub.status.busy":"2021-07-16T09:43:08.985458Z","iopub.execute_input":"2021-07-16T09:43:08.985796Z","iopub.status.idle":"2021-07-16T09:43:15.781844Z","shell.execute_reply.started":"2021-07-16T09:43:08.985766Z","shell.execute_reply":"2021-07-16T09:43:15.780664Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"IMAGE_WIDTH=224\nIMAGE_HEIGHT=224\nIMAGE_SIZE=(IMAGE_WIDTH, IMAGE_HEIGHT)\nIMAGE_CHANNELS=3","metadata":{"execution":{"iopub.status.busy":"2021-07-16T09:43:31.949787Z","iopub.execute_input":"2021-07-16T09:43:31.950271Z","iopub.status.idle":"2021-07-16T09:43:31.955397Z","shell.execute_reply.started":"2021-07-16T09:43:31.950219Z","shell.execute_reply":"2021-07-16T09:43:31.953927Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import tensorflow as tf\nfrom tensorflow import keras\n\nresnet = tf.keras.applications.ResNet50(\n    include_top=False,\n    weights=\"imagenet\",\n    input_tensor=None,\n    input_shape=None,\n    pooling=None,\n    classes=1000,\n    classifier_activation=\"softmax\",\n    \n)","metadata":{"execution":{"iopub.status.busy":"2021-07-16T09:43:33.330049Z","iopub.execute_input":"2021-07-16T09:43:33.330464Z","iopub.status.idle":"2021-07-16T09:43:38.264512Z","shell.execute_reply.started":"2021-07-16T09:43:33.33043Z","shell.execute_reply":"2021-07-16T09:43:38.263382Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from tensorflow.keras import layers, Model\nx_in = layers.Input(shape=(IMAGE_WIDTH, IMAGE_HEIGHT, IMAGE_CHANNELS)) # สร้าง input layer\nx = resnet(x_in)\nx = layers.Flatten()(x) # เอา x เข้า flatten\nx = layers.Dense(2, activation='softmax')(x) # เอา x เข้า dense\nmodel = Model(x_in, x)\nmodel.summary()","metadata":{"execution":{"iopub.status.busy":"2021-07-16T09:43:40.890899Z","iopub.execute_input":"2021-07-16T09:43:40.891284Z","iopub.status.idle":"2021-07-16T09:43:41.416951Z","shell.execute_reply.started":"2021-07-16T09:43:40.891252Z","shell.execute_reply":"2021-07-16T09:43:41.415927Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"prepare-data","metadata":{}},{"cell_type":"code","source":"from sklearn.model_selection import train_test_split\nx_train, x_val = train_test_split(df, test_size=0.20) # random_state=42\nx_train = x_train.reset_index(drop=True)\nx_val = x_val.reset_index(drop=True)","metadata":{"execution":{"iopub.status.busy":"2021-07-16T09:43:44.725853Z","iopub.execute_input":"2021-07-16T09:43:44.726218Z","iopub.status.idle":"2021-07-16T09:43:44.735458Z","shell.execute_reply.started":"2021-07-16T09:43:44.726186Z","shell.execute_reply":"2021-07-16T09:43:44.733781Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"total_train = x_train.shape[0]\ntotal_validate = x_val.shape[0]\nbatch_size = 128","metadata":{"execution":{"iopub.status.busy":"2021-07-16T09:43:46.12171Z","iopub.execute_input":"2021-07-16T09:43:46.122049Z","iopub.status.idle":"2021-07-16T09:43:46.127553Z","shell.execute_reply.started":"2021-07-16T09:43:46.122019Z","shell.execute_reply":"2021-07-16T09:43:46.126329Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Augment\ntrain_datagen = ImageDataGenerator(\n#     rotation_range=3,\n    rescale=1./255,\n#     zoom_range=0.5,\n#     rotation_range=40,\n#     width_shift_range=0.2,\n#     height_shift_range=0.2,\n#     shear_range=0.2,\n#     zoom_range=0.2,\n    horizontal_flip=True,\n#     fill_mode='nearest'\n)\n\ntrain_generator = train_datagen.flow_from_dataframe(\n    x_train,\n    \"../input/beginners-cats-and-dogs/training_set/training_set\", \n    x_col='filename',\n    y_col='label',\n    target_size=IMAGE_SIZE,\n    class_mode='categorical',\n#     class_mode='raw', #raw'\n    batch_size=batch_size\n)","metadata":{"execution":{"iopub.status.busy":"2021-07-16T09:43:47.38855Z","iopub.execute_input":"2021-07-16T09:43:47.38891Z","iopub.status.idle":"2021-07-16T09:43:58.134808Z","shell.execute_reply.started":"2021-07-16T09:43:47.38888Z","shell.execute_reply":"2021-07-16T09:43:58.13369Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"validation_datagen = ImageDataGenerator(rescale=1./255)\nvalidation_generator = validation_datagen.flow_from_dataframe(\n    x_val, \n    \"../input/beginners-cats-and-dogs/training_set/training_set\", \n    x_col='filename',\n    y_col='label',\n    target_size=IMAGE_SIZE,\n    class_mode='categorical',\n#     class_mode='binary', #raw'\n    batch_size=batch_size\n)","metadata":{"execution":{"iopub.status.busy":"2021-07-16T09:44:20.270043Z","iopub.execute_input":"2021-07-16T09:44:20.270496Z","iopub.status.idle":"2021-07-16T09:44:21.912431Z","shell.execute_reply.started":"2021-07-16T09:44:20.270463Z","shell.execute_reply":"2021-07-16T09:44:21.910292Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"example_df = x_train.sample(n=1).reset_index(drop=True)\nexample_generator = train_datagen.flow_from_dataframe(\n    example_df, \n    \"../input/beginners-cats-and-dogs/training_set/training_set\", \n    x_col='filename',\n    y_col='label',\n    target_size=IMAGE_SIZE,\n    class_mode='categorical',\n)","metadata":{"execution":{"iopub.status.busy":"2021-07-16T09:44:21.914019Z","iopub.execute_input":"2021-07-16T09:44:21.914462Z","iopub.status.idle":"2021-07-16T09:44:21.928483Z","shell.execute_reply.started":"2021-07-16T09:44:21.914412Z","shell.execute_reply":"2021-07-16T09:44:21.927442Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize=(12, 12))\nfor i in range(0, 15):\n    plt.subplot(5, 3, i+1)\n    for X_batch, Y_batch in example_generator:\n        image = X_batch[0]\n        plt.imshow(image)\n        break\nplt.tight_layout()\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2021-07-16T09:44:21.930664Z","iopub.execute_input":"2021-07-16T09:44:21.931168Z","iopub.status.idle":"2021-07-16T09:44:24.587579Z","shell.execute_reply.started":"2021-07-16T09:44:21.931113Z","shell.execute_reply":"2021-07-16T09:44:24.586264Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"model","metadata":{}},{"cell_type":"code","source":"model.compile(loss='categorical_crossentropy', optimizer='adam',metrics=['accuracy'])","metadata":{"execution":{"iopub.status.busy":"2021-07-16T09:44:35.43339Z","iopub.execute_input":"2021-07-16T09:44:35.433766Z","iopub.status.idle":"2021-07-16T09:44:35.456401Z","shell.execute_reply.started":"2021-07-16T09:44:35.433732Z","shell.execute_reply":"2021-07-16T09:44:35.455135Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"history = model.fit_generator(\n        train_generator,\n        epochs=15,\n        validation_data=validation_generator,\n#         callbacks=callbacks,\n        steps_per_epoch=total_train//batch_size,\n        validation_steps=total_validate//batch_size\n)","metadata":{"execution":{"iopub.status.busy":"2021-07-16T10:00:34.586985Z","iopub.execute_input":"2021-07-16T10:00:34.58741Z","iopub.status.idle":"2021-07-16T10:13:14.447882Z","shell.execute_reply.started":"2021-07-16T10:00:34.587373Z","shell.execute_reply":"2021-07-16T10:13:14.446655Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# model.save_weights(\"newmodel.h5\")","metadata":{"execution":{"iopub.status.busy":"2021-07-16T10:13:14.45009Z","iopub.execute_input":"2021-07-16T10:13:14.450557Z","iopub.status.idle":"2021-07-16T10:13:14.457801Z","shell.execute_reply.started":"2021-07-16T10:13:14.450512Z","shell.execute_reply":"2021-07-16T10:13:14.456604Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(12, 12))\nax1.plot(history.history['loss'], color='b', label=\"Training loss\")\nax1.plot(history.history['val_loss'], color='r', label=\"validation loss\")\nax1.set_xticks(np.arange(1, epochs, 1))\nax1.set_yticks(np.arange(0, 1, 0.1))\n\nax2.plot(history.history['acc'], color='b', label=\"Training accuracy\")\nax2.plot(history.history['val_acc'], color='r',label=\"Validation accuracy\")\nax2.set_xticks(np.arange(1, epochs, 1))\n\nlegend = plt.legend(loc='best', shadow=True)\nplt.tight_layout()\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2021-07-16T10:13:14.460147Z","iopub.execute_input":"2021-07-16T10:13:14.460726Z","iopub.status.idle":"2021-07-16T10:13:14.850001Z","shell.execute_reply.started":"2021-07-16T10:13:14.460683Z","shell.execute_reply":"2021-07-16T10:13:14.847556Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_gen = ImageDataGenerator(rescale=1./255)\ntest_generator = test_gen.flow_from_dataframe(\n    df_test, \n    \"../input/beginners-cats-and-dogs/testing_set/testing_set\", \n    x_col='filename',\n    y_col=None,\n    class_mode=None,\n    target_size=IMAGE_SIZE,\n    batch_size=batch_size,\n    shuffle=False\n)","metadata":{"execution":{"iopub.status.busy":"2021-07-16T10:24:06.081047Z","iopub.execute_input":"2021-07-16T10:24:06.081457Z","iopub.status.idle":"2021-07-16T10:24:08.576782Z","shell.execute_reply.started":"2021-07-16T10:24:06.081425Z","shell.execute_reply":"2021-07-16T10:24:08.574902Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"predict = model.predict(test_generator)","metadata":{"execution":{"iopub.status.busy":"2021-07-16T10:24:30.11959Z","iopub.execute_input":"2021-07-16T10:24:30.120013Z","iopub.status.idle":"2021-07-16T10:24:47.357724Z","shell.execute_reply.started":"2021-07-16T10:24:30.11998Z","shell.execute_reply":"2021-07-16T10:24:47.356632Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_test['category'] = np.argmax(predict, axis=-1)","metadata":{"execution":{"iopub.status.busy":"2021-07-16T10:25:04.969345Z","iopub.execute_input":"2021-07-16T10:25:04.969696Z","iopub.status.idle":"2021-07-16T10:25:04.976903Z","shell.execute_reply.started":"2021-07-16T10:25:04.969666Z","shell.execute_reply":"2021-07-16T10:25:04.975215Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ans = df_test[['filename', 'category']]\nans = ans.rename(columns={'category': 'label'})\nans","metadata":{"execution":{"iopub.status.busy":"2021-07-16T10:26:58.311318Z","iopub.execute_input":"2021-07-16T10:26:58.311745Z","iopub.status.idle":"2021-07-16T10:26:58.332618Z","shell.execute_reply.started":"2021-07-16T10:26:58.311715Z","shell.execute_reply":"2021-07-16T10:26:58.331093Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ans.to_csv('ans.csv', index=False)","metadata":{"execution":{"iopub.status.busy":"2021-07-16T10:27:03.127218Z","iopub.execute_input":"2021-07-16T10:27:03.127638Z","iopub.status.idle":"2021-07-16T10:27:03.143039Z","shell.execute_reply.started":"2021-07-16T10:27:03.127606Z","shell.execute_reply":"2021-07-16T10:27:03.141751Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"![image.png](attachment:b1c87769-7140-449b-acee-edd581b875ac.png)","metadata":{},"attachments":{"b1c87769-7140-449b-acee-edd581b875ac.png":{"image/png":"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"}}}]}