Skip to content

Instantly share code, notes, and snippets.

@BenAji
Last active October 10, 2023 13:57
Show Gist options
  • Select an option

  • Save BenAji/d952a228d81b2e970f5544d7d31179b1 to your computer and use it in GitHub Desktop.

Select an option

Save BenAji/d952a228d81b2e970f5544d7d31179b1 to your computer and use it in GitHub Desktop.
vgg16- Traffic_densety.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "vgg16- Traffic_densety.ipynb",
"provenance": [],
"collapsed_sections": [],
"mount_file_id": "1jn4alJ4616Hvaz7L5ZPV1aG3KWrvaXYq",
"authorship_tag": "ABX9TyMWB6HKa6pENHKkIrfUxCfr",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"accelerator": "GPU"
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/BenAji/d952a228d81b2e970f5544d7d31179b1/vgg16-traffic_densety.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"id": "b2QBSlMrr-YD",
"outputId": "5b509805-8db3-4ab8-c7ff-12d7fff71461"
},
"source": [
"import tensorflow as tf\n",
"tf.__version__\n"
],
"execution_count": 121,
"outputs": [
{
"output_type": "execute_result",
"data": {
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
},
"text/plain": [
"'2.6.0'"
]
},
"metadata": {},
"execution_count": 121
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "eoCDmyA3sHAP"
},
"source": [
"from tensorflow.keras.layers import Input, Lambda, Dense, Flatten\n",
"from tensorflow.keras.models import Model\n",
"#from tensorflow.keras.applications.inception_v3 import InceptionV3\n",
"from tensorflow.keras.applications.vgg16 import VGG16\n",
"from tensorflow.keras.applications.vgg16 import preprocess_input\n",
"#from tensorflow.keras.applications.inception_v3 import preprocess_input\n",
"from tensorflow.keras.preprocessing import image\n",
"from tensorflow.keras.preprocessing.image import ImageDataGenerator,load_img\n",
"from tensorflow.keras.models import Sequential\n",
"#import re\n",
"import numpy as np\n",
"from matplotlib import pyplot as plt\n",
"\n",
"%matplotlib inline\n",
"import sklearn\n",
"from sklearn import metrics\n",
"from sklearn.metrics import confusion_matrix\n",
"from sklearn.metrics import plot_confusion_matrix\n",
"\n",
"#import pandas as pd\n",
"from glob import glob"
],
"execution_count": 122,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "CJlz29AusL7m"
},
"source": [
"IMAGE_SIZE =[224, 224]\n",
"\n",
"train_path='/content/drive/MyDrive/raw_imgs/train'\n",
"valid_path='/content/drive/MyDrive/raw_imgs/valid'"
],
"execution_count": 123,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "ja2JxxXeuJzm"
},
"source": [
"vgg = VGG16(input_shape=IMAGE_SIZE + [3], weights='imagenet', include_top=False)"
],
"execution_count": 124,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "E3iemH2EuWVS"
},
"source": [
"for layer in vgg.layers:\n",
" layer.trainable = False"
],
"execution_count": 125,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "OQs8y8oOuZ6j"
},
"source": [
" folders = glob('/content/drive/MyDrive/raw_imgs/train/*')"
],
"execution_count": 126,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "VPvK_Eu0xp4v",
"outputId": "dd462667-e497-463f-ed79-3c1311f143bf"
},
"source": [
"folders"
],
"execution_count": 127,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"['/content/drive/MyDrive/raw_imgs/train/high',\n",
" '/content/drive/MyDrive/raw_imgs/train/low']"
]
},
"metadata": {},
"execution_count": 127
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "DLHAU62Gugvx"
},
"source": [
"x = Flatten()(vgg.output)"
],
"execution_count": 128,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "K9PVpuoouh3s"
},
"source": [
"prediction = Dense(len(folders), activation='sigmoid')(x)"
],
"execution_count": 129,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "qeucQjkXuknT"
},
"source": [
"model = Model(inputs=vgg.input, outputs=prediction) "
],
"execution_count": 130,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "zvm0o7WLupNq",
"outputId": "1da37aa6-b3ee-43ff-d4ab-f784e138592d"
},
"source": [
"model.summary()\n"
],
"execution_count": 131,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Model: \"model_6\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"input_7 (InputLayer) [(None, 224, 224, 3)] 0 \n",
"_________________________________________________________________\n",
"block1_conv1 (Conv2D) (None, 224, 224, 64) 1792 \n",
"_________________________________________________________________\n",
"block1_conv2 (Conv2D) (None, 224, 224, 64) 36928 \n",
"_________________________________________________________________\n",
"block1_pool (MaxPooling2D) (None, 112, 112, 64) 0 \n",
"_________________________________________________________________\n",
"block2_conv1 (Conv2D) (None, 112, 112, 128) 73856 \n",
"_________________________________________________________________\n",
"block2_conv2 (Conv2D) (None, 112, 112, 128) 147584 \n",
"_________________________________________________________________\n",
"block2_pool (MaxPooling2D) (None, 56, 56, 128) 0 \n",
"_________________________________________________________________\n",
"block3_conv1 (Conv2D) (None, 56, 56, 256) 295168 \n",
"_________________________________________________________________\n",
"block3_conv2 (Conv2D) (None, 56, 56, 256) 590080 \n",
"_________________________________________________________________\n",
"block3_conv3 (Conv2D) (None, 56, 56, 256) 590080 \n",
"_________________________________________________________________\n",
"block3_pool (MaxPooling2D) (None, 28, 28, 256) 0 \n",
"_________________________________________________________________\n",
"block4_conv1 (Conv2D) (None, 28, 28, 512) 1180160 \n",
"_________________________________________________________________\n",
"block4_conv2 (Conv2D) (None, 28, 28, 512) 2359808 \n",
"_________________________________________________________________\n",
"block4_conv3 (Conv2D) (None, 28, 28, 512) 2359808 \n",
"_________________________________________________________________\n",
"block4_pool (MaxPooling2D) (None, 14, 14, 512) 0 \n",
"_________________________________________________________________\n",
"block5_conv1 (Conv2D) (None, 14, 14, 512) 2359808 \n",
"_________________________________________________________________\n",
"block5_conv2 (Conv2D) (None, 14, 14, 512) 2359808 \n",
"_________________________________________________________________\n",
"block5_conv3 (Conv2D) (None, 14, 14, 512) 2359808 \n",
"_________________________________________________________________\n",
"block5_pool (MaxPooling2D) (None, 7, 7, 512) 0 \n",
"_________________________________________________________________\n",
"flatten_6 (Flatten) (None, 25088) 0 \n",
"_________________________________________________________________\n",
"dense_6 (Dense) (None, 2) 50178 \n",
"=================================================================\n",
"Total params: 14,764,866\n",
"Trainable params: 50,178\n",
"Non-trainable params: 14,714,688\n",
"_________________________________________________________________\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "COqmHYbJvChK"
},
"source": [
"model.compile(\n",
" loss = 'categorical_crossentropy',\n",
" optimizer= 'Adam',\n",
" metrics=['accuracy']\n",
")"
],
"execution_count": 132,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "PDl8aGTLvJ5V"
},
"source": [
"from tensorflow.keras.preprocessing.image import ImageDataGenerator"
],
"execution_count": 133,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "advj3B6qvMQi"
},
"source": [
"train_datagen = ImageDataGenerator(rescale =1./255,\n",
" shear_range = 0.05,\n",
" zoom_range = 0.05,\n",
" horizontal_flip = True)\n",
"\n",
"test_datagen = ImageDataGenerator(rescale= 1./255)"
],
"execution_count": 134,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "1CmLRuCqwcoI",
"outputId": "4b5b97b0-74b8-414c-ad5d-3ad62ddb874c"
},
"source": [
"training_set = train_datagen.flow_from_directory('/content/drive/MyDrive/raw_imgs/train',\n",
" target_size =(224,224),\n",
" batch_size =16,\n",
" class_mode = 'categorical')"
],
"execution_count": 135,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Found 436 images belonging to 2 classes.\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Gty5mz9Hzh_F",
"outputId": "282cd81f-c1fe-4960-f2af-f9ef1a7ad0da"
},
"source": [
"test_set = test_datagen.flow_from_directory('/content/drive/MyDrive/raw_imgs/valid',\n",
" target_size = (224,224),\n",
" batch_size =32,\n",
" class_mode = 'categorical')"
],
"execution_count": 136,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Found 110 images belonging to 2 classes.\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "FqN52WlqwfSA",
"outputId": "e0dccd3a-6ee2-45ba-ca75-ebcbe487e31b"
},
"source": [
"r = model.fit_generator(\n",
" training_set,\n",
" validation_data=test_set,\n",
" epochs=20,\n",
" steps_per_epoch=len(training_set),\n",
" validation_steps= len(test_set)\n",
")"
],
"execution_count": 137,
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": [
"/usr/local/lib/python3.7/dist-packages/keras/engine/training.py:1972: UserWarning: `Model.fit_generator` is deprecated and will be removed in a future version. Please use `Model.fit`, which supports generators.\n",
" warnings.warn('`Model.fit_generator` is deprecated and '\n"
]
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/20\n",
"28/28 [==============================] - 12s 404ms/step - loss: 1.0447 - accuracy: 0.6445 - val_loss: 0.6683 - val_accuracy: 0.7545\n",
"Epoch 2/20\n",
"28/28 [==============================] - 11s 382ms/step - loss: 0.3416 - accuracy: 0.8394 - val_loss: 0.3517 - val_accuracy: 0.8273\n",
"Epoch 3/20\n",
"28/28 [==============================] - 11s 386ms/step - loss: 0.1710 - accuracy: 0.9450 - val_loss: 0.4329 - val_accuracy: 0.8000\n",
"Epoch 4/20\n",
"28/28 [==============================] - 11s 386ms/step - loss: 0.1394 - accuracy: 0.9679 - val_loss: 0.3359 - val_accuracy: 0.8364\n",
"Epoch 5/20\n",
"28/28 [==============================] - 11s 378ms/step - loss: 0.1034 - accuracy: 0.9702 - val_loss: 0.4290 - val_accuracy: 0.8455\n",
"Epoch 6/20\n",
"28/28 [==============================] - 11s 387ms/step - loss: 0.1045 - accuracy: 0.9702 - val_loss: 0.4723 - val_accuracy: 0.7909\n",
"Epoch 7/20\n",
"28/28 [==============================] - 11s 386ms/step - loss: 0.1048 - accuracy: 0.9679 - val_loss: 0.4546 - val_accuracy: 0.8091\n",
"Epoch 8/20\n",
"28/28 [==============================] - 11s 385ms/step - loss: 0.0600 - accuracy: 0.9885 - val_loss: 0.3287 - val_accuracy: 0.8545\n",
"Epoch 9/20\n",
"28/28 [==============================] - 11s 390ms/step - loss: 0.0356 - accuracy: 0.9977 - val_loss: 0.3593 - val_accuracy: 0.8636\n",
"Epoch 10/20\n",
"28/28 [==============================] - 11s 389ms/step - loss: 0.0301 - accuracy: 1.0000 - val_loss: 0.3359 - val_accuracy: 0.8636\n",
"Epoch 11/20\n",
"28/28 [==============================] - 11s 381ms/step - loss: 0.0271 - accuracy: 0.9977 - val_loss: 0.3248 - val_accuracy: 0.8818\n",
"Epoch 12/20\n",
"28/28 [==============================] - 11s 386ms/step - loss: 0.0239 - accuracy: 1.0000 - val_loss: 0.3347 - val_accuracy: 0.8727\n",
"Epoch 13/20\n",
"28/28 [==============================] - 11s 381ms/step - loss: 0.0204 - accuracy: 0.9977 - val_loss: 0.3418 - val_accuracy: 0.8818\n",
"Epoch 14/20\n",
"28/28 [==============================] - 11s 378ms/step - loss: 0.0182 - accuracy: 1.0000 - val_loss: 0.3471 - val_accuracy: 0.8818\n",
"Epoch 15/20\n",
"28/28 [==============================] - 11s 390ms/step - loss: 0.0153 - accuracy: 1.0000 - val_loss: 0.3579 - val_accuracy: 0.8545\n",
"Epoch 16/20\n",
"28/28 [==============================] - 11s 384ms/step - loss: 0.0152 - accuracy: 1.0000 - val_loss: 0.3356 - val_accuracy: 0.8818\n",
"Epoch 17/20\n",
"28/28 [==============================] - 11s 381ms/step - loss: 0.0127 - accuracy: 1.0000 - val_loss: 0.3363 - val_accuracy: 0.8818\n",
"Epoch 18/20\n",
"28/28 [==============================] - 11s 382ms/step - loss: 0.0121 - accuracy: 1.0000 - val_loss: 0.3642 - val_accuracy: 0.8545\n",
"Epoch 19/20\n",
"28/28 [==============================] - 11s 379ms/step - loss: 0.0096 - accuracy: 1.0000 - val_loss: 0.3421 - val_accuracy: 0.8818\n",
"Epoch 20/20\n",
"28/28 [==============================] - 11s 377ms/step - loss: 0.0095 - accuracy: 1.0000 - val_loss: 0.3443 - val_accuracy: 0.8909\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "Eu8_5EZM2tUc"
},
"source": [
"# create learning curves to evaluate model performance\n",
"import pandas as pd\n",
"history_frame = pd.DataFrame(r.history)"
],
"execution_count": 138,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 282
},
"id": "AHTn5C9627yr",
"outputId": "38fcb182-d515-40e7-910f-6cb92d62d487"
},
"source": [
"history_frame.loc[:, ['loss', 'val_loss']].plot()"
],
"execution_count": 139,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f15a41d9a50>"
]
},
"metadata": {},
"execution_count": 139
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 265
},
"id": "3xwmm7r62-j1",
"outputId": "82911f62-72ef-4b9a-cd70-c3cff34f0957"
},
"source": [
"history_frame.loc[:, ['accuracy', 'val_accuracy']].plot();"
],
"execution_count": 140,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "0B7hvcxB3cyf"
},
"source": [
""
],
"execution_count": 140,
"outputs": []
}
]
}
@BenAji
Copy link
Author

BenAji commented Oct 10, 2023

Benchmarking the Computer Vision Models to know which one performs best with traffic aerial images

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment