﻿1
00:00:00,420 --> 00:00:04,560
‫In this video, we're going to create our first CNN model.

2
00:00:05,640 --> 00:00:11,370
‫For dog and cat dataset that we discussed in our last lecture.

3
00:00:13,240 --> 00:00:16,870
‫We have our data in the form of JPEG images.

4
00:00:17,740 --> 00:00:24,400
‫You can download this images from the links that we have provided in the resources section of this video.

5
00:00:26,290 --> 00:00:35,560
‫Once you download the zip file and expect that you will get three folders,test train & validation.

6
00:00:37,620 --> 00:00:42,540
‫Each of these folders contain two sub folders, cats and dogs.

7
00:00:44,010 --> 00:00:51,560
‫And in this folders, you can find the images of cats and dogs that we are going to use for our model

8
00:00:51,560 --> 00:00:51,810
‫.

9
00:00:54,080 --> 00:01:02,090
‫One thing you can straightaway notice is that the dimensions of this images are not standardized.

10
00:01:02,900 --> 00:01:05,420
‫So you can see this is a portrait image.

11
00:01:06,980 --> 00:01:08,790
‫And this is a landscape image.

12
00:01:09,410 --> 00:01:12,020
‫So we have to resize over images as well.

13
00:01:13,720 --> 00:01:16,690
‫Now we have around 4000 different images.

14
00:01:17,380 --> 00:01:20,590
‫We will use 2000 images for training.

15
00:01:21,870 --> 00:01:29,520
‫We will take out 1000 images for our testing purpose, and we will take another 1000 images

16
00:01:29,730 --> 00:01:31,320
‫for our validation data set.

17
00:01:34,560 --> 00:01:43,380
‫Now, before starting, we will save the location of this folders in three variables that are train

18
00:01:43,390 --> 00:01:46,520
‫directory validation directory and test directory.

19
00:01:47,600 --> 00:01:48,380
‫So just.

20
00:01:50,000 --> 00:01:50,400
‫Copy.

21
00:01:50,480 --> 00:01:52,640
‫The address of this folders

22
00:01:54,480 --> 00:01:58,170
‫And save it and this three different variables.

23
00:01:59,790 --> 00:02:05,970
‫Now, if you are coping, you will get backward slash instead of forward slashes.

24
00:02:06,820 --> 00:02:12,550
‫So just remember to put R before pasting this folder addresses.

25
00:02:15,350 --> 00:02:22,340
‫So we have saved addresses of all these folders into three different variables, train directory

26
00:02:22,360 --> 00:02:24,770
‫validation directory and test directory.

27
00:02:31,940 --> 00:02:37,280
‫Now we have to convert this picture images in the form of values.

28
00:02:39,670 --> 00:02:48,110
‫The first step to do this is to read the picture fine, then decode the JPEG, conted to rgb grids

29
00:02:48,130 --> 00:02:48,730
‫of pixel.

30
00:02:49,090 --> 00:02:52,390
‫So we want three channels red, blue and green.

31
00:02:55,090 --> 00:03:03,070
‫Then we need to convert this RGB floating point values and what value between zero and one.

32
00:03:05,520 --> 00:03:11,790
‫So to do all these steps we will use keras image data generator module.

33
00:03:15,280 --> 00:03:20,860
‫This module have functions to perform, all these steps using the single function.

34
00:03:23,180 --> 00:03:23,630
‫so

35
00:03:24,840 --> 00:03:26,880
‫Let's just import image data generator.

36
00:03:26,970 --> 00:03:27,780
‫module

37
00:03:31,280 --> 00:03:33,560
‫Now, there are two parts of this.

38
00:03:33,650 --> 00:03:35,240
‫image data  generator module.

39
00:03:36,820 --> 00:03:44,380
‫First is to get the image and then the second part is to rescale that image.

40
00:03:45,970 --> 00:03:54,610
‫You can feel the images from directly from numpy array or from any other source here.

41
00:03:55,270 --> 00:04:01,510
‫In our case, we want our images to directly feed it from a directory or a folder.

42
00:04:02,740 --> 00:04:07,470
‫So we will be using flow from directory method of image data generator

43
00:04:09,810 --> 00:04:16,410
‫So I have created this train data gen Object from image data generator.

44
00:04:17,100 --> 00:04:17,760
‫And here.

45
00:04:18,830 --> 00:04:25,430
‫As an argument, we are providing the rescaling value to be weighed RGB values by 255.

46
00:04:26,480 --> 00:04:35,300
‫Our RGB values lies between zero to 255 and to convert them and to zero to one interval, we have to

47
00:04:35,300 --> 00:04:37,190
‫divide that by 255.

48
00:04:39,310 --> 00:04:47,460
‫So first, we are creating an object with data generator function with rescaling value of one divided by 255.

49
00:04:49,660 --> 00:04:52,140
‫Then we are using flow from directory method

50
00:04:52,270 --> 00:04:55,600
‫Since our data is in the form of folders or directories.

51
00:04:57,560 --> 00:05:04,900
‫Then we are creating two different generators, one for our train data and another one for our valuation

52
00:05:04,910 --> 00:05:05,260
‫data.

53
00:05:06,550 --> 00:05:10,140
‫For train data, first we have to mention the train directory.

54
00:05:10,770 --> 00:05:16,810
‫We have already saved the information of our train directory address in this train directory variable.

55
00:05:17,670 --> 00:05:22,230
‫So first parameter here is our variable, which contains the directory name.

56
00:05:23,220 --> 00:05:28,920
‫Then the second parameter here is the size of images that we want.

57
00:05:30,720 --> 00:05:40,170
‫So since our image sizes are not centralized, we are a serializing it using the target size of 150

58
00:05:40,200 --> 00:05:41,670
‫by 150 pixels.

59
00:05:42,580 --> 00:05:46,750
‫So all of our images are going to convert in this size.

60
00:05:50,270 --> 00:05:55,010
‫Now, we have to mention the batch size that we are going to use in our model.

61
00:05:55,880 --> 00:06:00,530
‫So earlier, if you remember last time we were using a batch size of 64.

62
00:06:01,220 --> 00:06:03,640
‫Now we are using a batch size of 20.

63
00:06:04,880 --> 00:06:13,400
‫Now this flow from directory will feed images in the batches of twenty to our train generator

64
00:06:15,830 --> 00:06:21,100
‫Then we have to provide information that is contained in the form of folders.

65
00:06:21,740 --> 00:06:28,220
‫So since we are doing binary classification and we have two folders, one for cat one for dog

66
00:06:28,760 --> 00:06:31,190
‫we have to provide class mode as binary.

67
00:06:34,190 --> 00:06:42,860
‫The output of this train generator will be in the form of X variables and the y variables Y labels

68
00:06:43,040 --> 00:06:45,500
‫will depend on the name of the folders.

69
00:06:46,130 --> 00:06:49,820
‫So if we have cats and dogs as our folder.

70
00:06:52,810 --> 00:06:55,660
‫So our y variable will will automatically become.

71
00:06:56,140 --> 00:07:01,450
‫Cats and dogs for all the images that are inside those folders.

72
00:07:03,840 --> 00:07:07,410
‫Now, let's revise what this train generator is doing.

73
00:07:08,270 --> 00:07:08,650
‫First.

74
00:07:09,990 --> 00:07:11,960
‫We are going into a train directory.

75
00:07:12,630 --> 00:07:14,000
‫There are two folders there.

76
00:07:14,220 --> 00:07:15,270
‫Cats and dogs.

77
00:07:16,460 --> 00:07:22,550
‫We are resizing all the images in the shape of 150 by 150 y one foot pixels.

78
00:07:24,370 --> 00:07:27,880
‫We are feeding images in the batches of 20.

79
00:07:28,620 --> 00:07:32,180
‫So at the time, we are picking 20 images.

80
00:07:33,860 --> 00:07:39,880
‫Then to create wine labels, we are using the folder names.

81
00:07:40,700 --> 00:07:46,280
‫And since there are two folders and it's a binary classification problem, we have to grow it last more

82
00:07:46,370 --> 00:07:47,150
‫as binary.

83
00:07:48,780 --> 00:07:55,020
‫Then as a result of this function, we will have our images in the form of floating point ten sets

84
00:07:55,140 --> 00:07:58,380
‫with RGB values between 0 and 255.

85
00:08:00,190 --> 00:08:04,710
‫This is the kind of data we used in our last video.

86
00:08:05,920 --> 00:08:11,500
‫Then we are reskilling those pixel values between zero and one.

87
00:08:12,070 --> 00:08:14,950
‫And that's why we are dividing it by 255.

88
00:08:17,820 --> 00:08:22,170
‫Now, why we have created this train data gen object?

89
00:08:22,950 --> 00:08:30,600
‫This is because instead of directly feeding all the data into our fixed function, we are going

90
00:08:30,600 --> 00:08:37,040
‫to feed 20 images at a time indo our fit function while training over model.

91
00:08:38,920 --> 00:08:47,530
‫One of the advantage of using this image data generator is that in case we want augmented data, we

92
00:08:47,530 --> 00:08:56,680
‫can directly apply many more functions like Rescale, Zoom, sheer etc, to generate some more data

93
00:08:56,710 --> 00:08:58,190
‫from our existing data.

94
00:09:00,890 --> 00:09:04,280
‫If you want some more detail about this image data generator.

95
00:09:05,670 --> 00:09:09,840
‫You can click on this link to open the keras documentation.

96
00:09:12,000 --> 00:09:16,410
‫So here you will get all the information you need for image preprocessing

