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",
"metadata": {
"colab": {},
"colab_type": "code",
"id": "8rckz3ZuGhIc",
"outputId": "6f615f06-759a-4eea-839e-658155df8d36"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Found 2 image links\n",
"Saved 2 images\n",
"Found 2 image links\n",
"Saved 2 images\n",
"Found 2 image links\n",
"Saved 2 images\n",
"Found 2 image links\n",
"Saved 2 images\n",
"Found 2 image links\n",
"ERROR - Could not save https://upload.wikimedia.org/wikipedia/commons/4/48/Angelina_Jolie_%2848462859552%29.jpg - cannot identify image file <_io.BytesIO object at 0x7f869f91d4d0>\n",
"Saved 1 images\n",
"Found 2 image links\n",
"Saved 2 images\n",
"Found 2 image links\n",
"Saved 2 images\n",
"Found 2 image links\n",
}
],
"from selenium import webdriver\n",
"from selenium.webdriver.firefox.options import Options\n",
"from Image_crawling import Image_crawling\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",
"download_folder = \"./brandnew_images/train/\"\n",
"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",
"# Set options\n",
"options = webdriver.FirefoxOptions()\n",
"options.add_argument('--headless')\n",
"# Create Driver\n",
"driver = webdriver.Firefox(options=options, executable_path=\"/usr/bin/geckodriver\")\n",
"# create instance of crawler\n",
"image_crawling = Image_crawling(driver, waittime=waittime)\n",
"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",
"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",
"\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",
"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"
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
" 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)"
"metadata": {},
"output_type": "execute_result"
}
],
"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",
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
"dir_iter[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": [
"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",
"metadata": {
"colab": {},
"colab_type": "code",
"id": "UuJV4JBKGhJO"
},
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
"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",
"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"
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
]
}
],
"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",
"metadata": {
"colab": {},
"colab_type": "code",
"id": "cytHiQUTGhJb"
},
"outputs": [],
"source": [
"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",
"metadata": {
"colab": {},
"colab_type": "code",
"id": "C7dCbyXPGhJg",
"outputId": "98b4085e-ed6d-43e2-831f-aec32161583f"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 6/24 [======>.......................] - ETA: 21s - loss: 2.0385 - accuracy: 0.1833"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/opt/conda/lib/python3.7/site-packages/PIL/Image.py:952: UserWarning: Palette images with Transparency expressed in bytes should be converted to RGBA images\n",
" \"Palette images with Transparency expressed in bytes should be \"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"21/24 [=========================>....] - ETA: 3s - loss: 2.0452 - accuracy: 0.1619WARNING:tensorflow:Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches (in this case, 480 batches). You may need to use the repeat() function when building your dataset.\n",
"24/24 [==============================] - 27s 1s/step - loss: 2.0452 - accuracy: 0.1619 - val_loss: 2.0012 - val_accuracy: 0.1571\n"
]
}
],
"source": [
"history = model_scratch.fit(\n",
" train_generator,\n",
" steps_per_epoch = num_train_images // batch_size,\n",
" epochs = 20,\n",
" validation_data = validation_generator,\n",
" validation_steps = num_valid_images // batch_size,\n",
" callbacks = [tensorboard_callback])"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {},
"colab_type": "code",
"id": "wt_ONw5PGhJm",
"outputId": "e75d8a73-da49-4dbe-ffcf-7cb316be39a2"
},
"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"
}
],
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
"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",
"# Load the TensorBoard notebook extension\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",
"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"
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"metadata": {},
"output_type": "execute_result"
}
],
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
"source": [
"from IPython.display import Image\n",
"Image(\"./Images/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",
"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",
]
},
{
"cell_type": "code",
"metadata": {
"colab": {},
"colab_type": "code",
"id": "eRes_n9BGhJ0"
},
"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",
"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",
"metadata": {
"colab": {},
"colab_type": "code",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"vgg16\"\n",
"_________________________________________________________________\n",
" Layer (type) Output Shape Param # \n",
"=================================================================\n",
" input_2 (InputLayer) [(None, 150, 150, 3)] 0 \n",
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
" \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"
]
}
],
]
},
{
"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",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Found 480 files belonging to 8 classes.\n",
"Found 80 files belonging to 8 classes.\n"
]
}
],
"from tensorflow.keras.utils import image_dataset_from_directory\n",
"train_dataset = image_dataset_from_directory(\n",
" './train',\n",
"validation_dataset = image_dataset_from_directory(\n",
" './validation',\n",
]
},
{
"cell_type": "code",
"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)"
]
},
"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",
"The extracted features are currently of shape `(samples, 5, 5, 512)`:"
]
},
{
"cell_type": "code",
"outputs": [
{
"data": {
"text/plain": [
"(480, 4, 4, 512)"
]
},
"metadata": {},
"output_type": "execute_result"
}
],
]
},
{
"cell_type": "markdown",
"And the labels are now referring to the order of the folders"
]
},
{
"cell_type": "code",
"outputs": [
{
"data": {
"text/plain": [
"(480, 8)"
]
},
"metadata": {},
"output_type": "execute_result"
}
],
]
},
{
"cell_type": "code",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(80, 4, 4, 512)\n",
"(80, 8)\n"
]
}
],
"print(val_features.shape)\n",
"print(val_labels.shape)"
]
},
{
"cell_type": "code",
"# Note the use of the Flatten\n",
"# 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",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model\"\n",
"_________________________________________________________________\n",
" Layer (type) Output Shape Param # \n",
"=================================================================\n",
" input_3 (InputLayer) [(None, 4, 4, 512)] 0 \n",
" \n",
"=================================================================\n",
"Total params: 2,099,464\n",
"Trainable params: 2,099,464\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
}
],
"model.summary()"
]
},
{
"cell_type": "code",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/30\n",
"15/15 [==============================] - 2s 104ms/step - loss: 45.7096 - accuracy: 0.3167 - val_loss: 27.5370 - val_accuracy: 0.4250\n",
"15/15 [==============================] - 1s 82ms/step - loss: 17.4056 - accuracy: 0.6062 - val_loss: 23.3888 - val_accuracy: 0.4250\n",
"15/15 [==============================] - 1s 97ms/step - loss: 10.0907 - accuracy: 0.7000 - val_loss: 27.9630 - val_accuracy: 0.4000\n",
"15/15 [==============================] - 1s 88ms/step - loss: 8.1440 - accuracy: 0.7729 - val_loss: 22.5127 - val_accuracy: 0.4625\n",
"15/15 [==============================] - 1s 79ms/step - loss: 5.6496 - accuracy: 0.8271 - val_loss: 29.9891 - val_accuracy: 0.4625\n",
"15/15 [==============================] - 1s 97ms/step - loss: 4.4128 - accuracy: 0.8562 - val_loss: 23.5226 - val_accuracy: 0.4625\n",
"15/15 [==============================] - 1s 85ms/step - loss: 4.9496 - accuracy: 0.8729 - val_loss: 23.6873 - val_accuracy: 0.5000\n",
"15/15 [==============================] - 1s 83ms/step - loss: 3.2162 - accuracy: 0.8667 - val_loss: 29.5564 - val_accuracy: 0.5250\n",
"15/15 [==============================] - 1s 96ms/step - loss: 2.5075 - accuracy: 0.9146 - val_loss: 26.9293 - val_accuracy: 0.4500\n",
"15/15 [==============================] - 1s 84ms/step - loss: 3.2294 - accuracy: 0.8917 - val_loss: 29.0235 - val_accuracy: 0.5375\n",
"15/15 [==============================] - 1s 82ms/step - loss: 2.2690 - accuracy: 0.9125 - val_loss: 28.3215 - val_accuracy: 0.4375\n",