meet-dagur4 commited on
Commit
6053efc
·
1 Parent(s): 2918bd1

Upload 3 files

Browse files
Files changed (3) hide show
  1. Dog_Breed_Classifier.h5 +3 -0
  2. app.py +173 -0
  3. requirements.txt +7 -0
Dog_Breed_Classifier.h5 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:697fceb5ecb77baff9ede71a0585ef7cb24dc430949fa8e7774c337d13839b63
3
+ size 82934708
app.py ADDED
@@ -0,0 +1,173 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+ import tensorflow as tf
4
+ import tensorflow_hub as hub
5
+ import numpy as np
6
+
7
+ st.title('Dog Breed Classifier App ')
8
+ st.header('Made By Lakhan Singh :sunglasses:',divider='rainbow')
9
+
10
+ label = {'afghan_hound': 0,
11
+ 'african_hunting_dog': 1,
12
+ 'airedale': 2,
13
+ 'basenji': 3,
14
+ 'basset': 4,
15
+ 'beagle': 5,
16
+ 'bedlington_terrier': 6,
17
+ 'bernese_mountain_dog': 7,
18
+ 'black-and-tan_coonhound': 8,
19
+ 'blenheim_spaniel': 9,
20
+ 'bloodhound': 10,
21
+ 'bluetick': 11,
22
+ 'border_collie': 12,
23
+ 'border_terrier': 13,
24
+ 'borzoi': 14,
25
+ 'boston_bull': 15,
26
+ 'bouvier_des_flandres': 16,
27
+ 'brabancon_griffon': 17,
28
+ 'bull_mastiff': 18,
29
+ 'cairn': 19,
30
+ 'cardigan': 20,
31
+ 'chesapeake_bay_retriever': 21,
32
+ 'chow': 22,
33
+ 'clumber': 23,
34
+ 'cocker_spaniel': 24,
35
+ 'collie': 25,
36
+ 'curly-coated_retriever': 26,
37
+ 'dhole': 27,
38
+ 'dingo': 28,
39
+ 'doberman': 29,
40
+ 'english_foxhound': 30,
41
+ 'english_setter': 31,
42
+ 'entlebucher': 32,
43
+ 'flat-coated_retriever': 33,
44
+ 'german_shepherd': 34,
45
+ 'german_short-haired_pointer': 35,
46
+ 'golden_retriever': 36,
47
+ 'gordon_setter': 37,
48
+ 'great_dane': 38,
49
+ 'great_pyrenees': 39,
50
+ 'groenendael': 40,
51
+ 'ibizan_hound': 41,
52
+ 'irish_setter': 42,
53
+ 'irish_terrier': 43,
54
+ 'irish_water_spaniel': 44,
55
+ 'irish_wolfhound': 45,
56
+ 'japanese_spaniel': 46,
57
+ 'keeshond': 47,
58
+ 'kerry_blue_terrier': 48,
59
+ 'komondor': 49,
60
+ 'kuvasz': 50,
61
+ 'labrador_retriever': 51,
62
+ 'leonberg': 52,
63
+ 'lhasa': 53,
64
+ 'malamute': 54,
65
+ 'malinois': 55,
66
+ 'maltese_dog': 56,
67
+ 'mexican_hairless': 57,
68
+ 'miniature_pinscher': 58,
69
+ 'miniature_schnauzer': 59,
70
+ 'newfoundland': 60,
71
+ 'norfolk_terrier': 61,
72
+ 'norwegian_elkhound': 62,
73
+ 'norwich_terrier': 63,
74
+ 'old_english_sheepdog': 64,
75
+ 'otterhound': 65,
76
+ 'papillon': 66,
77
+ 'pekinese': 67,
78
+ 'pembroke': 68,
79
+ 'pomeranian': 69,
80
+ 'pug': 70,
81
+ 'redbone': 71,
82
+ 'rhodesian_ridgeback': 72,
83
+ 'rottweiler': 73,
84
+ 'saint_bernard': 74,
85
+ 'saluki': 75,
86
+ 'samoyed': 76,
87
+ 'schipperke': 77,
88
+ 'scotch_terrier': 78,
89
+ 'scottish_deerhound': 79,
90
+ 'sealyham_terrier': 80,
91
+ 'shetland_sheepdog': 81,
92
+ 'standard_poodle': 82,
93
+ 'standard_schnauzer': 83,
94
+ 'sussex_spaniel': 84,
95
+ 'tibetan_mastiff': 85,
96
+ 'tibetan_terrier': 86,
97
+ 'toy_terrier': 87,
98
+ 'vizsla': 88,
99
+ 'weimaraner': 89,
100
+ 'whippet': 90,
101
+ 'wire-haired_fox_terrier': 91,
102
+ 'yorkshire_terrier': 92}
103
+
104
+ model_summary = '''Model: "sequential"
105
+ ================================================================
106
+ Layer (type) Output Shape Param
107
+ =================================================================
108
+ random_flip (RandomFlip) (None, 400, 400, 3) 0
109
+
110
+ random_rotation (RandomRot (None, 400, 400, 3) 0
111
+ ation)
112
+
113
+ keras_layer (KerasLayer) (None, 1280) 20331360
114
+
115
+ dropout (Dropout) (None, 1280) 0
116
+
117
+ dense (Dense) (None, 93) 119133
118
+
119
+ =================================================================
120
+ Total params: 20450493 (78.01 MB)
121
+ Trainable params: 119133 (465.36 KB)
122
+ Non-trainable params: 20331360 (77.56 MB)
123
+ ================================================================='''
124
+
125
+
126
+ label_dt = pd.DataFrame(label,index=label.values())
127
+
128
+ if st.checkbox('Do you want to check all breeds of dog that is used in this model'):
129
+ st.write('These are here')
130
+ st.write(label_dt.head(1))
131
+
132
+ if st.checkbox('Check here model summary :sunglasses:'):
133
+ st.text(model_summary)
134
+
135
+ img = st.file_uploader('## Upload a dog image to classified it breed : ',type=['png', 'jpg','jpeg'])
136
+
137
+ @st.cache_resource
138
+
139
+ def load_model():
140
+ model = tf.keras.models.load_model('Dog_Breed_Classifier.h5',custom_objects={'KerasLayer': hub.KerasLayer})
141
+ return model
142
+
143
+ model = load_model()
144
+
145
+ st.text('Model Loaded Suceessfully ...')
146
+
147
+ def predict(model, img):
148
+ img = tf.keras.utils.load_img(img,target_size=(400,400))
149
+ img_array = tf.keras.utils.img_to_array(img)
150
+ img_array = img_array/255
151
+ st.image(img_array)
152
+
153
+ img_array = np.expand_dims(img_array,axis=0)
154
+ predictions = model.predict(img_array)
155
+
156
+ print('Prediction Value of the image is : ', np.argmax(predictions))
157
+
158
+ predicted_class = [i for i ,j in label.items() if j == np.argmax(predictions)]
159
+ confidence = round(100*(np.max(predictions[0])), 2)
160
+
161
+ st.subheader(f" Predicted Class: {predicted_class[0]}")
162
+ st.subheader(f" Confidence: {confidence}%")
163
+
164
+ if st.button('show image with prediction'):
165
+ result = predict(model , img)
166
+
167
+ if st.button("Clear All Cache"):
168
+ st.cache_data.clear()
169
+
170
+
171
+
172
+
173
+
requirements.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ pandas == 1.5.3
2
+ scipy == 1.11.3
3
+ numpy == 1.23.5
4
+ tensorflow == 2.13.0
5
+ tensorflow-hub == 0.15.0
6
+ python == 3.11.6
7
+ streamlit == 1.27.2