Skip to content

Commit 0d1af05

Browse files
author
congphase
committed
notebook code of the experiments added
1 parent f448b94 commit 0d1af05

14 files changed

+13185
-0
lines changed

notebook-code/.ipynb_checkpoints/TN5_VGGFACE2_v1_RandomOverSampling-checkpoint.ipynb

+1,305
Large diffs are not rendered by default.

notebook-code/.ipynb_checkpoints/TN6_vggface2_v1_adasyn-checkpoint.ipynb

+1,260
Large diffs are not rendered by default.

notebook-code/.ipynb_checkpoints/TN7_VGGFACE1_v1_RandomOverSampling-checkpoint.ipynb

+2,288
Large diffs are not rendered by default.

notebook-code/.ipynb_checkpoints/TN8_Ensemble_v1_randomoversampling-checkpoint.ipynb

+1,015
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"TN1_RESNET50_V0_RDOVERSAMPLER.ipynb","provenance":[],"collapsed_sections":[]},"kernelspec":{"name":"python3","display_name":"Python 3"},"accelerator":"GPU"},"cells":[{"cell_type":"code","metadata":{"id":"PL21Mz5-OeDg","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1610076462528,"user_tz":-420,"elapsed":792,"user":{"displayName":"Le Pha","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjTPCEIVTOfRxHtgiERdHMyMsaddyg4etiFrgjR=s64","userId":"04535321801843814015"}},"outputId":"20302c3c-0b9f-4dab-84ed-98c75bf8c71f"},"source":["# Mount \"My Drive\" into /content/drive\r\n","from google.colab import drive\r\n","\r\n","private_dir = \"Courses-VinBigdata/Course-Deep-Learning/Project/\"\r\n","google_drive_dir = private_dir+\"Final_Project_DL\" # @param\r\n","#bml-notebooks/\r\n","drive.mount('/content/drive')\r\n","\r\n","mount_point = \"/content/drive/MyDrive/{}\".format(google_drive_dir)\r\n","\r\n","# Change the root directory to your mount_point\r\n","% cd '$mount_point'"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n","/content/drive/.shortcut-targets-by-id/1BOvFtzoVhfYNe70lBGxYzhPlDElSrazo/Final_Project_DL\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"papermill":{"duration":0.044808,"end_time":"2020-12-18T22:02:11.416442","exception":false,"start_time":"2020-12-18T22:02:11.371634","status":"completed"},"tags":[],"id":"eI1PdIKtLrpv"},"source":["# <span style=\"color: royalblue;\">Load Data</span>\n","Load the image data with labels."]},{"cell_type":"code","metadata":{"id":"HM1rN5gqd5aG"},"source":["import numpy as np\r\n","from src.loadData import loadFer2013\r\n","from keras.utils import to_categorical\r\n"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"ct5pobN6eBgW"},"source":["X_train,X_val,X_test,y_train,y_val,y_test = loadFer2013('fer2013/icml_face_data.csv')\r\n","\r\n","y_train_onehot = to_categorical(y_train)\r\n","y_val_onehot = to_categorical(y_val)\r\n","y_test_onehot = to_categorical(y_test)"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"jncS-WGXfb2j","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1610076468473,"user_tz":-420,"elapsed":6718,"user":{"displayName":"Le Pha","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjTPCEIVTOfRxHtgiERdHMyMsaddyg4etiFrgjR=s64","userId":"04535321801843814015"}},"outputId":"fe9752c2-3113-4f51-fa8d-4e118d2a8a66"},"source":["X_train.shape, y_train.shape"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["((28709, 48, 48), (28709,))"]},"metadata":{"tags":[]},"execution_count":17}]},{"cell_type":"code","metadata":{"id":"Nt9oKq3mo60M","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1610076468474,"user_tz":-420,"elapsed":6711,"user":{"displayName":"Le Pha","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjTPCEIVTOfRxHtgiERdHMyMsaddyg4etiFrgjR=s64","userId":"04535321801843814015"}},"outputId":"3d21e4c5-1084-4aa2-bce8-1913700c219a"},"source":["emotions = {0: 'Angry', 1:'Disgust', 2:'Fear', 3: 'Happy', 4: 'Sad', 5: 'Surprise', 6: 'Neutral'}\r\n","class_names = list(emotions.values())\r\n","class_names"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["['Angry', 'Disgust', 'Fear', 'Happy', 'Sad', 'Surprise', 'Neutral']"]},"metadata":{"tags":[]},"execution_count":18}]},{"cell_type":"markdown","metadata":{"id":"c5gLac_xzyq_"},"source":["#Imbalance Data"]},{"cell_type":"code","metadata":{"id":"oTyNSLwTz1ww"},"source":["import imblearn\r\n","\r\n","if imblearn.__version__.split('.')[1] != '7':\r\n"," !pip install -U imbalanced-learn"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"gQqZCIev_L5u"},"source":["def SMOTE_data(X_train,y_train,mode='smote'):\r\n"," if mode=='random':\r\n"," oversample = imblearn.over_sampling.RandomOverSampler(sampling_strategy='auto')\r\n"," else:\r\n"," oversample = imblearn.over_sampling.SMOTE()\r\n","\r\n"," X_train = X_train.reshape(X_train.shape[0], -1)\r\n","\r\n"," X_train, y_train = oversample.fit_resample(X_train, y_train)\r\n","\r\n"," X_train = X_train.reshape((X_train.shape[0], 48, 48))\r\n","\r\n"," return X_train, y_train"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"UBDyL_1uWCZ5"},"source":[""],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"Dz3fxghSAHnV"},"source":["X_train_smote,y_train_smote= SMOTE_data(X_train,y_train, mode='random')"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"_7q1xxCw4D56"},"source":["y_train_onehot = to_categorical(y_train_smote)"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"WGYkQwHe8jgm","executionInfo":{"status":"ok","timestamp":1610076468940,"user_tz":-420,"elapsed":7148,"user":{"displayName":"Le Pha","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjTPCEIVTOfRxHtgiERdHMyMsaddyg4etiFrgjR=s64","userId":"04535321801843814015"}},"outputId":"0b706a5c-92b0-40f2-f5dc-06be33aab760"},"source":["y_train_onehot.shape"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["(50505, 7)"]},"metadata":{"tags":[]},"execution_count":23}]},{"cell_type":"code","metadata":{"id":"ZUy4DmMw8mO8"},"source":[""],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"-9KsqSFYycZW"},"source":["#Preprocessing"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"lIAx61wiye5z","executionInfo":{"status":"ok","timestamp":1610077699720,"user_tz":-420,"elapsed":4275,"user":{"displayName":"Le Pha","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjTPCEIVTOfRxHtgiERdHMyMsaddyg4etiFrgjR=s64","userId":"04535321801843814015"}},"outputId":"0067eca2-dc3d-40d0-d079-594505fbca5d"},"source":["def preprocessX(X):\r\n"," # X = X.astype(np.float32)\r\n"," # X = X/255\r\n"," X = np.repeat(X[..., np.newaxis], 3, -1)\r\n"," return X\r\n","\r\n","X_processed_train = preprocessX(X_train_smote)\r\n","X_processed_val = preprocessX(X_val)\r\n","X_processed_test = preprocessX(X_test)\r\n","X_processed_train.shape,X_processed_val.shape,X_processed_test.shape"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["((50505, 48, 48, 3), (3589, 48, 48, 3), (3589, 48, 48, 3))"]},"metadata":{"tags":[]},"execution_count":30}]},{"cell_type":"markdown","metadata":{"id":"kQWiE7wt2sZ9"},"source":["# RESNET 50"]},{"cell_type":"code","metadata":{"trusted":true,"colab":{"base_uri":"https://localhost:8080/"},"id":"6NXVOiWC0qLz","executionInfo":{"status":"ok","timestamp":1610078324722,"user_tz":-420,"elapsed":621376,"user":{"displayName":"Le Pha","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjTPCEIVTOfRxHtgiERdHMyMsaddyg4etiFrgjR=s64","userId":"04535321801843814015"}},"outputId":"3c47a658-cea3-4c84-dcc5-83b45426e6c6"},"source":["# ResNet50\n","from keras.models import Model\n","from keras.applications.resnet50 import ResNet50\n","from keras.layers import Input, Add, Dense, Activation, ZeroPadding2D,BatchNormalization, Flatten, Conv2D, AveragePooling2D, MaxPooling2D, GlobalMaxPooling2D\n","from keras.optimizers import Adam\n","\n","model1 = ResNet50(weights='imagenet', include_top=False, input_shape=(48, 48, 3))\n","\n","x = model1.output\n","x= Flatten()(x)\n","x = Dense(7, activation='softmax')(x)\n","model50 = Model(inputs=model1.input, outputs=x)\n","\n","\n","model50.compile(optimizer=Adam(learning_rate=0.001),\n"," loss='categorical_crossentropy',\n"," metrics=['accuracy'])\n","\n","history = model50.fit(X_processed_train, y_train_onehot, batch_size=64, epochs=40, steps_per_epoch=len(X_train)/128, validation_data=(X_processed_val, y_val_onehot), verbose=1)\n","model50.save('CNNmodel/RDOVERSAMPLER_RESNET50.h5')\n"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Epoch 1/40\n","224/224 [==============================] - 20s 69ms/step - loss: 2.5273 - accuracy: 0.3217 - val_loss: 2.0575 - val_accuracy: 0.1847\n","Epoch 2/40\n","224/224 [==============================] - 15s 65ms/step - loss: 1.6511 - accuracy: 0.4269 - val_loss: 2.9598 - val_accuracy: 0.2438\n","Epoch 3/40\n","224/224 [==============================] - 15s 65ms/step - loss: 1.6022 - accuracy: 0.4213 - val_loss: 1.4666 - val_accuracy: 0.4210\n","Epoch 4/40\n","224/224 [==============================] - 15s 65ms/step - loss: 1.3990 - accuracy: 0.4875 - val_loss: 1.5125 - val_accuracy: 0.4221\n","Epoch 5/40\n","224/224 [==============================] - 15s 65ms/step - loss: 1.3026 - accuracy: 0.5332 - val_loss: 1.5359 - val_accuracy: 0.4305\n","Epoch 6/40\n","224/224 [==============================] - 15s 66ms/step - loss: 1.3087 - accuracy: 0.5338 - val_loss: 1.6394 - val_accuracy: 0.3480\n","Epoch 7/40\n","224/224 [==============================] - 15s 66ms/step - loss: 1.2654 - accuracy: 0.5454 - val_loss: 1.4475 - val_accuracy: 0.4182\n","Epoch 8/40\n","224/224 [==============================] - 15s 66ms/step - loss: 1.2038 - accuracy: 0.5543 - val_loss: 1.6348 - val_accuracy: 0.3670\n","Epoch 9/40\n","224/224 [==============================] - 15s 67ms/step - loss: 1.2113 - accuracy: 0.5567 - val_loss: 1.4131 - val_accuracy: 0.4611\n","Epoch 10/40\n","224/224 [==============================] - 15s 67ms/step - loss: 1.1598 - accuracy: 0.5771 - val_loss: 1.1905 - val_accuracy: 0.5500\n","Epoch 11/40\n","224/224 [==============================] - 15s 67ms/step - loss: 0.9084 - accuracy: 0.6524 - val_loss: 1.2804 - val_accuracy: 0.5247\n","Epoch 12/40\n","224/224 [==============================] - 15s 67ms/step - loss: 0.8296 - accuracy: 0.6904 - val_loss: 1.1995 - val_accuracy: 0.5603\n","Epoch 13/40\n","224/224 [==============================] - 15s 68ms/step - loss: 0.8056 - accuracy: 0.6995 - val_loss: 1.2059 - val_accuracy: 0.5595\n","Epoch 14/40\n","224/224 [==============================] - 15s 68ms/step - loss: 0.7840 - accuracy: 0.7139 - val_loss: 1.4090 - val_accuracy: 0.4940\n","Epoch 15/40\n","224/224 [==============================] - 15s 68ms/step - loss: 0.8506 - accuracy: 0.7040 - val_loss: 1.3641 - val_accuracy: 0.5143\n","Epoch 16/40\n","224/224 [==============================] - 15s 68ms/step - loss: 0.8029 - accuracy: 0.7003 - val_loss: 1.2704 - val_accuracy: 0.5514\n","Epoch 17/40\n","224/224 [==============================] - 15s 68ms/step - loss: 0.7862 - accuracy: 0.7120 - val_loss: 1.4451 - val_accuracy: 0.5082\n","Epoch 18/40\n","224/224 [==============================] - 15s 68ms/step - loss: 0.6646 - accuracy: 0.7563 - val_loss: 1.2965 - val_accuracy: 0.5651\n","Epoch 19/40\n","224/224 [==============================] - 15s 68ms/step - loss: 0.5569 - accuracy: 0.7991 - val_loss: 1.4262 - val_accuracy: 0.5185\n","Epoch 20/40\n","224/224 [==============================] - 15s 68ms/step - loss: 0.5883 - accuracy: 0.7915 - val_loss: 1.4070 - val_accuracy: 0.5403\n","Epoch 21/40\n","224/224 [==============================] - 15s 68ms/step - loss: 0.5785 - accuracy: 0.7961 - val_loss: 1.4105 - val_accuracy: 0.5302\n","Epoch 22/40\n","224/224 [==============================] - 15s 68ms/step - loss: 0.4426 - accuracy: 0.8458 - val_loss: 1.4367 - val_accuracy: 0.5626\n","Epoch 23/40\n","224/224 [==============================] - 15s 68ms/step - loss: 0.4491 - accuracy: 0.8429 - val_loss: 1.4068 - val_accuracy: 0.5715\n","Epoch 24/40\n","224/224 [==============================] - 15s 67ms/step - loss: 0.4635 - accuracy: 0.8407 - val_loss: 1.6768 - val_accuracy: 0.4926\n","Epoch 25/40\n","224/224 [==============================] - 15s 67ms/step - loss: 0.4564 - accuracy: 0.8423 - val_loss: 1.5844 - val_accuracy: 0.5411\n","Epoch 26/40\n","224/224 [==============================] - 15s 68ms/step - loss: 0.3562 - accuracy: 0.8734 - val_loss: 1.6430 - val_accuracy: 0.5469\n","Epoch 27/40\n","224/224 [==============================] - 15s 68ms/step - loss: 0.5482 - accuracy: 0.8148 - val_loss: 1.6565 - val_accuracy: 0.4935\n","Epoch 28/40\n","224/224 [==============================] - 15s 67ms/step - loss: 0.7281 - accuracy: 0.7435 - val_loss: 1.3964 - val_accuracy: 0.5612\n","Epoch 29/40\n","224/224 [==============================] - 15s 67ms/step - loss: 0.3388 - accuracy: 0.8850 - val_loss: 1.7486 - val_accuracy: 0.5238\n","Epoch 30/40\n","224/224 [==============================] - 15s 68ms/step - loss: 0.3095 - accuracy: 0.8937 - val_loss: 1.7633 - val_accuracy: 0.5294\n","Epoch 31/40\n","224/224 [==============================] - 15s 68ms/step - loss: 0.3147 - accuracy: 0.8900 - val_loss: 1.6207 - val_accuracy: 0.5545\n","Epoch 32/40\n","224/224 [==============================] - 15s 68ms/step - loss: 0.2868 - accuracy: 0.9020 - val_loss: 1.6932 - val_accuracy: 0.5762\n","Epoch 33/40\n","224/224 [==============================] - 15s 68ms/step - loss: 0.1794 - accuracy: 0.9384 - val_loss: 1.8635 - val_accuracy: 0.5341\n","Epoch 34/40\n","224/224 [==============================] - 15s 68ms/step - loss: 0.2227 - accuracy: 0.9218 - val_loss: 1.8302 - val_accuracy: 0.5478\n","Epoch 35/40\n","224/224 [==============================] - 15s 68ms/step - loss: 0.2504 - accuracy: 0.9155 - val_loss: 2.0784 - val_accuracy: 0.4762\n","Epoch 36/40\n","224/224 [==============================] - 15s 67ms/step - loss: 0.2819 - accuracy: 0.9091 - val_loss: 2.6809 - val_accuracy: 0.4494\n","Epoch 37/40\n","224/224 [==============================] - 15s 68ms/step - loss: 0.5118 - accuracy: 0.8267 - val_loss: 1.6180 - val_accuracy: 0.5589\n","Epoch 38/40\n","224/224 [==============================] - 15s 68ms/step - loss: 0.2514 - accuracy: 0.9115 - val_loss: 1.6419 - val_accuracy: 0.5943\n","Epoch 39/40\n","224/224 [==============================] - 15s 68ms/step - loss: 0.2060 - accuracy: 0.9310 - val_loss: 2.0296 - val_accuracy: 0.5391\n","Epoch 40/40\n","224/224 [==============================] - 15s 68ms/step - loss: 0.1378 - accuracy: 0.9550 - val_loss: 1.9516 - val_accuracy: 0.5893\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"trusted":true,"colab":{"base_uri":"https://localhost:8080/"},"id":"NePuvRn70qL0","executionInfo":{"status":"ok","timestamp":1610078326316,"user_tz":-420,"elapsed":622960,"user":{"displayName":"Le Pha","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjTPCEIVTOfRxHtgiERdHMyMsaddyg4etiFrgjR=s64","userId":"04535321801843814015"}},"outputId":"880093bd-61fd-4781-9b1a-dd8260b7178d"},"source":["model50.evaluate(X_processed_test,y_test_onehot)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["113/113 [==============================] - 2s 13ms/step - loss: 1.9862 - accuracy: 0.5793\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/plain":["[1.9862335920333862, 0.5792700052261353]"]},"metadata":{"tags":[]},"execution_count":32}]},{"cell_type":"code","metadata":{"id":"YvX0AIJUBCOP"},"source":[""],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"ipT0MKQnLk4G"},"source":[""]}]}

notebook-code/TN1_VGGFACE1_ferplus_RandomOverSampling.ipynb

+1
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)