haseena97 commited on
Commit
b2c85db
1 Parent(s): a6b95d8

upload for classification

Browse files
Files changed (7) hide show
  1. app.py +12 -0
  2. ball deploy.ipynb +387 -0
  3. ball.pkl +3 -0
  4. bowling.jpg +0 -0
  5. golf.jpg +0 -0
  6. requirements.txt +5 -0
  7. volleyball.jpg +0 -0
app.py ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastai.vision.all import *
2
+ import gradio as gr
3
+ learn = load_learner('ball.pkl')
4
+ def classify_image (img):
5
+ ball,_,probs = learn.predict(img)
6
+ return (f"This is a: {ball}")
7
+ image = gr.inputs.Image(shape=(192,192))
8
+ label = gr.outputs.Label()
9
+ examples = ['bowling.jpg','golf.jpg','volleyball.jpg']
10
+
11
+ intf = gr.Interface(fn = classify_image, inputs = image, outputs = label, examples = examples)
12
+ intf.launch(inline = False)
ball deploy.ipynb ADDED
@@ -0,0 +1,387 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": null,
6
+ "metadata": {},
7
+ "outputs": [],
8
+ "source": [
9
+ "#!pip install gradio"
10
+ ]
11
+ },
12
+ {
13
+ "cell_type": "code",
14
+ "execution_count": 2,
15
+ "metadata": {
16
+ "colab": {
17
+ "base_uri": "https://localhost:8080/"
18
+ },
19
+ "id": "U13e9NA0rgKN",
20
+ "outputId": "a58fee4c-f422-4f4c-bb1f-3479bc5094f9"
21
+ },
22
+ "outputs": [],
23
+ "source": [
24
+ "from fastai.vision.all import *\n",
25
+ "import gradio as gr"
26
+ ]
27
+ },
28
+ {
29
+ "cell_type": "code",
30
+ "execution_count": 3,
31
+ "metadata": {
32
+ "colab": {
33
+ "base_uri": "https://localhost:8080/",
34
+ "height": 345
35
+ },
36
+ "id": "bcBSMQ2jnG_w",
37
+ "outputId": "c8b87cf0-6877-4d4e-c8c9-66a4eedaa7f6"
38
+ },
39
+ "outputs": [
40
+ {
41
+ "data": {
42
+ "image/png": "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\n",
43
+ "text/plain": [
44
+ "PILImage mode=RGB size=192x179"
45
+ ]
46
+ },
47
+ "execution_count": 3,
48
+ "metadata": {},
49
+ "output_type": "execute_result"
50
+ }
51
+ ],
52
+ "source": [
53
+ "im = PILImage.create('volleyball.jpg') #dah ada dlm folder\n",
54
+ "im.thumbnail((192,192))\n",
55
+ "im"
56
+ ]
57
+ },
58
+ {
59
+ "cell_type": "code",
60
+ "execution_count": 7,
61
+ "metadata": {
62
+ "id": "UYAKQEhln0KW"
63
+ },
64
+ "outputs": [],
65
+ "source": [
66
+ "learn = load_learner('model.pkl')"
67
+ ]
68
+ },
69
+ {
70
+ "cell_type": "code",
71
+ "execution_count": 8,
72
+ "metadata": {
73
+ "id": "-2m5gGBeoGPc"
74
+ },
75
+ "outputs": [
76
+ {
77
+ "data": {
78
+ "text/html": [
79
+ "\n",
80
+ "<style>\n",
81
+ " /* Turns off some styling */\n",
82
+ " progress {\n",
83
+ " /* gets rid of default border in Firefox and Opera. */\n",
84
+ " border: none;\n",
85
+ " /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
86
+ " background-size: auto;\n",
87
+ " }\n",
88
+ " progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
89
+ " background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
90
+ " }\n",
91
+ " .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
92
+ " background: #F44336;\n",
93
+ " }\n",
94
+ "</style>\n"
95
+ ],
96
+ "text/plain": [
97
+ "<IPython.core.display.HTML object>"
98
+ ]
99
+ },
100
+ "metadata": {},
101
+ "output_type": "display_data"
102
+ },
103
+ {
104
+ "data": {
105
+ "text/html": [],
106
+ "text/plain": [
107
+ "<IPython.core.display.HTML object>"
108
+ ]
109
+ },
110
+ "metadata": {},
111
+ "output_type": "display_data"
112
+ },
113
+ {
114
+ "data": {
115
+ "text/plain": [
116
+ "('False', TensorBase(0), TensorBase([0.5978, 0.4022]))"
117
+ ]
118
+ },
119
+ "execution_count": 8,
120
+ "metadata": {},
121
+ "output_type": "execute_result"
122
+ }
123
+ ],
124
+ "source": [
125
+ "learn.predict(im)"
126
+ ]
127
+ },
128
+ {
129
+ "cell_type": "code",
130
+ "execution_count": 9,
131
+ "metadata": {
132
+ "id": "UqMJi6XLp3fT"
133
+ },
134
+ "outputs": [],
135
+ "source": [
136
+ "categories = ('dog', 'cat')\n",
137
+ "def classify_image (img):\n",
138
+ " pred,idx,probs = learn.predict(img) # function classify image(predict, index, probability cat/dog)\n",
139
+ " return dict(zip(categories, map(float,probs)))\n",
140
+ " # gradio x handle tensors, so kena map jadi float"
141
+ ]
142
+ },
143
+ {
144
+ "cell_type": "code",
145
+ "execution_count": 10,
146
+ "metadata": {
147
+ "id": "vGQ4LhSzqtI_"
148
+ },
149
+ "outputs": [
150
+ {
151
+ "data": {
152
+ "text/html": [
153
+ "\n",
154
+ "<style>\n",
155
+ " /* Turns off some styling */\n",
156
+ " progress {\n",
157
+ " /* gets rid of default border in Firefox and Opera. */\n",
158
+ " border: none;\n",
159
+ " /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
160
+ " background-size: auto;\n",
161
+ " }\n",
162
+ " progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
163
+ " background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
164
+ " }\n",
165
+ " .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
166
+ " background: #F44336;\n",
167
+ " }\n",
168
+ "</style>\n"
169
+ ],
170
+ "text/plain": [
171
+ "<IPython.core.display.HTML object>"
172
+ ]
173
+ },
174
+ "metadata": {},
175
+ "output_type": "display_data"
176
+ },
177
+ {
178
+ "data": {
179
+ "text/html": [],
180
+ "text/plain": [
181
+ "<IPython.core.display.HTML object>"
182
+ ]
183
+ },
184
+ "metadata": {},
185
+ "output_type": "display_data"
186
+ },
187
+ {
188
+ "data": {
189
+ "text/plain": [
190
+ "{'dog': 0.5977680087089539, 'cat': 0.402231901884079}"
191
+ ]
192
+ },
193
+ "execution_count": 10,
194
+ "metadata": {},
195
+ "output_type": "execute_result"
196
+ }
197
+ ],
198
+ "source": [
199
+ "# test function tu\n",
200
+ "classify_image(im)"
201
+ ]
202
+ },
203
+ {
204
+ "cell_type": "code",
205
+ "execution_count": 12,
206
+ "metadata": {
207
+ "id": "kK4sQqiQq4jh"
208
+ },
209
+ "outputs": [
210
+ {
211
+ "name": "stdout",
212
+ "output_type": "stream",
213
+ "text": [
214
+ "Running on local URL: http://127.0.0.1:7860/\n",
215
+ "\n",
216
+ "To create a public link, set `share=True` in `launch()`.\n"
217
+ ]
218
+ },
219
+ {
220
+ "data": {
221
+ "text/plain": [
222
+ "(<gradio.routes.App at 0x1c09bcb4f40>, 'http://127.0.0.1:7860/', None)"
223
+ ]
224
+ },
225
+ "execution_count": 12,
226
+ "metadata": {},
227
+ "output_type": "execute_result"
228
+ },
229
+ {
230
+ "data": {
231
+ "text/html": [
232
+ "\n",
233
+ "<style>\n",
234
+ " /* Turns off some styling */\n",
235
+ " progress {\n",
236
+ " /* gets rid of default border in Firefox and Opera. */\n",
237
+ " border: none;\n",
238
+ " /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
239
+ " background-size: auto;\n",
240
+ " }\n",
241
+ " progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
242
+ " background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
243
+ " }\n",
244
+ " .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
245
+ " background: #F44336;\n",
246
+ " }\n",
247
+ "</style>\n"
248
+ ],
249
+ "text/plain": [
250
+ "<IPython.core.display.HTML object>"
251
+ ]
252
+ },
253
+ "metadata": {},
254
+ "output_type": "display_data"
255
+ },
256
+ {
257
+ "data": {
258
+ "text/html": [],
259
+ "text/plain": [
260
+ "<IPython.core.display.HTML object>"
261
+ ]
262
+ },
263
+ "metadata": {},
264
+ "output_type": "display_data"
265
+ },
266
+ {
267
+ "data": {
268
+ "text/html": [
269
+ "\n",
270
+ "<style>\n",
271
+ " /* Turns off some styling */\n",
272
+ " progress {\n",
273
+ " /* gets rid of default border in Firefox and Opera. */\n",
274
+ " border: none;\n",
275
+ " /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
276
+ " background-size: auto;\n",
277
+ " }\n",
278
+ " progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
279
+ " background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
280
+ " }\n",
281
+ " .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
282
+ " background: #F44336;\n",
283
+ " }\n",
284
+ "</style>\n"
285
+ ],
286
+ "text/plain": [
287
+ "<IPython.core.display.HTML object>"
288
+ ]
289
+ },
290
+ "metadata": {},
291
+ "output_type": "display_data"
292
+ },
293
+ {
294
+ "data": {
295
+ "text/html": [],
296
+ "text/plain": [
297
+ "<IPython.core.display.HTML object>"
298
+ ]
299
+ },
300
+ "metadata": {},
301
+ "output_type": "display_data"
302
+ },
303
+ {
304
+ "data": {
305
+ "text/html": [
306
+ "\n",
307
+ "<style>\n",
308
+ " /* Turns off some styling */\n",
309
+ " progress {\n",
310
+ " /* gets rid of default border in Firefox and Opera. */\n",
311
+ " border: none;\n",
312
+ " /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
313
+ " background-size: auto;\n",
314
+ " }\n",
315
+ " progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
316
+ " background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
317
+ " }\n",
318
+ " .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
319
+ " background: #F44336;\n",
320
+ " }\n",
321
+ "</style>\n"
322
+ ],
323
+ "text/plain": [
324
+ "<IPython.core.display.HTML object>"
325
+ ]
326
+ },
327
+ "metadata": {},
328
+ "output_type": "display_data"
329
+ },
330
+ {
331
+ "data": {
332
+ "text/html": [],
333
+ "text/plain": [
334
+ "<IPython.core.display.HTML object>"
335
+ ]
336
+ },
337
+ "metadata": {},
338
+ "output_type": "display_data"
339
+ }
340
+ ],
341
+ "source": [
342
+ "# create gradio interface\n",
343
+ "image = gr.inputs.Image(shape=(192,192))\n",
344
+ "label = gr.outputs.Label()\n",
345
+ "examples = ['dog.jpg','cat.jpg','dunno.jpg']\n",
346
+ "\n",
347
+ "intf = gr.Interface(fn = classify_image, inputs = image, outputs = label, examples = examples)\n",
348
+ "intf.launch(inline = False)\n",
349
+ "# url in local computer, not yet in production"
350
+ ]
351
+ },
352
+ {
353
+ "cell_type": "code",
354
+ "execution_count": null,
355
+ "metadata": {
356
+ "id": "gn-se_bT6BwW"
357
+ },
358
+ "outputs": [],
359
+ "source": []
360
+ }
361
+ ],
362
+ "metadata": {
363
+ "colab": {
364
+ "collapsed_sections": [],
365
+ "provenance": []
366
+ },
367
+ "kernelspec": {
368
+ "display_name": "Python 3 (ipykernel)",
369
+ "language": "python",
370
+ "name": "python3"
371
+ },
372
+ "language_info": {
373
+ "codemirror_mode": {
374
+ "name": "ipython",
375
+ "version": 3
376
+ },
377
+ "file_extension": ".py",
378
+ "mimetype": "text/x-python",
379
+ "name": "python",
380
+ "nbconvert_exporter": "python",
381
+ "pygments_lexer": "ipython3",
382
+ "version": "3.9.12"
383
+ }
384
+ },
385
+ "nbformat": 4,
386
+ "nbformat_minor": 1
387
+ }
ball.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2a72466557dc384f2d2260333b137f431e59dcb67f2d41a651784ef5d63e4f76
3
+ size 46983979
bowling.jpg ADDED
golf.jpg ADDED
requirements.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ fastai
2
+ torch
3
+ gradio
4
+ numpy
5
+ pandas
volleyball.jpg ADDED