Skip to content
Snippets Groups Projects
Jupyter Notebook Block 5 - Object Detection and Segmentation.ipynb 1.32 MiB
Newer Older
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "dWyPGNkCGhIX"
   },
   "source": [
    "# Part I : Create Your Own Dataset and Train it with ConvNets\n",
    "\n",
    "In this part of the notebook, you will set up your own dataset for image classification. Please specify \n",
    "under `queries` the image categories you are interested in. Under `limit` specify the number of images \n",
    "you want to download for each image category. \n",
    "\n",
    "You do not need to understand the class `simple_image_download`, just execute the cell after you have specified \n",
    "the download folder.\n"
   ]
  },
  {
   "cell_type": "code",
Simon van Hemert's avatar
Simon van Hemert committed
   "execution_count": 1,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "8rckz3ZuGhIc",
    "outputId": "6f615f06-759a-4eea-839e-658155df8d36"
   },
Simon van Hemert's avatar
Simon van Hemert committed
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Found 2 image links\n",
      "Saved 2 images\n",
      "Found 2 image links\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
      "Saved 2 images\n",
      "Found 2 image links\n",
      "Saved 2 images\n",
      "Found 2 image links\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
      "ERROR - Could not save https://upload.wikimedia.org/wikipedia/commons/thumb/c/c0/Robert_De_Niro_KVIFF_portrait.jpg/1200px-Robert_De_Niro_KVIFF_portrait.jpg - cannot identify image file <_io.BytesIO object at 0x7fae297b5770>\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
      "Saved 1 images\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
      "Found 2 image links\n",
      "Saved 2 images\n",
      "Found 2 image links\n",
      "Saved 2 images\n",
      "Found 2 image links\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
      "Saved 2 images\n",
      "Found 2 image links\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
      "Saved 2 images\n"
Simon van Hemert's avatar
Simon van Hemert committed
     ]
   "source": [
Simon van Hemert's avatar
Simon van Hemert committed
    "from selenium import webdriver\n",
    "from selenium.webdriver.firefox.options import Options\n",
    "from Image_crawling import Image_crawling\n",
    "\n",
    "# Specifiy the queries\n",
    "queries = [\"brad pitt\",\"johnny depp\", \"leonardo dicaprio\", \"robert de niro\", \"angelina jolie\", \"sandra bullock\", \"catherine deneuve\", \"marion cotillard\"]\n",
    "#queries = [\"Bart Simpson\",\"Homer Simpson\"]\n",
    "limit = 2\n",
Simon van Hemert's avatar
Simon van Hemert committed
    "download_folder = \"./brandnew_images/train/\"\n",
Simon van Hemert's avatar
Simon van Hemert committed
    "waittime = 0.1  # Time to wait between actions, depends on the number of pictures you want to crawl. More pictures means you need to wait longer for them to load. \n",
Simon van Hemert's avatar
Simon van Hemert committed
    "# Set options\n",
    "options = webdriver.FirefoxOptions()\n",
    "options.add_argument('--headless')\n",
Simon van Hemert's avatar
Simon van Hemert committed
    "# Create Driver\n",
    "driver = webdriver.Firefox(options=options, executable_path=\"/usr/bin/geckodriver\")\n",
Simon van Hemert's avatar
Simon van Hemert committed
    "# create instance of crawler\n",
    "image_crawling = Image_crawling(driver, waittime=waittime)\n",
Simon van Hemert's avatar
Simon van Hemert committed
    "# Find urls and download images\n",
Simon van Hemert's avatar
Simon van Hemert committed
    "for query in queries:\n",
    "    # Craws image urls:\n",
    "    image_urls = image_crawling.fetch_image_urls(query, limit)\n",
    "      \n",
    "    # download images\n",
    "    image_crawling.download_image(download_folder + query)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "CRHl9UX6GhIs"
   },
   "source": [
    "Please check carefully the downloaded images, there may be a lot of garbage! You definitely need to \n",
    "clean the data.\n",
    "\n",
    "In the following, you will apply data augmentation to your data set."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "3SX21FtcGhIu"
   },
   "outputs": [],
   "source": [
    "# General imports\n",
    "import tensorflow as tf\n",
    "tf.compat.v1.enable_eager_execution(\n",
    "    config=None, device_policy=None, execution_mode=None\n",
    ")\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
    "import os, datetime\n",
    "# Shortcuts to keras if (however from tensorflow)\n",
    "from tensorflow.keras.preprocessing.image import ImageDataGenerator\n",
    "from tensorflow.keras.models import Sequential\n",
    "from tensorflow.keras.layers import Conv2D, MaxPooling2D\n",
    "from tensorflow.keras.layers import Activation, Dropout, Flatten, Dense\n",
    "from tensorflow.keras.callbacks import TensorBoard \n",
    "\n",
    "# Shortcut for displaying images\n",
    "def plot_img(img):\n",
    "    plt.imshow(img, cmap='gray')\n",
    "    plt.axis(\"off\")\n",
    "    plt.show()\n",
    "    \n",
    "# The target image size can be fixed here (quadratic)\n",
    "# the ImageDataGenerator() automatically scales the images accordingly (aspect ratio is changed)\n",
    "image_size = 150"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "rN_Mp1rmGhI1",
    "outputId": "6417b1f9-e7d4-4d56-a213-191f9d17524a"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Found 420 images belonging to 8 classes.\n"
Mirko Birbaumer's avatar
Mirko Birbaumer committed
     "data": {
      "image/png": "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\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Class ImageDataGenerator() returns an iterator holding one batch of images\n",
    "# the constructor takes arguments defining the different image transformations\n",
    "# for augmentation purposes (rotation, x-/y-shift, intensity scaling - here 1./255 \n",
    "# to scale range to [0, 1], shear, zoom, flip, ... )\n",
    "\n",
    "class_names = [\"angelina jolie\", \"brad pitt\",\"catherine deneuve\" , \"johnny depp\",\"leonardo dicaprio\", \"marion cotillard\", \"robert de niro\",\"sandra bullock\"]\n",
    "\n",
    "\n",
    "\n",
    "train_datagen = ImageDataGenerator(\n",
    "        rotation_range=10,\n",
    "        width_shift_range=0.2,\n",
    "        height_shift_range=0.2,\n",
    "        rescale=1./255,\n",
    "        shear_range=0.2,\n",
    "        zoom_range=0.2,\n",
    "        horizontal_flip=True,\n",
    "        fill_mode='nearest')\n",
    "\n",
    "\n",
    "dir_iter = train_datagen.flow_from_directory('./train/', \n",
    "                                         target_size=(image_size, image_size),\n",
    "                                         classes=class_names,\n",
    "                                         batch_size=25, class_mode='sparse', shuffle=False)\n",
    "\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
    "plot_img(dir_iter[0][0][1,...])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "V2fYccc8GhJF"
   },
   "source": [
    "Before you continue, you need to split the downloaded images into a `train` folder and into a `validation` folder."
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {
    "colab_type": "raw",
    "id": "VamXG4FoGhJH"
   },
   "source": [
    "./\n",
    "├── train\n",
    "│   ├── brad pitt\n",
    "│   └── johnny deep\n",
    "|   ├── leonardo di caprio\n",
    "|   └── ...\n",
    "│       \n",
    "└── validation\n",
    "    ├── brad pitt\n",
    "    ├── johnny deep\n",
    "    ├── leonardo di caprio\n",
    "    └── ..."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "9322su6vGhJJ"
   },
   "source": [
Simon van Hemert's avatar
Simon van Hemert committed
    "If you want to use the example of this jupyter notebook, you can use the images provided in the ./train and ./validation folders."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "xPqJWgeAGhJL"
   },
   "source": [
    "## Define a ConvNet Model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "UuJV4JBKGhJO"
   },
   "outputs": [],
   "source": [
    "batch_size = 20\n",
    "num_train_images = 480\n",
    "num_valid_images = 80\n",
    "num_classes = 8\n",
    "\n",
    "model_scratch = Sequential()\n",
    "model_scratch.add(Conv2D(32, (3, 3), input_shape=(image_size, image_size, 3)))\n",
    "model_scratch.add(Activation('relu'))\n",
    "model_scratch.add(MaxPooling2D(pool_size=(2, 2)))\n",
    "\n",
    "model_scratch.add(Conv2D(32, (3, 3)))\n",
    "model_scratch.add(Activation('relu'))\n",
    "model_scratch.add(MaxPooling2D(pool_size=(2, 2)))\n",
    "\n",
    "model_scratch.add(Conv2D(64, (3, 3)))\n",
    "model_scratch.add(Activation('relu'))\n",
    "model_scratch.add(MaxPooling2D(pool_size=(2, 2)))\n",
    "\n",
    "# this converts our 3D feature maps to 1D feature vectors\n",
    "model_scratch.add(Flatten())  \n",
    "model_scratch.add(Dense(64))\n",
    "model_scratch.add(Activation('relu'))\n",
    "model_scratch.add(Dropout(0.5))\n",
    "model_scratch.add(Dense(num_classes))\n",
    "model_scratch.add(Activation('softmax'))\n",
    "\n",
    "model_scratch.compile(loss='categorical_crossentropy',\n",
    "              optimizer='adam',\n",
    "              metrics=['accuracy'])\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "JFdkIokMGhJT",
    "outputId": "63e7d032-4083-4fe0-d970-c10bf0c39a94"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Found 420 images belonging to 8 classes.\n",
      "Found 70 images belonging to 8 classes.\n"
     ]
    }
   ],
   "source": [
    "# This is the augmentation configuration we will use for training\n",
    "train_datagen = ImageDataGenerator(\n",
    "        rescale=1./255,\n",
    "        shear_range=0.2,\n",
    "        zoom_range=0.2,\n",
    "        horizontal_flip=True)\n",
    "\n",
    "# This is the augmentation configuration we will use for validation:\n",
    "# only rescaling\n",
    "validation_datagen = ImageDataGenerator(rescale=1./255)\n",
    "\n",
    "# This is a generator that will read pictures found in\n",
    "# subfolers of './train', and indefinitely generate\n",
    "# batches of augmented image data\n",
    "train_generator = train_datagen.flow_from_directory(\n",
    "        './train',  # this is the target directory\n",
    "        target_size=(image_size, image_size),  # all images will be resized to 150x150\n",
    "        classes=class_names,\n",
    "        batch_size=batch_size)  \n",
    "\n",
    "# This is a similar generator, for validation data\n",
    "validation_generator = validation_datagen.flow_from_directory(\n",
    "        './validation',\n",
    "        target_size = (image_size, image_size),\n",
    "        classes = class_names,\n",
    "        batch_size = batch_size)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "cytHiQUTGhJb"
   },
   "outputs": [],
   "source": [
Mirko Birbaumer's avatar
Mirko Birbaumer committed
    "logdir = os.path.join(\"logs\", datetime.datetime.now().strftime(\"%Y%m%d-%H%M%S\"))\n",
    "tensorboard_callback = tf.keras.callbacks.TensorBoard(logdir, histogram_freq=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "C7dCbyXPGhJg",
    "outputId": "98b4085e-ed6d-43e2-831f-aec32161583f"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/20\n",
      "21/21 [==============================] - 7s 306ms/step - loss: 2.0885 - accuracy: 0.1262 - val_loss: 1.9665 - val_accuracy: 0.2000\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
      "Epoch 2/20\n",
      "21/21 [==============================] - 6s 285ms/step - loss: 1.9984 - accuracy: 0.1738 - val_loss: 1.9472 - val_accuracy: 0.2714\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
      "Epoch 3/20\n",
      "21/21 [==============================] - 6s 290ms/step - loss: 1.9498 - accuracy: 0.2143 - val_loss: 1.7938 - val_accuracy: 0.3571\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
      "Epoch 4/20\n",
      "21/21 [==============================] - 6s 292ms/step - loss: 1.8720 - accuracy: 0.2571 - val_loss: 1.6480 - val_accuracy: 0.3714\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
      "Epoch 5/20\n",
      "21/21 [==============================] - 6s 294ms/step - loss: 1.7373 - accuracy: 0.3071 - val_loss: 1.5296 - val_accuracy: 0.3714\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
      "Epoch 6/20\n",
      "21/21 [==============================] - 6s 298ms/step - loss: 1.6746 - accuracy: 0.3262 - val_loss: 1.4689 - val_accuracy: 0.4857\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
      "Epoch 7/20\n",
      "21/21 [==============================] - 6s 269ms/step - loss: 1.5790 - accuracy: 0.3786 - val_loss: 1.4480 - val_accuracy: 0.4571\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
      "Epoch 8/20\n",
      "21/21 [==============================] - 6s 271ms/step - loss: 1.5066 - accuracy: 0.4024 - val_loss: 1.3394 - val_accuracy: 0.5143\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
      "Epoch 9/20\n",
      "21/21 [==============================] - 6s 273ms/step - loss: 1.5292 - accuracy: 0.4214 - val_loss: 1.2919 - val_accuracy: 0.5286\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
      "Epoch 10/20\n",
      "21/21 [==============================] - 6s 289ms/step - loss: 1.4593 - accuracy: 0.4214 - val_loss: 1.4683 - val_accuracy: 0.4286\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
      "Epoch 11/20\n",
      "21/21 [==============================] - 6s 288ms/step - loss: 1.4929 - accuracy: 0.4405 - val_loss: 1.3502 - val_accuracy: 0.4714\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
      "Epoch 12/20\n",
      "21/21 [==============================] - 6s 284ms/step - loss: 1.3252 - accuracy: 0.4667 - val_loss: 1.3498 - val_accuracy: 0.5429\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
      "Epoch 13/20\n",
      "21/21 [==============================] - 6s 301ms/step - loss: 1.3037 - accuracy: 0.4786 - val_loss: 1.3477 - val_accuracy: 0.4857\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
      "Epoch 14/20\n",
      "21/21 [==============================] - 6s 285ms/step - loss: 1.2823 - accuracy: 0.4952 - val_loss: 1.3954 - val_accuracy: 0.5143\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
      "Epoch 15/20\n",
      "21/21 [==============================] - 6s 277ms/step - loss: 1.3229 - accuracy: 0.4738 - val_loss: 1.3522 - val_accuracy: 0.4714\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
      "Epoch 16/20\n",
      "21/21 [==============================] - 6s 266ms/step - loss: 1.2398 - accuracy: 0.5095 - val_loss: 1.3212 - val_accuracy: 0.4857\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
      "Epoch 17/20\n",
      "21/21 [==============================] - 6s 275ms/step - loss: 1.1783 - accuracy: 0.5714 - val_loss: 1.3451 - val_accuracy: 0.5286\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
      "Epoch 18/20\n",
      "21/21 [==============================] - 6s 276ms/step - loss: 1.1516 - accuracy: 0.5357 - val_loss: 1.3049 - val_accuracy: 0.5714\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
      "Epoch 19/20\n",
      "21/21 [==============================] - 6s 269ms/step - loss: 1.1335 - accuracy: 0.5738 - val_loss: 1.2275 - val_accuracy: 0.5286\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
      "Epoch 20/20\n",
      "21/21 [==============================] - 6s 274ms/step - loss: 1.1489 - accuracy: 0.5452 - val_loss: 1.2404 - val_accuracy: 0.5571\n"
     ]
    }
   ],
   "source": [
    "history = model_scratch.fit(\n",
Simon van Hemert's avatar
Simon van Hemert committed
    "    train_generator,\n",
    "    epochs = 20,\n",
    "    validation_data = validation_generator,\n",
    "    callbacks = [tensorboard_callback])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "wt_ONw5PGhJm",
    "outputId": "e75d8a73-da49-4dbe-ffcf-7cb316be39a2"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(history.history['accuracy'])\n",
    "plt.plot(history.history['val_accuracy'])\n",
    "plt.title('model accuracy')\n",
    "plt.ylabel('accuracy')\n",
    "plt.xlabel('epoch')\n",
    "plt.legend(['train', 'valid'], loc='lower right')\n",
    "plt.show()\n",
    "plt.plot(history.history['loss'])\n",
    "plt.plot(history.history['val_loss'])\n",
    "plt.title('model loss')\n",
    "plt.ylabel('loss')\n",
    "plt.xlabel('epoch')\n",
    "plt.legend(['train', 'valid'], loc='upper right')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Tensorboard"
   ]
  },
  {
   "cell_type": "code",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
   "execution_count": null,
   "metadata": {},
Mirko Birbaumer's avatar
Mirko Birbaumer committed
   "outputs": [],
   "source": [
Mirko Birbaumer's avatar
Mirko Birbaumer committed
    "# Load the TensorBoard notebook extension on google colab\n",
    "%load_ext tensorboard\n",
    "\n",
    "os.makedirs(logdir, exist_ok=True)\n",
    "%tensorboard --logdir logs"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "Y8oAT4oUGhJs"
   },
   "source": [
    "# Part II : Transfer Learning\n",
    "\n",
    "\n",
    "Having to train an image-classification model using very little data is a common situation,\n",
    "which you’ll likely encounter in practice if you ever do computer vision in a\n",
    "professional context. A “few” samples can mean anywhere from a few hundred to a\n",
    "few tens of thousands of images. As a practical example, we’ll focus on classifying\n",
    "560 images belongig to 8 actors. We’ll use 480 pictures for training, and 80 for validation.\n",
    "\n",
    "## 2.1 Feature Extraction with a Pretrained Model\n",
    "Feature extraction consists of using the representations learned by a previously\n",
    "trained model to extract interesting features from new samples. These features are\n",
    "then run through a new classifier, which is trained from scratch.\n",
    "As you saw previously, ConvNets used for image classification comprise two parts:\n",
    "they start with a series of pooling and convolution layers, and they end with a densely\n",
    "connected classifier. The first part is called the _convolutional base_ of the model. In the\n",
    "case of convnets, feature extraction consists of taking the convolutional base of a previously\n",
    "trained network, running the new data through it, and training a new classifier\n",
    "on top of the output.\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
Mirko Birbaumer's avatar
Mirko Birbaumer committed
   "outputs": [],
   "source": [
    "# General imports\n",
    "import tensorflow as tf\n",
    "tf.compat.v1.enable_eager_execution(\n",
    "    config=None, device_policy=None, execution_mode=None\n",
    ")\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import os, datetime\n",
    "\n",
    "# Shortcuts to keras if (however from tensorflow)\n",
    "from tensorflow import keras\n",
    "from tensorflow.keras.preprocessing.image import ImageDataGenerator\n",
    "from tensorflow.keras.models import Sequential\n",
    "from tensorflow.keras.layers import Conv2D, MaxPooling2D\n",
    "from tensorflow.keras.layers import Activation, Dropout, Flatten, Dense\n",
    "from tensorflow.keras.callbacks import TensorBoard \n",
    "from tensorflow.keras import layers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from IPython.display import Image\n",
    "Image(\"./Bilder/feature_extraction.png\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Why only reuse the convolutional base? Could we reuse the densely connected\n",
    "classifier as well? In general, doing so should be avoided. The reason is that the representations\n",
    "learned by the convolutional base are likely to be more generic and, therefore,\n",
    "more reusable: the feature maps of a ConvNet are presence maps of generic\n",
    "concepts over a picture, which are likely to be useful regardless of the computer vision\n",
    "problem at hand. But the representations learned by the classifier will necessarily be\n",
    "specific to the set of classes on which the model was trained—they will only contain\n",
    "information about the presence probability of this or that class in the entire picture.\n",
    "Additionally, representations found in densely connected layers no longer contain any information about where objects are located in the input image; these layers get rid of\n",
    "the notion of space, whereas the object location is still described by convolutional feature\n",
    "maps. For problems where object location matters, densely connected features\n",
    "are largely useless.\n",
    "\n",
    "\n",
    "Note that the level of generality (and therefore reusability) of the representations\n",
    "extracted by specific convolution layers depends on the depth of the layer in the\n",
    "model. Layers that come earlier in the model extract local, highly generic feature\n",
    "maps (such as visual edges, colors, and textures), whereas layers that are higher up\n",
    "extract more-abstract concepts (such as “cat ear” or “dog eye”). So if your new dataset\n",
    "differs a lot from the dataset on which the original model was trained, you may be better\n",
    "off using only the first few layers of the model to do feature extraction, rather than\n",
    "using the entire convolutional base.\n",
    "\n",
    "\n",
    "\n",
    "In this case, because the ImageNet class set does not contain images of actors, we’ll \n",
    "choose not to use the densely connected layers, in order to cover\n",
    "the more general case where the class set of the new problem doesn’t overlap the\n",
    "class set of the original model. Let’s put this into practice by using the convolutional\n",
    "base of the VGG16 network, trained on ImageNet, to extract interesting features\n",
    "from actors, and then train a classifier for the 8 actors on top of\n",
    "these features.\n",
    "\n",
    "The VGG16 model, among others, comes prepackaged with Keras. You can import\n",
    "it from the `keras.applications` module. Many other image-classification models (all\n",
    "pretrained on the ImageNet dataset) are available as part of `keras.applications`:\n",
    "\n",
    "\n",
    "-  Xception\n",
    "-  ResNet\n",
    "-  MobileNet\n",
    "-  EfficientNet\n",
    "-  DenseNet\n",
    "-  etc.\n",
    "\n",
    "Let's instantiate the VGG16 model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "4Luec7pbGhJv",
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "# The target image size can be fixed here (quadratic)\n",
    "# The ImageDataGenerator() automatically scales the images accordingly (aspect ratio is changed)\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
    "image_size = 150"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "eRes_n9BGhJ0"
   },
   "outputs": [],
   "source": [
    "conv_base = keras.applications.vgg16.VGG16(weights=\"imagenet\",\n",
    "                                           include_top=False,\n",
    "                                           input_shape=(image_size, image_size, 3))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "vEIWLeqSGhJ5"
   },
   "source": [
    "You pass three arguments to the constructor:\n",
    "\n",
    "- `weights` specifies the weight checkpoint from which to initialize the model.\n",
    "\n",
    "- `include_top` refers to including (or not) the densely connected classifier on\n",
    "top of the network. By default, this densely connected classifier corresponds to\n",
    "the 1'000 classes from ImageNet. Because we intend to use our own densely\n",
    "connected classifier (with 8 classes of actors), we don’t need to\n",
    "include it.\n",
    "- `input_shape` is the shape of the image tensors that we’ll feed to the network.\n",
    "This argument is purely optional: if we don’t pass it, the network will be able to\n",
    "process inputs of any size. Here we pass it so that we can visualize (in the following\n",
    "summary) how the size of the feature maps shrinks with each new convolution\n",
    "and pooling layer."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here’s the detail of the architecture of the VGG16 convolutional base. It’s similar to\n",
    "the simple convnets you’re already familiar with:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "M7Bk7t1MGhJ6"
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"vgg16\"\n",
      "_________________________________________________________________\n",
      " Layer (type)                Output Shape              Param #   \n",
      "=================================================================\n",
      " input_8 (InputLayer)        [(None, 150, 150, 3)]     0         \n",
      "                                                                 \n",
      " block1_conv1 (Conv2D)       (None, 150, 150, 64)      1792      \n",
      "                                                                 \n",
      " block1_conv2 (Conv2D)       (None, 150, 150, 64)      36928     \n",
      "                                                                 \n",
      " block1_pool (MaxPooling2D)  (None, 75, 75, 64)        0         \n",
      "                                                                 \n",
      " block2_conv1 (Conv2D)       (None, 75, 75, 128)       73856     \n",
      "                                                                 \n",
      " block2_conv2 (Conv2D)       (None, 75, 75, 128)       147584    \n",
      "                                                                 \n",
      " block2_pool (MaxPooling2D)  (None, 37, 37, 128)       0         \n",
      "                                                                 \n",
      " block3_conv1 (Conv2D)       (None, 37, 37, 256)       295168    \n",
      "                                                                 \n",
      " block3_conv2 (Conv2D)       (None, 37, 37, 256)       590080    \n",
      "                                                                 \n",
      " block3_conv3 (Conv2D)       (None, 37, 37, 256)       590080    \n",
      "                                                                 \n",
      " block3_pool (MaxPooling2D)  (None, 18, 18, 256)       0         \n",
      "                                                                 \n",
      " block4_conv1 (Conv2D)       (None, 18, 18, 512)       1180160   \n",
      "                                                                 \n",
      " block4_conv2 (Conv2D)       (None, 18, 18, 512)       2359808   \n",
      "                                                                 \n",
      " block4_conv3 (Conv2D)       (None, 18, 18, 512)       2359808   \n",
      "                                                                 \n",
      " block4_pool (MaxPooling2D)  (None, 9, 9, 512)         0         \n",
      "                                                                 \n",
      " block5_conv1 (Conv2D)       (None, 9, 9, 512)         2359808   \n",
      "                                                                 \n",
      " block5_conv2 (Conv2D)       (None, 9, 9, 512)         2359808   \n",
      "                                                                 \n",
      " block5_conv3 (Conv2D)       (None, 9, 9, 512)         2359808   \n",
      "                                                                 \n",
      " block5_pool (MaxPooling2D)  (None, 4, 4, 512)         0         \n",
      "                                                                 \n",
      "=================================================================\n",
      "Total params: 14,714,688\n",
      "Trainable params: 14,714,688\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "conv_base.summary()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "DBSrhVORGhKH"
   },
   "source": [
    "\n",
    "The final feature map (output volume) has shape $(5, 5, 512)$. That's the feature on top of which we will stick a densely connected classifier.\n",
    "\n",
    "At this point, there are two ways how we could proceed:\n",
    "\n",
    "- __Approach 1__: Run the convolutional base over our dataset, record its output to a NumPy array\n",
    "on disk, and then use this data as input to a standalone, densely connected classifier\n",
    "similar to those you saw in Block 4 of this course. This solution is fast and\n",
    "cheap to run, because it only requires running the convolutional base once for\n",
    "every input image, and the convolutional base is by far the most expensive part\n",
    "of the pipeline. But for the same reason, this technique won’t allow us to use\n",
    "data augmentation.\n",
    "\n",
    "- __Approach 2__: Extend the model we have (`conv_base`) by adding `Dense` layers on top, and run\n",
    "the whole thing from end to end on the input data. This will allow us to use\n",
    "data augmentation, because every input image goes through the convolutional\n",
    "base every time it’s seen by the model. But for the same reason, this technique is\n",
    "far more expensive than the first.\n",
    "We’ll cover both techniques. Let’s walk through the code required to set up the first\n",
    "one: recording the output of `conv_base` on our data and using these outputs as inputs\n",
    "to a new model."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "mlpIDmSCGhKI"
   },
   "source": [
    "### 1. Approach : Fast feature extraction without data augmentation\n",
    "We’ll start by extracting features as NumPy arrays by calling the `predict()` method of\n",
    "the `conv_base` model on our training, and validation datasets.\n",
    "Let’s iterate over our datasets to extract the VGG16 features."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Found 480 files belonging to 8 classes.\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
      "Found 80 files belonging to 8 classes.\n"
   "source": [
    "from tensorflow.keras.utils import image_dataset_from_directory\n",
    "train_dataset = image_dataset_from_directory(\n",
    "    './train',\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
    "    image_size=(150, 150),\n",
    "    batch_size=32,\n",
    "    shuffle=False,\n",
    "    label_mode=\"categorical\")\n",
    "validation_dataset = image_dataset_from_directory(\n",
    "    './validation',\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
    "    image_size=(150, 150),\n",
    "    batch_size=32,\n",
    "    shuffle=False,\n",
    "    label_mode=\"categorical\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "def get_features_and_labels(dataset):\n",
    "    all_features = []\n",
    "    all_labels = []\n",
    "    for images, labels in dataset:\n",
    "        preprocessed_images = keras.applications.vgg16.preprocess_input(images)\n",
    "        features = conv_base.predict(preprocessed_images)\n",
    "        all_features.append(features)\n",
    "        all_labels.append(labels)\n",
    "    return np.concatenate(all_features), np.concatenate(all_labels)\n",
    "train_features, train_labels = get_features_and_labels(train_dataset)\n",
    "val_features, val_labels = get_features_and_labels(validation_dataset)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Importantly, `predict()` only expects images, not labels, but our current dataset yields\n",
    "batches that contain both images and their labels. Moreover, the VGG16 model expects\n",
    "inputs that are preprocessed with the function `keras.applications.vgg16.preprocess_input`, which scales pixel values to an appropriate range.\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
    "The extracted features are currently of shape `(samples, 4, 4, 512)`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(480, 4, 4, 512)"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_features.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And the labels are now referring to the order of the folders"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(480, 8)"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_labels.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
Mirko Birbaumer's avatar
Mirko Birbaumer committed
      "(80, 4, 4, 512)\n",
      "(80, 8)\n"
   "source": [
    "print(val_features.shape)\n",
    "print(val_labels.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [],
   "source": [
Mirko Birbaumer's avatar
Mirko Birbaumer committed
    "inputs = keras.Input(shape=(4, 4, 512))\n",
Mirko Birbaumer's avatar
Mirko Birbaumer committed
    "# Note the use of the Flatten layer before passing the\n",
    "# features to a Dense layer\n",
    "x = layers.Flatten()(inputs)\n",
    "x = layers.Dense(256)(x)\n",
    "x = layers.Dropout(0.7)(x)\n",
    "outputs = layers.Dense(8, activation=\"softmax\")(x)\n",
    "model = keras.Model(inputs, outputs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"model_3\"\n",
      "_________________________________________________________________\n",
      " Layer (type)                Output Shape              Param #   \n",
      "=================================================================\n",
      " input_9 (InputLayer)        [(None, 4, 4, 512)]       0         \n",
      " flatten_6 (Flatten)         (None, 8192)              0         \n",
      " dense_12 (Dense)            (None, 256)               2097408   \n",
      " dropout_6 (Dropout)         (None, 256)               0         \n",
      " dense_13 (Dense)            (None, 8)                 2056      \n",
      "                                                                 \n",
      "=================================================================\n",
      "Total params: 2,099,464\n",
      "Trainable params: 2,099,464\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/30\n",
      "15/15 [==============================] - 1s 46ms/step - loss: 42.8625 - accuracy: 0.3500 - val_loss: 15.6536 - val_accuracy: 0.4625\n",
      "Epoch 2/30\n",
      "15/15 [==============================] - 1s 35ms/step - loss: 17.1892 - accuracy: 0.6083 - val_loss: 21.8502 - val_accuracy: 0.4125\n",
      "Epoch 3/30\n",
      "15/15 [==============================] - 1s 47ms/step - loss: 8.7772 - accuracy: 0.7167 - val_loss: 19.9887 - val_accuracy: 0.5000\n",
      "Epoch 4/30\n",
      "15/15 [==============================] - 1s 41ms/step - loss: 6.2434 - accuracy: 0.8000 - val_loss: 17.7987 - val_accuracy: 0.4875\n",
      "Epoch 5/30\n",
      "15/15 [==============================] - 1s 42ms/step - loss: 5.6720 - accuracy: 0.8250 - val_loss: 28.0569 - val_accuracy: 0.4750\n",
      "Epoch 6/30\n",
      "15/15 [==============================] - 1s 35ms/step - loss: 6.5725 - accuracy: 0.8208 - val_loss: 21.5370 - val_accuracy: 0.5000\n",
      "Epoch 7/30\n",
      "15/15 [==============================] - 1s 38ms/step - loss: 3.9265 - accuracy: 0.8458 - val_loss: 22.9832 - val_accuracy: 0.5125\n",
      "Epoch 8/30\n",
      "15/15 [==============================] - 1s 42ms/step - loss: 2.6559 - accuracy: 0.8958 - val_loss: 35.3841 - val_accuracy: 0.3875\n",