AI_DL_Assignment / 15. Transfer Learning Build a Flower & Monkey Breed Classifier /3. Build a Monkey Breed Classifier with MobileNet using Transfer Learning.srt
Prince-1's picture
Add files using upload-large-folder tool
e62bc71 verified
1
00:00:00,490 --> 00:00:06,120
Hi and welcome to Chapter 15 point to where we're going to build a monkey bridge justifier and basically
2
00:00:06,120 --> 00:00:11,780
use the concept of transfer learning to get very high accuracy very quickly.
3
00:00:11,780 --> 00:00:13,550
So let's take a look at this dataset.
4
00:00:13,560 --> 00:00:19,380
This is where it was taken a stick and from a Kaggle project and basically it has about 80 images I
5
00:00:19,380 --> 00:00:22,240
think of about 10 different types of monkeys each.
6
00:00:22,270 --> 00:00:24,290
Is it a species of monkeys here.
7
00:00:25,140 --> 00:00:30,120
And actually not 80 18:00 into the 152 images of each class.
8
00:00:30,120 --> 00:00:35,420
And these are some sample images here and you'll notice that some are quite small and differently.
9
00:00:35,670 --> 00:00:40,740
Different aspect ratios images of various sizes and quality as well.
10
00:00:40,770 --> 00:00:45,900
So it's pretty much like what you might build as your own data sets effectively.
11
00:00:46,050 --> 00:00:53,310
It's not well standardized not super neat not super high quality images just random images taken from
12
00:00:53,310 --> 00:00:54,080
the Internet.
13
00:00:54,360 --> 00:01:01,280
So now let's move onto Pitre notebook and begin creating this toxify OK.
14
00:01:01,290 --> 00:01:07,830
So before we begin I hope you downloaded your resource file monkey Breede datasets and have placed it
15
00:01:07,950 --> 00:01:09,560
inside of the territory here.
16
00:01:09,810 --> 00:01:15,660
This is the translating directory so you have monkey abused monkey read our victory here with our training
17
00:01:15,690 --> 00:01:16,300
images.
18
00:01:16,320 --> 00:01:17,960
And each one is in full to here.
19
00:01:18,300 --> 00:01:22,980
And let's go back and now hopefully that's set up correctly for you.
20
00:01:23,250 --> 00:01:28,070
So now we can go back so we went back to full and open up here.
21
00:01:28,200 --> 00:01:33,630
I already have it open right now so I'm going to go through this step by step so you understand exactly
22
00:01:33,630 --> 00:01:36,210
how we can apply transfer linning.
23
00:01:36,210 --> 00:01:37,140
All right.
24
00:01:37,140 --> 00:01:39,180
So we're doing this with more on that.
25
00:01:39,210 --> 00:01:44,090
And the reason I have to move on that for is because it actually trains quite quickly on C-p use.
26
00:01:44,430 --> 00:01:46,430
So let's import ballots here.
27
00:01:47,010 --> 00:01:53,880
And then let's define image rows and columns so we're going to use uniform square images of 2:24 by
28
00:01:53,880 --> 00:01:55,650
29
2:24 in size.
30
00:01:55,740 --> 00:01:58,620
And this is how we basically define that.
31
00:01:58,650 --> 00:02:01,280
When we loaded in we wanted to we had to be Image nets.
32
00:02:01,290 --> 00:02:03,970
We've seen this before in our pretreated Model S..
33
00:02:04,020 --> 00:02:06,240
However we haven't seen these parameters here.
34
00:02:06,240 --> 00:02:11,610
I will quickly discuss this with you what we're going to do is that we're going to include the top and
35
00:02:11,610 --> 00:02:13,120
said this at Falls.
36
00:02:13,380 --> 00:02:18,150
What this means is that the fully connectedly as the last layers on the top of the model are basically
37
00:02:18,150 --> 00:02:19,820
not included in the model.
38
00:02:20,130 --> 00:02:24,650
So I'm going to show you what it looks pretty soon and in what shape is of center thing.
39
00:02:24,690 --> 00:02:30,420
We just defined in what shape of this model to be this as why we define these parameters up here and
40
00:02:30,420 --> 00:02:33,050
tree means color depth of tree RGV.
41
00:02:33,450 --> 00:02:36,990
So this is a cool thing we can do with terrorist models upload.
42
00:02:37,320 --> 00:02:39,790
So we have a model here called Mobile that.
43
00:02:39,890 --> 00:02:44,310
So by addressing the layers within that Dudley as districting an array.
44
00:02:44,490 --> 00:02:50,450
And we can basically loop through these areas here and actually turn it off manually.
45
00:02:50,690 --> 00:02:57,360
The treatable parameter a flag that controls what it is should be trainable or not.
46
00:02:57,360 --> 00:03:02,980
So what we do in this two lines of code here is that we basically setting all the layers in Mobile and
47
00:03:02,990 --> 00:03:06,450
that's to be non-tradable basically fixed.
48
00:03:06,450 --> 00:03:09,160
This is how we freeze DeWitt's right here.
49
00:03:09,690 --> 00:03:11,830
So now we could actually print these layers here.
50
00:03:12,120 --> 00:03:16,250
And basically what we are printing is the name of Leo number.
51
00:03:16,320 --> 00:03:22,740
I go to the loop and we're going to print the flag Liautaud trainable what it's treatable.
52
00:03:22,770 --> 00:03:23,940
True or false.
53
00:03:23,970 --> 00:03:29,970
So you get to see all the layers now which is quite a bit a mobile that are set to false.
54
00:03:29,970 --> 00:03:31,840
So this is pretty awesome already.
55
00:03:32,100 --> 00:03:35,290
So I hope you're following simple code so far.
56
00:03:36,000 --> 00:03:42,090
So now we're going to do is we're going to create a simple function here that basically adds to fully
57
00:03:42,090 --> 00:03:47,730
connected head back onto the model we loaded here because remember we loaded it.
58
00:03:47,880 --> 00:03:49,180
But we didn't get to the top.
59
00:03:49,200 --> 00:03:52,950
So now we have a model without any top.
60
00:03:52,950 --> 00:03:55,070
So no actually I want to show you something quickly.
61
00:03:55,290 --> 00:03:57,590
What if we said this to true.
62
00:03:57,620 --> 00:03:58,090
All right.
63
00:03:58,110 --> 00:03:59,220
How would this model look.
64
00:03:59,250 --> 00:04:04,330
So we saw we had 86 differently as the last one being removed.
65
00:04:04,650 --> 00:04:09,000
So let's now print this and see what it looks
66
00:04:14,460 --> 00:04:16,170
takes about five to 10 seconds to run.
67
00:04:16,170 --> 00:04:17,500
There we go.
68
00:04:18,330 --> 00:04:18,990
Oh good.
69
00:04:18,990 --> 00:04:24,770
So before we head up to 86 now we see we have basically this is the top fully connected head.
70
00:04:25,200 --> 00:04:28,240
This is what we left out before previously.
71
00:04:28,320 --> 00:04:29,510
So now let's put it back in.
72
00:04:29,670 --> 00:04:30,690
OK.
73
00:04:32,350 --> 00:04:35,090
Because what we're going to do we're going to add a head here.
74
00:04:35,340 --> 00:04:38,660
These are really as we we are going to add onto the model now.
75
00:04:38,710 --> 00:04:40,660
So how do we use this function.
76
00:04:40,660 --> 00:04:43,720
This function takes a number of classes.
77
00:04:43,790 --> 00:04:46,120
I do our data sets.
78
00:04:46,420 --> 00:04:48,220
We specify how many classes we want.
79
00:04:48,220 --> 00:04:54,370
So for a monkey breed they is that it's going to be 10 and the bottom bottom model is basically this
80
00:04:54,420 --> 00:04:55,040
model here.
81
00:04:55,080 --> 00:04:57,250
Well not at all it's for us and it's.
82
00:04:57,580 --> 00:05:00,040
So let's quickly see what this function does.
83
00:05:00,100 --> 00:05:02,200
It takes a lot of muddled model here.
84
00:05:02,420 --> 00:05:07,310
Guess's gets the output part of it here and we create basically the top model now.
85
00:05:07,660 --> 00:05:13,990
So what we do now we have to find a top model like this here and now the top model we just simply basically
86
00:05:14,080 --> 00:05:15,450
add these layers here.
87
00:05:15,670 --> 00:05:18,240
It's a different way of Ardingly as no one cares.
88
00:05:18,580 --> 00:05:21,010
So we added an adjusted to the top model here.
89
00:05:21,280 --> 00:05:28,600
So for us we do global pooling Tuti we do a densely with a thousand and 28 nodes that again another
90
00:05:28,600 --> 00:05:33,590
densely a here and then we do a final densely with soft Macksville attend classes we want.
91
00:05:33,790 --> 00:05:38,490
And then what this does retune the model Top Model back.
92
00:05:38,600 --> 00:05:45,640
OK so now what we do below is obviously we just load all Olias of need and defined number of classes
93
00:05:45,670 --> 00:05:51,640
but now we can actually use our function here where we actually enter a number of classes.
94
00:05:51,730 --> 00:05:57,480
We enter the mobile in that model that we created we loaded before and we add a top.
95
00:05:57,580 --> 00:06:02,000
That's actually a we defined here to this model and that's why we call it the C.
96
00:06:02,360 --> 00:06:08,840
And what we do know is that we use this cross model function so we use it now to get inputs here which
97
00:06:08,840 --> 00:06:13,680
are defined as a mobile at model output speed the other possible are we going to train.
98
00:06:13,840 --> 00:06:18,970
And basically this combines it into one model now one model where it looks like this when print printed
99
00:06:18,970 --> 00:06:19,920
out.
100
00:06:20,520 --> 00:06:26,300
So a lot of layers I just saw before 86 Lia's But now we have four sort six Malis is now these are three
101
00:06:26,320 --> 00:06:27,360
to find here.
102
00:06:27,790 --> 00:06:29,250
And that's going to show up right here.
103
00:06:29,320 --> 00:06:30,590
So this is pretty cool.
104
00:06:30,820 --> 00:06:31,950
And look at this here.
105
00:06:31,960 --> 00:06:37,710
So we have five million parameters five point equally actually and trainable parameters.
106
00:06:37,750 --> 00:06:38,870
Only 2.6.
107
00:06:38,890 --> 00:06:43,430
And the non-tradable parameters which are the width of we froze our trillion.
108
00:06:43,720 --> 00:06:48,850
So effectively we've taken a model of at MIT How was pretty complex not super complex like a Viji and
109
00:06:48,880 --> 00:06:54,850
couple of others but complex enough and we've made it into a much simpler model to train.
110
00:06:55,030 --> 00:06:57,390
So let's get to training of monkey breed.
111
00:06:57,400 --> 00:07:00,600
They just had no training on Lockerby to classify.
112
00:07:00,910 --> 00:07:05,720
So we loaded data sets using imaged digit data generators that you've seen before.
113
00:07:06,460 --> 00:07:12,410
We do a standard thing here which you of which you should be pretty familiar with by now and then we
114
00:07:12,400 --> 00:07:14,530
define some checkpoints and Colback sorry.
115
00:07:14,650 --> 00:07:20,470
So we use stopping and checkpointing here and then we train for only five bucks for now.
116
00:07:20,680 --> 00:07:23,440
That's because we don't want it to be like take too long.
117
00:07:23,830 --> 00:07:26,380
And actually treating it separately in this window here.
118
00:07:26,830 --> 00:07:30,980
So I've actually already trained almost five e-books and realize so much time.
119
00:07:31,390 --> 00:07:38,590
So look at this here you can see after this epoch which took just under five minutes our validation
120
00:07:38,590 --> 00:07:41,180
accuracy was 88 percent already.
121
00:07:41,470 --> 00:07:44,750
That is actually pretty damn good for such a short space of time.
122
00:07:45,070 --> 00:07:49,580
Now and a second night duration because it's such a early start to the trading hour.
123
00:07:49,630 --> 00:07:55,690
Even though the trading loss is much lower the and accuracy is a little bit less 84 percent.
124
00:07:55,780 --> 00:07:56,320
That's OK.
125
00:07:56,350 --> 00:07:58,060
We can sort of live it out.
126
00:07:58,120 --> 00:08:03,280
We'll let a train from what ebox and see how it evolves because training these pre-treat models when
127
00:08:03,280 --> 00:08:09,120
it's something which is frozen is a little bit different than how we turn to CNN's they basically do
128
00:08:09,180 --> 00:08:12,890
they do effectively converge and get a very high value.
129
00:08:12,940 --> 00:08:15,920
However you do sometimes see some odd fluctuations like this.
130
00:08:16,270 --> 00:08:20,320
And look we have it back up to 91 percent 90 percent.
131
00:08:20,320 --> 00:08:26,110
If you wait a few minutes sorry about 20 seconds at least here we can actually see what evaluation accuracy
132
00:08:26,110 --> 00:08:28,540
is at the end of the fifth book.
133
00:08:28,540 --> 00:08:39,640
So let's wait and see what it looks.
134
00:08:39,650 --> 00:08:46,360
One thing to note is that you can actually see our callback stopping callback actually telling us how
135
00:08:46,370 --> 00:08:52,340
validation loss did not improve did not improve if we left this for 20 bucks and we had actually it
136
00:08:52,340 --> 00:08:57,060
was here as well so basically no matter what this is going to be the last epoch because I'm pretty sure
137
00:08:57,060 --> 00:09:00,070
I said my patience to Tree Hill.
138
00:09:00,320 --> 00:09:00,770
Yep.
139
00:09:00,770 --> 00:09:02,360
I usually always do.
140
00:09:02,840 --> 00:09:07,250
So right now what it's doing had a reason why I stuck it two seconds even did two seconds would have
141
00:09:07,250 --> 00:09:13,220
passed by the time I started the sentence is that it's predicting on treating all validation data set.
142
00:09:13,220 --> 00:09:16,540
Now that's something that a lot of beginners don't know.
143
00:09:16,720 --> 00:09:19,620
Take the seat pause at the end of it like a note stuck.
144
00:09:19,760 --> 00:09:20,770
It isn't actually stuck.
145
00:09:20,780 --> 00:09:24,270
It's just waiting to run on the validation data set now.
146
00:09:24,380 --> 00:09:29,480
So it takes a little while to honestly because sometimes validation data sets are quite big.
147
00:09:29,800 --> 00:09:31,110
Ah there we go.
148
00:09:31,140 --> 00:09:32,240
So look at this.
149
00:09:32,410 --> 00:09:37,120
We got 93 percent accuracy in such a short space of time.
150
00:09:37,190 --> 00:09:38,300
So this is quite good.
151
00:09:38,360 --> 00:09:41,050
So no it's actually go back to this main page here.
152
00:09:41,450 --> 00:09:44,290
Let's look at our model which takes me about 10 seconds.
153
00:09:47,460 --> 00:09:52,570
And what are we going to do once this model is loaded We're going to basically use open C-v because
154
00:09:52,810 --> 00:09:53,310
messy.
155
00:09:53,340 --> 00:09:59,970
But of course I wrote quickly that loads the images here and it runs into predictive that we just loaded
156
00:10:00,180 --> 00:10:07,980
here and so on already and we're actually going to see the monkey class see how accurate a real ossify
157
00:10:07,980 --> 00:10:10,410
really is 90 percent accurate.
158
00:10:10,410 --> 00:10:12,280
So let's find out.
159
00:10:12,480 --> 00:10:13,390
There we go.
160
00:10:13,800 --> 00:10:14,560
So this is the truth.
161
00:10:14,560 --> 00:10:16,720
US battled.
162
00:10:17,080 --> 00:10:18,710
Yes that's like a Japanese monkey.
163
00:10:20,080 --> 00:10:22,850
OK so fiercely it got this one wrong.
164
00:10:23,120 --> 00:10:28,310
This is what Elmo predicted Whitehead had a cabbage in and no it was not a white hat.
165
00:10:28,810 --> 00:10:30,520
Let's see if he gets it right.
166
00:10:30,520 --> 00:10:31,300
Yeah it did.
167
00:10:31,330 --> 00:10:32,630
Got this one right.
168
00:10:32,710 --> 00:10:33,110
Pick me.
169
00:10:33,110 --> 00:10:34,020
I'm almost at.
170
00:10:34,270 --> 00:10:37,010
Let's see what the other is.
171
00:10:37,070 --> 00:10:39,000
Gary langar definitely.
172
00:10:39,020 --> 00:10:40,020
Right.
173
00:10:40,280 --> 00:10:41,590
Pygmy marmosets again.
174
00:10:41,660 --> 00:10:42,710
Got it right.
175
00:10:42,740 --> 00:10:44,090
Got it right.
176
00:10:44,090 --> 00:10:44,990
Got that right.
177
00:10:44,990 --> 00:10:46,210
Got it right.
178
00:10:46,550 --> 00:10:48,010
Got it right again.
179
00:10:48,560 --> 00:10:49,930
Got it right.
180
00:10:50,000 --> 00:10:51,350
So seems pretty good.
181
00:10:51,530 --> 00:10:55,230
So aside from the first one model got basically nine out of 10 right.
182
00:10:55,250 --> 00:10:58,550
Which kind of corresponds to 90 percent accuracy.
183
00:10:58,550 --> 00:10:59,560
We got here.
184
00:10:59,930 --> 00:11:07,100
So you've just learnt to create a model a basically a train model using transfer learning and you see
185
00:11:07,100 --> 00:11:07,850
how simple it is.
186
00:11:07,850 --> 00:11:15,770
You just basically linnets load it with the weight speed frozen and the top being not included.
187
00:11:15,770 --> 00:11:18,800
Then you build the function to add the top whatever top you want to add.
188
00:11:18,860 --> 00:11:24,770
I didn't hear all these make sure the Lasley is number of classes you have in your dataset.
189
00:11:24,860 --> 00:11:28,540
Then you basically compare concatenates and compile the bottles here.
190
00:11:29,690 --> 00:11:32,890
Well combinable I should say you do it your image under it.
191
00:11:32,900 --> 00:11:38,980
It does define your check points and callbacks compile and we go and train.
192
00:11:39,400 --> 00:11:42,880
So it's really very simple and I hope you find a disruptive quite useful.
193
00:11:43,060 --> 00:11:43,340
Thank you.