1 00:00:00,750 --> 00:00:06,480 Hi and welcome to Chapter 15 point tree where we're about to build a flow of classify and we're going 2 00:00:06,480 --> 00:00:08,580 to use transfer learning to do this. 3 00:00:08,580 --> 00:00:10,280 So let's take a look at how we actually. 4 00:00:10,370 --> 00:00:13,230 What is Flora ossify our flower data set. 5 00:00:13,230 --> 00:00:14,920 I should say so. 6 00:00:15,060 --> 00:00:20,150 It comes from the Oxford University's visual geometry group as called 17. 7 00:00:20,310 --> 00:00:26,270 And that's because there are 17 categories of flowers and their images in each class say the sets and 8 00:00:26,270 --> 00:00:27,200 not that much. 9 00:00:28,110 --> 00:00:33,900 So this is some sample images from the flow Josephite the flowers 17 there is that this is the web page 10 00:00:33,900 --> 00:00:34,940 from Oxford University. 11 00:00:34,950 --> 00:00:40,170 And this is the link you can go to if you want to download it from day itself or you can use that link 12 00:00:40,230 --> 00:00:44,580 I have on the left here on the demi site panel. 13 00:00:44,640 --> 00:00:49,440 Please use that link to actually download it because I've already preprocess the data into a format 14 00:00:49,470 --> 00:00:54,330 that is easily imported into Karris if you downloaded from Oxford University site you're going to have 15 00:00:54,330 --> 00:00:55,760 to do a pre-processing itself. 16 00:00:55,770 --> 00:01:00,630 And I don't think if you're a beginner you're not going to find that fun at all although it's a good 17 00:01:00,630 --> 00:01:02,740 exercise to do sometimes. 18 00:01:03,600 --> 00:01:08,790 So anyway our approach to this problem is that we're going to actually use a pre-trained Fiji A16 model 19 00:01:09,540 --> 00:01:14,490 with all of its way it's frozen except the top layer and we're only going to train the top ahead of 20 00:01:14,490 --> 00:01:17,490 the model with a final output of 17 classes. 21 00:01:17,490 --> 00:01:21,370 So let's go back to our I and notebook and get this done. 22 00:01:21,710 --> 00:01:22,100 OK. 23 00:01:22,140 --> 00:01:24,750 So welcome back to our virtual machine. 24 00:01:24,780 --> 00:01:28,820 I hope you downloaded the flowers dataset and extracted it to this folder here. 25 00:01:29,040 --> 00:01:34,170 That's this folder called transfer linning and financing and Plaisted right here so we can quickly just 26 00:01:34,170 --> 00:01:37,910 inspect it taking a look at some of those pictures. 27 00:01:38,330 --> 00:01:42,120 Let's put it on toenail view and it looks quite nice. 28 00:01:42,120 --> 00:01:46,280 So as you can see we don't have that many images in this data set. 29 00:01:46,380 --> 00:01:51,380 So let's see what kind of accuracy we can get without transfer learning on the Viji model. 30 00:01:51,390 --> 00:01:53,380 So let's go to it here. 31 00:01:53,790 --> 00:02:02,170 So no let me just close some of these windows open and let's quickly go back to this one here so you 32 00:02:02,170 --> 00:02:03,350 can actually see how I do it. 33 00:02:03,360 --> 00:02:05,080 It's 15. 34 00:02:05,080 --> 00:02:07,090 And we go to making a flower classifier. 35 00:02:07,210 --> 00:02:08,440 That's this file here. 36 00:02:08,830 --> 00:02:10,260 So now that we're in the file. 37 00:02:10,300 --> 00:02:11,800 Let's take a look at what's going on. 38 00:02:11,800 --> 00:02:15,770 So we import the BTG model that's easily done here. 39 00:02:16,120 --> 00:02:23,470 Viji was designed to work open 24 or 224 by 224 pixel image input's Isiah's. 40 00:02:23,500 --> 00:02:26,450 So let's keep the standard size and go forward. 41 00:02:26,530 --> 00:02:32,200 So let's load the model with out his weights or with the weights of image's nuts without the top layer. 42 00:02:32,410 --> 00:02:34,360 I should say so we do that. 43 00:02:34,420 --> 00:02:36,960 And let's just print out the layers in this model. 44 00:02:37,060 --> 00:02:37,560 OK. 45 00:02:37,930 --> 00:02:44,740 So as you can see default actually is loaded here and by default all the layers are trainable. 46 00:02:44,740 --> 00:02:52,370 True that means the default in of when you load EGD all the weights are trainable. 47 00:02:52,630 --> 00:02:55,090 So we now have to set this true to false. 48 00:02:55,090 --> 00:02:56,490 So that's what we do here. 49 00:02:56,860 --> 00:03:03,010 So we loaded with our top head with Image net weights and we set all the treatable as we said this flag 50 00:03:03,090 --> 00:03:04,210 to false. 51 00:03:04,270 --> 00:03:08,030 So let's do this quickly and that's done there. 52 00:03:08,520 --> 00:03:13,450 And now let's create the function where we add a fully connected head. 53 00:03:13,510 --> 00:03:17,960 This is where we delay as we add now back to the top of our Viji that network. 54 00:03:18,190 --> 00:03:24,340 Notice this is different to the layers we added in the mobile network and that's because PDG has a different 55 00:03:24,340 --> 00:03:26,000 design to mobile and that. 56 00:03:26,020 --> 00:03:30,190 So you're going to have to look at the final design BTG and replace easily as here. 57 00:03:30,340 --> 00:03:35,700 And this here this densely a number of densely as dense units here. 58 00:03:36,190 --> 00:03:38,440 By default we are going to use 256. 59 00:03:38,440 --> 00:03:47,550 However this function allows us to specify it in here we can add 128 and it would be 128 units here. 60 00:03:47,890 --> 00:03:50,480 So let's leave the default right. 61 00:03:50,500 --> 00:03:57,220 And then you said drop out who said these things we input a number of classes which is 17 from the flow 62 00:03:57,220 --> 00:04:01,450 was data set 17 17 Sivam should make sense you know. 63 00:04:01,780 --> 00:04:04,730 And we just concatenated models here. 64 00:04:05,110 --> 00:04:08,800 Well the parts of the model to get the full model and then printed out. 65 00:04:08,800 --> 00:04:13,690 So let's take a look at and we see there 14 million parameters. 66 00:04:13,880 --> 00:04:18,150 It's less than between 19 and 16 sorry BTD 19. 67 00:04:18,440 --> 00:04:23,180 And with treatable parameters only 135 tells him that's quite good. 68 00:04:23,720 --> 00:04:25,060 So let me just run this. 69 00:04:25,130 --> 00:04:33,150 So we have fresh and no we just do it data generators here to deflower validation and Floetry unfold 70 00:04:33,250 --> 00:04:35,290 as we said our size. 71 00:04:35,320 --> 00:04:38,210 We can go actually just keep it at 16. 72 00:04:38,490 --> 00:04:38,910 All right. 73 00:04:38,950 --> 00:04:43,140 And keep going here. 74 00:04:43,260 --> 00:04:49,500 So now we declare all callbacks right here and we just create we create a callback array which we pass 75 00:04:49,500 --> 00:04:51,740 in here and let's run this now. 76 00:04:51,850 --> 00:04:55,430 So I to leave you to run this over and run this already. 77 00:04:55,450 --> 00:04:56,800 And it takes quite some time. 78 00:04:57,040 --> 00:05:01,540 But what I want you to observe is look at the validation accuracy in 25 books. 79 00:05:01,540 --> 00:05:06,230 The highest we get was actually 95 percent which is quite good. 80 00:05:06,820 --> 00:05:11,500 So you keep going see did it ever pass 95 tree at one time. 81 00:05:11,560 --> 00:05:12,990 So this is quite good. 82 00:05:13,240 --> 00:05:19,370 So we've got 95 percent accuracy using transfer linning using Viji 16 in translating. 83 00:05:19,630 --> 00:05:22,710 So let's keep going let's see what else we can do. 84 00:05:22,750 --> 00:05:24,080 OK. 85 00:05:24,430 --> 00:05:26,020 So this section here. 86 00:05:26,020 --> 00:05:27,620 Can we speed this up. 87 00:05:27,730 --> 00:05:31,060 So let's try resizing the images to 64 by 64. 88 00:05:31,200 --> 00:05:34,820 You remember it was assigned to a can 224 224. 89 00:05:34,910 --> 00:05:37,660 Now let's do this to 64. 90 00:05:37,930 --> 00:05:44,100 So let's use this comment to setting the input size. 91 00:05:44,100 --> 00:05:49,660 Now to. 92 00:05:49,780 --> 00:05:55,670 All right and do the standard thing where we load with image that way it's we don't include the top 93 00:05:55,780 --> 00:06:01,810 specified in U shape and we make the last train with three syllables. 94 00:06:02,190 --> 00:06:04,040 So that's good. 95 00:06:04,050 --> 00:06:07,050 And now let's move on to this. 96 00:06:07,460 --> 00:06:13,330 Let us actually start treating the small so as we can see this model has a different input sites. 97 00:06:14,180 --> 00:06:16,010 And let's see what we get. 98 00:06:16,010 --> 00:06:18,940 So I've trained this before so you don't have to do it. 99 00:06:18,950 --> 00:06:26,180 So what I want you to see though is that what what's happened here previously before actually did not 100 00:06:26,180 --> 00:06:30,130 used the callbacks or that's it in view but I should have thought it and I. 101 00:06:30,410 --> 00:06:32,490 But what I've done now is a discipline we do. 102 00:06:32,540 --> 00:06:41,660 So we see some callbacks feedback from stopping so we see it's not increasing monitoring patients is 103 00:06:41,660 --> 00:06:42,310 good. 104 00:06:42,320 --> 00:06:45,740 So at the end Epopt 12 is what we use. 105 00:06:45,770 --> 00:06:49,530 So let's go back to Iraq 12 pastorate ago. 106 00:06:49,920 --> 00:06:53,210 That's this one 82 percent. 107 00:06:53,230 --> 00:06:58,340 So 82 percent was our best loess validation loss and our best accuracy. 108 00:06:58,340 --> 00:07:06,500 So you can see by resizing the images a 64 by 64 which is a substantial decrease in size 2 to 24 by 109 00:07:06,500 --> 00:07:09,580 224 we got it into possessory. 110 00:07:09,860 --> 00:07:10,860 How much was it again. 111 00:07:11,520 --> 00:07:11,850 Sorry. 112 00:07:11,950 --> 00:07:13,930 82 percent accuracy. 113 00:07:14,060 --> 00:07:20,570 So that's not too bad to be fair actually sorry 86 percent accuracy we got that was fifteen point five 114 00:07:20,570 --> 00:07:22,150 six five two. 115 00:07:22,370 --> 00:07:22,730 Right. 116 00:07:22,730 --> 00:07:24,540 So that is actually this one. 117 00:07:25,010 --> 00:07:26,140 So yep. 118 00:07:26,150 --> 00:07:27,620 So this is good. 119 00:07:27,710 --> 00:07:29,960 It's not great but is pretty good.