let's deploy to huggingface spaces
Browse files- Angry.jpg +0 -0
- Happy.jpg +0 -0
- Sad.jpg +0 -0
- app.ipynb +466 -0
- app.py +28 -0
- export.pkl +3 -0
- requirements.txt +4 -0
Angry.jpg
ADDED
Happy.jpg
ADDED
Sad.jpg
ADDED
app.ipynb
ADDED
@@ -0,0 +1,466 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"cells": [
|
3 |
+
{
|
4 |
+
"cell_type": "code",
|
5 |
+
"execution_count": 1,
|
6 |
+
"id": "9bde898e",
|
7 |
+
"metadata": {},
|
8 |
+
"outputs": [],
|
9 |
+
"source": [
|
10 |
+
"#|default_exp app"
|
11 |
+
]
|
12 |
+
},
|
13 |
+
{
|
14 |
+
"cell_type": "code",
|
15 |
+
"execution_count": 2,
|
16 |
+
"id": "87c050db",
|
17 |
+
"metadata": {},
|
18 |
+
"outputs": [],
|
19 |
+
"source": [
|
20 |
+
"#|export\n",
|
21 |
+
"from fastbook import *\n",
|
22 |
+
"from fastai.vision.all import *\n",
|
23 |
+
"import gradio as gr\n",
|
24 |
+
"\n",
|
25 |
+
"def is_cat(x): return x[0].isupper()"
|
26 |
+
]
|
27 |
+
},
|
28 |
+
{
|
29 |
+
"cell_type": "code",
|
30 |
+
"execution_count": 3,
|
31 |
+
"id": "02e134f8",
|
32 |
+
"metadata": {},
|
33 |
+
"outputs": [
|
34 |
+
{
|
35 |
+
"data": {
|
36 |
+
"image/png": "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\n",
|
37 |
+
"text/plain": [
|
38 |
+
"PILImage mode=RGB size=192x108"
|
39 |
+
]
|
40 |
+
},
|
41 |
+
"execution_count": 3,
|
42 |
+
"metadata": {},
|
43 |
+
"output_type": "execute_result"
|
44 |
+
}
|
45 |
+
],
|
46 |
+
"source": [
|
47 |
+
"im = PILImage.create('Happy.jpg')\n",
|
48 |
+
"im.thumbnail((192,192))\n",
|
49 |
+
"im"
|
50 |
+
]
|
51 |
+
},
|
52 |
+
{
|
53 |
+
"cell_type": "code",
|
54 |
+
"execution_count": 4,
|
55 |
+
"id": "8aa2e243",
|
56 |
+
"metadata": {},
|
57 |
+
"outputs": [],
|
58 |
+
"source": [
|
59 |
+
"#|export\n",
|
60 |
+
"learn = load_learner('export.pkl')"
|
61 |
+
]
|
62 |
+
},
|
63 |
+
{
|
64 |
+
"cell_type": "code",
|
65 |
+
"execution_count": 5,
|
66 |
+
"id": "ec967332",
|
67 |
+
"metadata": {},
|
68 |
+
"outputs": [
|
69 |
+
{
|
70 |
+
"data": {
|
71 |
+
"text/html": [],
|
72 |
+
"text/plain": [
|
73 |
+
"<IPython.core.display.HTML object>"
|
74 |
+
]
|
75 |
+
},
|
76 |
+
"metadata": {},
|
77 |
+
"output_type": "display_data"
|
78 |
+
},
|
79 |
+
{
|
80 |
+
"data": {
|
81 |
+
"text/plain": [
|
82 |
+
"('Angry', tensor(0), tensor([0.9015, 0.0535, 0.0450]))"
|
83 |
+
]
|
84 |
+
},
|
85 |
+
"execution_count": 5,
|
86 |
+
"metadata": {},
|
87 |
+
"output_type": "execute_result"
|
88 |
+
}
|
89 |
+
],
|
90 |
+
"source": [
|
91 |
+
"learn.predict(im)"
|
92 |
+
]
|
93 |
+
},
|
94 |
+
{
|
95 |
+
"cell_type": "code",
|
96 |
+
"execution_count": 6,
|
97 |
+
"id": "cbbb9d29",
|
98 |
+
"metadata": {},
|
99 |
+
"outputs": [],
|
100 |
+
"source": [
|
101 |
+
"#|export\n",
|
102 |
+
"categories = ('Happy','Angry','Sad')\n",
|
103 |
+
"\n",
|
104 |
+
"def classify_image(img):\n",
|
105 |
+
" pred,idx,probs = learn.predict(img)\n",
|
106 |
+
" return dict(zip(categories,map(float,probs)))"
|
107 |
+
]
|
108 |
+
},
|
109 |
+
{
|
110 |
+
"cell_type": "code",
|
111 |
+
"execution_count": 7,
|
112 |
+
"id": "416893f6",
|
113 |
+
"metadata": {},
|
114 |
+
"outputs": [
|
115 |
+
{
|
116 |
+
"data": {
|
117 |
+
"text/html": [],
|
118 |
+
"text/plain": [
|
119 |
+
"<IPython.core.display.HTML object>"
|
120 |
+
]
|
121 |
+
},
|
122 |
+
"metadata": {},
|
123 |
+
"output_type": "display_data"
|
124 |
+
},
|
125 |
+
{
|
126 |
+
"data": {
|
127 |
+
"text/plain": [
|
128 |
+
"{'Happy': 0.9014582633972168,\n",
|
129 |
+
" 'Angry': 0.053492531180381775,\n",
|
130 |
+
" 'Sad': 0.045049186795949936}"
|
131 |
+
]
|
132 |
+
},
|
133 |
+
"execution_count": 7,
|
134 |
+
"metadata": {},
|
135 |
+
"output_type": "execute_result"
|
136 |
+
}
|
137 |
+
],
|
138 |
+
"source": [
|
139 |
+
"classify_image(im)"
|
140 |
+
]
|
141 |
+
},
|
142 |
+
{
|
143 |
+
"cell_type": "code",
|
144 |
+
"execution_count": 8,
|
145 |
+
"id": "626ab3b7",
|
146 |
+
"metadata": {},
|
147 |
+
"outputs": [
|
148 |
+
{
|
149 |
+
"name": "stdout",
|
150 |
+
"output_type": "stream",
|
151 |
+
"text": [
|
152 |
+
"Running on local URL: http://127.0.0.1:7863/\n",
|
153 |
+
"\n",
|
154 |
+
"To create a public link, set `share=True` in `launch()`.\n"
|
155 |
+
]
|
156 |
+
},
|
157 |
+
{
|
158 |
+
"data": {
|
159 |
+
"text/plain": [
|
160 |
+
"(<fastapi.applications.FastAPI at 0x7f40fb180340>,\n",
|
161 |
+
" 'http://127.0.0.1:7863/',\n",
|
162 |
+
" None)"
|
163 |
+
]
|
164 |
+
},
|
165 |
+
"execution_count": 8,
|
166 |
+
"metadata": {},
|
167 |
+
"output_type": "execute_result"
|
168 |
+
}
|
169 |
+
],
|
170 |
+
"source": [
|
171 |
+
"#|export\n",
|
172 |
+
"image = gr.inputs.Image(shape=(192,192))\n",
|
173 |
+
"label = gr.outputs.Label()\n",
|
174 |
+
"examples = ['Happy.jpg','Angry.jpg','Sad.jpg']\n",
|
175 |
+
"\n",
|
176 |
+
"intf = gr.Interface(fn=classify_image, inputs=image, outputs=label, examples=examples)\n",
|
177 |
+
"intf.launch(inline=False)"
|
178 |
+
]
|
179 |
+
},
|
180 |
+
{
|
181 |
+
"cell_type": "code",
|
182 |
+
"execution_count": 9,
|
183 |
+
"id": "c6d080ef",
|
184 |
+
"metadata": {},
|
185 |
+
"outputs": [],
|
186 |
+
"source": [
|
187 |
+
"m = learn.model"
|
188 |
+
]
|
189 |
+
},
|
190 |
+
{
|
191 |
+
"cell_type": "code",
|
192 |
+
"execution_count": 10,
|
193 |
+
"id": "c8de1551",
|
194 |
+
"metadata": {},
|
195 |
+
"outputs": [],
|
196 |
+
"source": [
|
197 |
+
"ps = list(m.parameters())"
|
198 |
+
]
|
199 |
+
},
|
200 |
+
{
|
201 |
+
"cell_type": "code",
|
202 |
+
"execution_count": 11,
|
203 |
+
"id": "1c29d8d7",
|
204 |
+
"metadata": {},
|
205 |
+
"outputs": [
|
206 |
+
{
|
207 |
+
"data": {
|
208 |
+
"text/plain": [
|
209 |
+
"Parameter containing:\n",
|
210 |
+
"tensor([ 0.0847, 0.1213, 0.1149, 0.0919, 0.1221, 0.0990, 0.0823, 0.1492, 0.1174, -1.0657, 0.1615, 0.1042, 0.1261, 0.1031, 0.0798, 0.0966, 0.1092, 0.1245, 0.1164, 0.1969, 0.1133,\n",
|
211 |
+
" 0.1430, 0.0837, 0.1624, 0.1056, 0.1082, 0.1151, 0.1516, 0.1790, -0.1125, -2.2404, 0.1376, 0.1088, 0.1162, 0.1032, 0.1153, 0.1052, 0.1761, 0.1335, -1.6697, 0.1002, 0.1112,\n",
|
212 |
+
" 0.1427, 0.1894, 0.1213, 0.1153, 0.1135, 0.1065, 0.0948, 0.2194, 0.1100, 0.0924, 1.7131, 0.0995, 0.1193, 0.1037, 0.0805, 0.1110, -0.1199, 0.1087, 0.1142, 0.1253, 0.1061,\n",
|
213 |
+
" 0.1073, 0.1463, 0.1309, 0.1000, 0.1631, 0.0978, 0.2313, 0.0941, 0.1842, 0.2002, 0.1056, 0.1362, -0.1158, 0.1057, 0.0934, 0.0871, 0.1185, 0.1062, 0.1125, 0.1268, 0.0884,\n",
|
214 |
+
" 0.1072, 0.1116, 0.0925, -0.1439, 0.1036, 0.1906, 0.0977, 0.1440, 0.1148, 0.1209, 0.1406, 0.1080, 0.1351, 0.1092, 0.1161, 1.4064, 0.1085, 0.1177, 0.2712, 0.0859, 0.1137,\n",
|
215 |
+
" 0.1105, 0.0766, 0.1608, 0.1056, 0.0922, 0.1181, 0.1320, 0.1091, -0.5891, 0.0859, 0.1173, 0.1161, 0.1254, 0.0979, 0.1431, 0.1107, 0.1218, 0.1124, 0.1372, 0.0978, 0.0972,\n",
|
216 |
+
" 0.0965, 0.1371], requires_grad=True)"
|
217 |
+
]
|
218 |
+
},
|
219 |
+
"execution_count": 11,
|
220 |
+
"metadata": {},
|
221 |
+
"output_type": "execute_result"
|
222 |
+
}
|
223 |
+
],
|
224 |
+
"source": [
|
225 |
+
"ps[1]"
|
226 |
+
]
|
227 |
+
},
|
228 |
+
{
|
229 |
+
"cell_type": "code",
|
230 |
+
"execution_count": 12,
|
231 |
+
"id": "ee70c89e",
|
232 |
+
"metadata": {},
|
233 |
+
"outputs": [
|
234 |
+
{
|
235 |
+
"data": {
|
236 |
+
"text/plain": [
|
237 |
+
"torch.Size([128, 3, 4, 4])"
|
238 |
+
]
|
239 |
+
},
|
240 |
+
"execution_count": 12,
|
241 |
+
"metadata": {},
|
242 |
+
"output_type": "execute_result"
|
243 |
+
}
|
244 |
+
],
|
245 |
+
"source": [
|
246 |
+
"ps[0].shape"
|
247 |
+
]
|
248 |
+
},
|
249 |
+
{
|
250 |
+
"cell_type": "code",
|
251 |
+
"execution_count": 13,
|
252 |
+
"id": "820af164",
|
253 |
+
"metadata": {},
|
254 |
+
"outputs": [
|
255 |
+
{
|
256 |
+
"data": {
|
257 |
+
"text/plain": [
|
258 |
+
"Parameter containing:\n",
|
259 |
+
"tensor([[[[ 0.0676, -0.0087, 0.0545, 0.0086],\n",
|
260 |
+
" [-0.0414, 0.0410, 0.0634, -0.0536],\n",
|
261 |
+
" [ 0.0205, -0.0519, -0.0312, -0.1045],\n",
|
262 |
+
" [ 0.0402, 0.0342, -0.0317, 0.0408]],\n",
|
263 |
+
"\n",
|
264 |
+
" [[ 0.0604, -0.0973, 0.0038, 0.0102],\n",
|
265 |
+
" [-0.0717, -0.0307, 0.1300, -0.0020],\n",
|
266 |
+
" [ 0.0316, -0.0194, 0.0203, -0.0690],\n",
|
267 |
+
" [ 0.0267, -0.0329, -0.0871, 0.0848]],\n",
|
268 |
+
"\n",
|
269 |
+
" [[ 0.0095, -0.0773, -0.0409, -0.0117],\n",
|
270 |
+
" [-0.0157, 0.0584, 0.0806, 0.0139],\n",
|
271 |
+
" [ 0.0080, 0.0120, 0.0473, 0.0032],\n",
|
272 |
+
" [-0.0202, -0.0610, -0.0463, 0.0379]]],\n",
|
273 |
+
"\n",
|
274 |
+
"\n",
|
275 |
+
" [[[ 0.0125, 0.0295, -0.0431, -0.0239],\n",
|
276 |
+
" [ 0.1037, 0.0095, -0.0408, -0.0435],\n",
|
277 |
+
" [-0.0238, -0.0353, 0.0906, 0.0512],\n",
|
278 |
+
" [-0.0780, -0.0395, 0.0631, 0.0223]],\n",
|
279 |
+
"\n",
|
280 |
+
" [[ 0.0176, 0.0215, -0.0735, -0.0386],\n",
|
281 |
+
" [ 0.1796, 0.0281, -0.0918, -0.0697],\n",
|
282 |
+
" [-0.0159, -0.0721, 0.0837, 0.0534],\n",
|
283 |
+
" [-0.1013, -0.0632, 0.0769, 0.0209]],\n",
|
284 |
+
"\n",
|
285 |
+
" [[ 0.0417, 0.0416, -0.0144, -0.0016],\n",
|
286 |
+
" [ 0.0647, -0.0352, -0.0641, -0.0393],\n",
|
287 |
+
" [-0.0197, -0.0451, 0.0309, 0.0219],\n",
|
288 |
+
" [-0.0398, -0.0191, 0.0455, 0.0227]]],\n",
|
289 |
+
"\n",
|
290 |
+
"\n",
|
291 |
+
" [[[-0.2325, 0.0122, -0.1345, 0.2155],\n",
|
292 |
+
" [-0.0083, 0.0361, 0.2248, -0.1398],\n",
|
293 |
+
" [ 0.1303, -0.1134, 0.0068, -0.1294],\n",
|
294 |
+
" [-0.0197, 0.2098, -0.0581, 0.0922]],\n",
|
295 |
+
"\n",
|
296 |
+
" [[ 0.2432, 0.0751, -0.0592, -0.2341],\n",
|
297 |
+
" [-0.1494, 0.2329, -0.0505, 0.2714],\n",
|
298 |
+
" [-0.0705, 0.0158, -0.1147, -0.1022],\n",
|
299 |
+
" [-0.1257, -0.0737, -0.1645, 0.2448]],\n",
|
300 |
+
"\n",
|
301 |
+
" [[ 0.0091, -0.2092, 0.1231, 0.0481],\n",
|
302 |
+
" [ 0.0810, 0.0679, 0.0109, -0.2091],\n",
|
303 |
+
" [-0.0667, -0.1496, 0.0593, 0.2278],\n",
|
304 |
+
" [ 0.1472, 0.0180, 0.0494, -0.2382]]],\n",
|
305 |
+
"\n",
|
306 |
+
"\n",
|
307 |
+
" ...,\n",
|
308 |
+
"\n",
|
309 |
+
"\n",
|
310 |
+
" [[[ 0.0610, 0.0315, -0.0084, 0.0471],\n",
|
311 |
+
" [-0.0107, -0.0403, -0.0522, 0.0147],\n",
|
312 |
+
" [-0.0081, -0.0787, -0.0567, 0.0257],\n",
|
313 |
+
" [ 0.0607, 0.0121, -0.0009, 0.0527]],\n",
|
314 |
+
"\n",
|
315 |
+
" [[ 0.0848, 0.0221, -0.0110, 0.0598],\n",
|
316 |
+
" [ 0.0108, -0.0696, -0.0797, 0.0153],\n",
|
317 |
+
" [-0.0134, -0.0834, -0.1004, 0.0146],\n",
|
318 |
+
" [ 0.0764, -0.0086, -0.0255, 0.0630]],\n",
|
319 |
+
"\n",
|
320 |
+
" [[ 0.0450, 0.0260, 0.0104, 0.0414],\n",
|
321 |
+
" [-0.0085, -0.0473, -0.0601, 0.0060],\n",
|
322 |
+
" [-0.0108, -0.0693, -0.0592, 0.0108],\n",
|
323 |
+
" [ 0.0453, 0.0176, 0.0093, 0.0387]]],\n",
|
324 |
+
"\n",
|
325 |
+
"\n",
|
326 |
+
" [[[ 0.0108, 0.0956, -0.0525, 0.1485],\n",
|
327 |
+
" [-0.1367, 0.0198, 0.1790, -0.2785],\n",
|
328 |
+
" [-0.0201, -0.0416, 0.0298, -0.0499],\n",
|
329 |
+
" [ 0.0132, 0.1518, -0.0708, 0.0469]],\n",
|
330 |
+
"\n",
|
331 |
+
" [[-0.2498, -0.0338, -0.0655, 0.0837],\n",
|
332 |
+
" [ 0.3101, 0.1478, -0.3660, 0.2641],\n",
|
333 |
+
" [-0.2173, -0.0247, 0.2450, -0.0878],\n",
|
334 |
+
" [ 0.2488, -0.3835, 0.2099, -0.1128]],\n",
|
335 |
+
"\n",
|
336 |
+
" [[ 0.0828, 0.0679, 0.0321, -0.1248],\n",
|
337 |
+
" [-0.0229, -0.1069, 0.1853, -0.0088],\n",
|
338 |
+
" [ 0.1535, -0.0361, -0.1550, 0.0587],\n",
|
339 |
+
" [-0.2292, 0.1678, -0.1633, 0.0838]]],\n",
|
340 |
+
"\n",
|
341 |
+
"\n",
|
342 |
+
" [[[ 0.0447, 0.0269, 0.0369, 0.0447],\n",
|
343 |
+
" [-0.0661, -0.0835, -0.0688, -0.0874],\n",
|
344 |
+
" [ 0.0959, 0.0734, 0.0859, 0.0700],\n",
|
345 |
+
" [-0.0373, -0.0353, -0.0441, -0.0228]],\n",
|
346 |
+
"\n",
|
347 |
+
" [[ 0.0233, 0.0290, 0.0366, 0.0294],\n",
|
348 |
+
" [-0.0803, -0.0673, -0.0811, -0.0687],\n",
|
349 |
+
" [ 0.0933, 0.0583, 0.0847, 0.0625],\n",
|
350 |
+
" [-0.0437, -0.0497, -0.0222, -0.0267]],\n",
|
351 |
+
"\n",
|
352 |
+
" [[ 0.0341, 0.0366, 0.0447, 0.0535],\n",
|
353 |
+
" [-0.0677, -0.0885, -0.0608, -0.0757],\n",
|
354 |
+
" [ 0.0724, 0.0587, 0.0756, 0.0716],\n",
|
355 |
+
" [-0.0456, -0.0510, -0.0355, -0.0255]]]], requires_grad=True)"
|
356 |
+
]
|
357 |
+
},
|
358 |
+
"execution_count": 13,
|
359 |
+
"metadata": {},
|
360 |
+
"output_type": "execute_result"
|
361 |
+
}
|
362 |
+
],
|
363 |
+
"source": [
|
364 |
+
"ps[0]"
|
365 |
+
]
|
366 |
+
},
|
367 |
+
{
|
368 |
+
"cell_type": "code",
|
369 |
+
"execution_count": 14,
|
370 |
+
"id": "f479fca8",
|
371 |
+
"metadata": {},
|
372 |
+
"outputs": [],
|
373 |
+
"source": [
|
374 |
+
"#This part is for exporting\n",
|
375 |
+
"from nbdev.export import notebook2script"
|
376 |
+
]
|
377 |
+
},
|
378 |
+
{
|
379 |
+
"cell_type": "code",
|
380 |
+
"execution_count": 15,
|
381 |
+
"id": "90437873",
|
382 |
+
"metadata": {},
|
383 |
+
"outputs": [
|
384 |
+
{
|
385 |
+
"name": "stdout",
|
386 |
+
"output_type": "stream",
|
387 |
+
"text": [
|
388 |
+
"Converted app.ipynb.\n"
|
389 |
+
]
|
390 |
+
},
|
391 |
+
{
|
392 |
+
"data": {
|
393 |
+
"text/html": [],
|
394 |
+
"text/plain": [
|
395 |
+
"<IPython.core.display.HTML object>"
|
396 |
+
]
|
397 |
+
},
|
398 |
+
"metadata": {},
|
399 |
+
"output_type": "display_data"
|
400 |
+
},
|
401 |
+
{
|
402 |
+
"data": {
|
403 |
+
"text/html": [],
|
404 |
+
"text/plain": [
|
405 |
+
"<IPython.core.display.HTML object>"
|
406 |
+
]
|
407 |
+
},
|
408 |
+
"metadata": {},
|
409 |
+
"output_type": "display_data"
|
410 |
+
},
|
411 |
+
{
|
412 |
+
"data": {
|
413 |
+
"text/html": [],
|
414 |
+
"text/plain": [
|
415 |
+
"<IPython.core.display.HTML object>"
|
416 |
+
]
|
417 |
+
},
|
418 |
+
"metadata": {},
|
419 |
+
"output_type": "display_data"
|
420 |
+
},
|
421 |
+
{
|
422 |
+
"data": {
|
423 |
+
"text/html": [],
|
424 |
+
"text/plain": [
|
425 |
+
"<IPython.core.display.HTML object>"
|
426 |
+
]
|
427 |
+
},
|
428 |
+
"metadata": {},
|
429 |
+
"output_type": "display_data"
|
430 |
+
}
|
431 |
+
],
|
432 |
+
"source": [
|
433 |
+
"notebook2script('app.ipynb')"
|
434 |
+
]
|
435 |
+
},
|
436 |
+
{
|
437 |
+
"cell_type": "code",
|
438 |
+
"execution_count": null,
|
439 |
+
"id": "c52e64d8",
|
440 |
+
"metadata": {},
|
441 |
+
"outputs": [],
|
442 |
+
"source": []
|
443 |
+
}
|
444 |
+
],
|
445 |
+
"metadata": {
|
446 |
+
"kernelspec": {
|
447 |
+
"display_name": "Python 3 (ipykernel)",
|
448 |
+
"language": "python",
|
449 |
+
"name": "python3"
|
450 |
+
},
|
451 |
+
"language_info": {
|
452 |
+
"codemirror_mode": {
|
453 |
+
"name": "ipython",
|
454 |
+
"version": 3
|
455 |
+
},
|
456 |
+
"file_extension": ".py",
|
457 |
+
"mimetype": "text/x-python",
|
458 |
+
"name": "python",
|
459 |
+
"nbconvert_exporter": "python",
|
460 |
+
"pygments_lexer": "ipython3",
|
461 |
+
"version": "3.8.13"
|
462 |
+
}
|
463 |
+
},
|
464 |
+
"nbformat": 4,
|
465 |
+
"nbformat_minor": 5
|
466 |
+
}
|
app.py
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# AUTOGENERATED! DO NOT EDIT! File to edit: . (unless otherwise specified).
|
2 |
+
|
3 |
+
__all__ = ['is_cat', 'learn', 'classify_image', 'categories', 'image', 'label', 'examples', 'intf']
|
4 |
+
|
5 |
+
# Cell
|
6 |
+
from fastbook import *
|
7 |
+
from fastai.vision.all import *
|
8 |
+
import gradio as gr
|
9 |
+
|
10 |
+
def is_cat(x): return x[0].isupper()
|
11 |
+
|
12 |
+
# Cell
|
13 |
+
learn = load_learner('export.pkl')
|
14 |
+
|
15 |
+
# Cell
|
16 |
+
categories = ('Happy','Angry','Sad')
|
17 |
+
|
18 |
+
def classify_image(img):
|
19 |
+
pred,idx,probs = learn.predict(img)
|
20 |
+
return dict(zip(categories,map(float,probs)))
|
21 |
+
|
22 |
+
# Cell
|
23 |
+
image = gr.inputs.Image(shape=(192,192))
|
24 |
+
label = gr.outputs.Label()
|
25 |
+
examples = ['Happy.jpg','Angry.jpg','Sad.jpg']
|
26 |
+
|
27 |
+
intf = gr.Interface(fn=classify_image, inputs=image, outputs=label, examples=examples)
|
28 |
+
intf.launch(inline=False)
|
export.pkl
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:48f8f6a1c5a8e472ab59b7f0e543ee1c148c113d1e928160460540e29346144c
|
3 |
+
size 354762035
|
requirements.txt
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
fastai
|
2 |
+
fastbook
|
3 |
+
scikit-image
|
4 |
+
timm
|