dyuchus commited on
Commit
e66caf8
1 Parent(s): 8b8eefa

notebook uploaded

Browse files
20220918_dog_cat_classifier_with_gradio.ipynb ADDED
@@ -0,0 +1,591 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 17,
6
+ "id": "3343dd65",
7
+ "metadata": {},
8
+ "outputs": [],
9
+ "source": [
10
+ "#|default_exp app"
11
+ ]
12
+ },
13
+ {
14
+ "cell_type": "code",
15
+ "execution_count": 10,
16
+ "id": "01903d17",
17
+ "metadata": {},
18
+ "outputs": [
19
+ {
20
+ "name": "stderr",
21
+ "output_type": "stream",
22
+ "text": [
23
+ "/home/noname/mambaforge/envs/fastai22/lib/python3.10/site-packages/torchvision/io/image.py:13: UserWarning: Failed to load image Python extension: libc10_cuda.so: cannot open shared object file: No such file or directory\n",
24
+ " warn(f\"Failed to load image Python extension: {e}\")\n"
25
+ ]
26
+ }
27
+ ],
28
+ "source": [
29
+ "#|export\n",
30
+ "from fastai.vision.all import *\n",
31
+ "import gradio as gr\n",
32
+ "\n",
33
+ "def is_cat(x): return x[0].isupper()"
34
+ ]
35
+ },
36
+ {
37
+ "cell_type": "code",
38
+ "execution_count": 15,
39
+ "id": "47886c74",
40
+ "metadata": {},
41
+ "outputs": [
42
+ {
43
+ "data": {
44
+ "text/plain": [
45
+ "['dog_01.jpeg',\n",
46
+ " '.ipynb_checkpoints',\n",
47
+ " 'Untitled.ipynb',\n",
48
+ " 'comments.txt',\n",
49
+ " 'minima']"
50
+ ]
51
+ },
52
+ "execution_count": 15,
53
+ "metadata": {},
54
+ "output_type": "execute_result"
55
+ }
56
+ ],
57
+ "source": [
58
+ "import os\n",
59
+ "os.listdir()"
60
+ ]
61
+ },
62
+ {
63
+ "cell_type": "code",
64
+ "execution_count": 16,
65
+ "id": "94399442",
66
+ "metadata": {},
67
+ "outputs": [
68
+ {
69
+ "data": {
70
+ "image/png": "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\n",
71
+ "text/plain": [
72
+ "PILImage mode=RGB size=192x96"
73
+ ]
74
+ },
75
+ "execution_count": 16,
76
+ "metadata": {},
77
+ "output_type": "execute_result"
78
+ }
79
+ ],
80
+ "source": [
81
+ "im = PILImage.create('dog_01.jpeg')\n",
82
+ "im.thumbnail((192,192))\n",
83
+ "im"
84
+ ]
85
+ },
86
+ {
87
+ "cell_type": "code",
88
+ "execution_count": 18,
89
+ "id": "eba17623",
90
+ "metadata": {},
91
+ "outputs": [],
92
+ "source": [
93
+ "#|export\n",
94
+ "learner = load_learner('20220918_dogs_cats_model.pkl')"
95
+ ]
96
+ },
97
+ {
98
+ "cell_type": "code",
99
+ "execution_count": 20,
100
+ "id": "deacac8c",
101
+ "metadata": {},
102
+ "outputs": [
103
+ {
104
+ "data": {
105
+ "text/html": [
106
+ "\n",
107
+ "<style>\n",
108
+ " /* Turns off some styling */\n",
109
+ " progress {\n",
110
+ " /* gets rid of default border in Firefox and Opera. */\n",
111
+ " border: none;\n",
112
+ " /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
113
+ " background-size: auto;\n",
114
+ " }\n",
115
+ " progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
116
+ " background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
117
+ " }\n",
118
+ " .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
119
+ " background: #F44336;\n",
120
+ " }\n",
121
+ "</style>\n"
122
+ ],
123
+ "text/plain": [
124
+ "<IPython.core.display.HTML object>"
125
+ ]
126
+ },
127
+ "metadata": {},
128
+ "output_type": "display_data"
129
+ },
130
+ {
131
+ "data": {
132
+ "text/html": [],
133
+ "text/plain": [
134
+ "<IPython.core.display.HTML object>"
135
+ ]
136
+ },
137
+ "metadata": {},
138
+ "output_type": "display_data"
139
+ },
140
+ {
141
+ "name": "stdout",
142
+ "output_type": "stream",
143
+ "text": [
144
+ "CPU times: user 129 ms, sys: 4.03 ms, total: 133 ms\n",
145
+ "Wall time: 83.4 ms\n"
146
+ ]
147
+ },
148
+ {
149
+ "data": {
150
+ "text/plain": [
151
+ "('False', TensorBase(0), TensorBase([9.9993e-01, 7.0497e-05]))"
152
+ ]
153
+ },
154
+ "execution_count": 20,
155
+ "metadata": {},
156
+ "output_type": "execute_result"
157
+ }
158
+ ],
159
+ "source": [
160
+ "%time learner.predict(im)"
161
+ ]
162
+ },
163
+ {
164
+ "cell_type": "code",
165
+ "execution_count": 24,
166
+ "id": "a370586b",
167
+ "metadata": {},
168
+ "outputs": [],
169
+ "source": [
170
+ "#|export\n",
171
+ "categories = ('Dog', 'Cat')\n",
172
+ "\n",
173
+ "def classify_image(img):\n",
174
+ " pred, idx, probs = learner.predict(img)\n",
175
+ " return dict(zip(categories, map(float, probs)))"
176
+ ]
177
+ },
178
+ {
179
+ "cell_type": "code",
180
+ "execution_count": 25,
181
+ "id": "84d014cf",
182
+ "metadata": {},
183
+ "outputs": [
184
+ {
185
+ "data": {
186
+ "text/html": [
187
+ "\n",
188
+ "<style>\n",
189
+ " /* Turns off some styling */\n",
190
+ " progress {\n",
191
+ " /* gets rid of default border in Firefox and Opera. */\n",
192
+ " border: none;\n",
193
+ " /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
194
+ " background-size: auto;\n",
195
+ " }\n",
196
+ " progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
197
+ " background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
198
+ " }\n",
199
+ " .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
200
+ " background: #F44336;\n",
201
+ " }\n",
202
+ "</style>\n"
203
+ ],
204
+ "text/plain": [
205
+ "<IPython.core.display.HTML object>"
206
+ ]
207
+ },
208
+ "metadata": {},
209
+ "output_type": "display_data"
210
+ },
211
+ {
212
+ "data": {
213
+ "text/html": [],
214
+ "text/plain": [
215
+ "<IPython.core.display.HTML object>"
216
+ ]
217
+ },
218
+ "metadata": {},
219
+ "output_type": "display_data"
220
+ },
221
+ {
222
+ "data": {
223
+ "text/plain": [
224
+ "{'Dog': 0.9999295473098755, 'Cat': 7.049667328828946e-05}"
225
+ ]
226
+ },
227
+ "execution_count": 25,
228
+ "metadata": {},
229
+ "output_type": "execute_result"
230
+ }
231
+ ],
232
+ "source": [
233
+ "classify_image(im)"
234
+ ]
235
+ },
236
+ {
237
+ "cell_type": "code",
238
+ "execution_count": 31,
239
+ "id": "4db1095c",
240
+ "metadata": {},
241
+ "outputs": [
242
+ {
243
+ "name": "stdout",
244
+ "output_type": "stream",
245
+ "text": [
246
+ "Running on local URL: http://127.0.0.1:7860\n",
247
+ "\n",
248
+ "To create a public link, set `share=True` in `launch()`.\n"
249
+ ]
250
+ },
251
+ {
252
+ "data": {
253
+ "text/plain": [
254
+ "(<gradio.routes.App at 0x7f3bf0093880>, 'http://127.0.0.1:7860/', None)"
255
+ ]
256
+ },
257
+ "execution_count": 31,
258
+ "metadata": {},
259
+ "output_type": "execute_result"
260
+ },
261
+ {
262
+ "data": {
263
+ "text/html": [
264
+ "\n",
265
+ "<style>\n",
266
+ " /* Turns off some styling */\n",
267
+ " progress {\n",
268
+ " /* gets rid of default border in Firefox and Opera. */\n",
269
+ " border: none;\n",
270
+ " /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
271
+ " background-size: auto;\n",
272
+ " }\n",
273
+ " progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
274
+ " background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
275
+ " }\n",
276
+ " .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
277
+ " background: #F44336;\n",
278
+ " }\n",
279
+ "</style>\n"
280
+ ],
281
+ "text/plain": [
282
+ "<IPython.core.display.HTML object>"
283
+ ]
284
+ },
285
+ "metadata": {},
286
+ "output_type": "display_data"
287
+ },
288
+ {
289
+ "data": {
290
+ "text/html": [],
291
+ "text/plain": [
292
+ "<IPython.core.display.HTML object>"
293
+ ]
294
+ },
295
+ "metadata": {},
296
+ "output_type": "display_data"
297
+ },
298
+ {
299
+ "data": {
300
+ "text/html": [
301
+ "\n",
302
+ "<style>\n",
303
+ " /* Turns off some styling */\n",
304
+ " progress {\n",
305
+ " /* gets rid of default border in Firefox and Opera. */\n",
306
+ " border: none;\n",
307
+ " /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
308
+ " background-size: auto;\n",
309
+ " }\n",
310
+ " progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
311
+ " background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
312
+ " }\n",
313
+ " .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
314
+ " background: #F44336;\n",
315
+ " }\n",
316
+ "</style>\n"
317
+ ],
318
+ "text/plain": [
319
+ "<IPython.core.display.HTML object>"
320
+ ]
321
+ },
322
+ "metadata": {},
323
+ "output_type": "display_data"
324
+ },
325
+ {
326
+ "data": {
327
+ "text/html": [],
328
+ "text/plain": [
329
+ "<IPython.core.display.HTML object>"
330
+ ]
331
+ },
332
+ "metadata": {},
333
+ "output_type": "display_data"
334
+ },
335
+ {
336
+ "data": {
337
+ "text/html": [
338
+ "\n",
339
+ "<style>\n",
340
+ " /* Turns off some styling */\n",
341
+ " progress {\n",
342
+ " /* gets rid of default border in Firefox and Opera. */\n",
343
+ " border: none;\n",
344
+ " /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
345
+ " background-size: auto;\n",
346
+ " }\n",
347
+ " progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
348
+ " background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
349
+ " }\n",
350
+ " .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
351
+ " background: #F44336;\n",
352
+ " }\n",
353
+ "</style>\n"
354
+ ],
355
+ "text/plain": [
356
+ "<IPython.core.display.HTML object>"
357
+ ]
358
+ },
359
+ "metadata": {},
360
+ "output_type": "display_data"
361
+ },
362
+ {
363
+ "data": {
364
+ "text/html": [],
365
+ "text/plain": [
366
+ "<IPython.core.display.HTML object>"
367
+ ]
368
+ },
369
+ "metadata": {},
370
+ "output_type": "display_data"
371
+ },
372
+ {
373
+ "data": {
374
+ "text/html": [
375
+ "\n",
376
+ "<style>\n",
377
+ " /* Turns off some styling */\n",
378
+ " progress {\n",
379
+ " /* gets rid of default border in Firefox and Opera. */\n",
380
+ " border: none;\n",
381
+ " /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
382
+ " background-size: auto;\n",
383
+ " }\n",
384
+ " progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
385
+ " background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
386
+ " }\n",
387
+ " .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
388
+ " background: #F44336;\n",
389
+ " }\n",
390
+ "</style>\n"
391
+ ],
392
+ "text/plain": [
393
+ "<IPython.core.display.HTML object>"
394
+ ]
395
+ },
396
+ "metadata": {},
397
+ "output_type": "display_data"
398
+ },
399
+ {
400
+ "data": {
401
+ "text/html": [],
402
+ "text/plain": [
403
+ "<IPython.core.display.HTML object>"
404
+ ]
405
+ },
406
+ "metadata": {},
407
+ "output_type": "display_data"
408
+ },
409
+ {
410
+ "data": {
411
+ "text/html": [
412
+ "\n",
413
+ "<style>\n",
414
+ " /* Turns off some styling */\n",
415
+ " progress {\n",
416
+ " /* gets rid of default border in Firefox and Opera. */\n",
417
+ " border: none;\n",
418
+ " /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
419
+ " background-size: auto;\n",
420
+ " }\n",
421
+ " progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
422
+ " background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
423
+ " }\n",
424
+ " .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
425
+ " background: #F44336;\n",
426
+ " }\n",
427
+ "</style>\n"
428
+ ],
429
+ "text/plain": [
430
+ "<IPython.core.display.HTML object>"
431
+ ]
432
+ },
433
+ "metadata": {},
434
+ "output_type": "display_data"
435
+ },
436
+ {
437
+ "data": {
438
+ "text/html": [],
439
+ "text/plain": [
440
+ "<IPython.core.display.HTML object>"
441
+ ]
442
+ },
443
+ "metadata": {},
444
+ "output_type": "display_data"
445
+ }
446
+ ],
447
+ "source": [
448
+ "#|export\n",
449
+ "image = gr.inputs.Image(shape=(192, 192))\n",
450
+ "label = gr.outputs.Label()\n",
451
+ "examples = ['dog_01.jpeg', 'cat_01.jpeg', 'dunno_01.jpeg']\n",
452
+ "\n",
453
+ "intf = gr.Interface(fn=classify_image, inputs=image, outputs=label, examples=examples)\n",
454
+ "intf.launch(inline=False)"
455
+ ]
456
+ },
457
+ {
458
+ "cell_type": "markdown",
459
+ "id": "f7e77408",
460
+ "metadata": {},
461
+ "source": [
462
+ "# export"
463
+ ]
464
+ },
465
+ {
466
+ "cell_type": "code",
467
+ "execution_count": 35,
468
+ "id": "cf22087d",
469
+ "metadata": {},
470
+ "outputs": [
471
+ {
472
+ "name": "stdout",
473
+ "output_type": "stream",
474
+ "text": [
475
+ "nbdev 2.3.6 py_0 fastai\r\n"
476
+ ]
477
+ }
478
+ ],
479
+ "source": [
480
+ "!conda list | grep nbd"
481
+ ]
482
+ },
483
+ {
484
+ "cell_type": "code",
485
+ "execution_count": 39,
486
+ "id": "e94b2e93",
487
+ "metadata": {},
488
+ "outputs": [
489
+ {
490
+ "ename": "NameError",
491
+ "evalue": "name 'nbdev' is not defined",
492
+ "output_type": "error",
493
+ "traceback": [
494
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
495
+ "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
496
+ "Cell \u001b[0;32mIn [39], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28mtype\u001b[39m(\u001b[43mnbdev\u001b[49m\u001b[38;5;241m.\u001b[39mexport)\n",
497
+ "\u001b[0;31mNameError\u001b[0m: name 'nbdev' is not defined"
498
+ ]
499
+ }
500
+ ],
501
+ "source": [
502
+ "type(nbdev.export)"
503
+ ]
504
+ },
505
+ {
506
+ "cell_type": "code",
507
+ "execution_count": 41,
508
+ "id": "3529cd88",
509
+ "metadata": {},
510
+ "outputs": [
511
+ {
512
+ "data": {
513
+ "text/plain": [
514
+ "['config.py',\n",
515
+ " '_modidx.py',\n",
516
+ " 'serve.py',\n",
517
+ " 'process.py',\n",
518
+ " 'imports.py',\n",
519
+ " 'clean.py',\n",
520
+ " 'showdoc.py',\n",
521
+ " '__pycache__',\n",
522
+ " 'export.py',\n",
523
+ " 'serve_drv.py',\n",
524
+ " 'quarto.py',\n",
525
+ " 'merge.py',\n",
526
+ " 'extract_attachments.py',\n",
527
+ " 'migrate.py',\n",
528
+ " 'processors.py',\n",
529
+ " 'cli.py',\n",
530
+ " 'maker.py',\n",
531
+ " 'frontmatter.py',\n",
532
+ " 'test.py',\n",
533
+ " 'doclinks.py',\n",
534
+ " 'sync.py',\n",
535
+ " '__init__.py',\n",
536
+ " 'qmd.py',\n",
537
+ " 'release.py']"
538
+ ]
539
+ },
540
+ "execution_count": 41,
541
+ "metadata": {},
542
+ "output_type": "execute_result"
543
+ }
544
+ ],
545
+ "source": [
546
+ "os.listdir('/home/noname/mambaforge/envs/fastai22/lib/python3.10/site-packages/nbdev')"
547
+ ]
548
+ },
549
+ {
550
+ "cell_type": "code",
551
+ "execution_count": 42,
552
+ "id": "8017f9ec",
553
+ "metadata": {},
554
+ "outputs": [],
555
+ "source": [
556
+ "from nbdev.export import nb_export"
557
+ ]
558
+ },
559
+ {
560
+ "cell_type": "code",
561
+ "execution_count": 43,
562
+ "id": "ffc4bb56",
563
+ "metadata": {},
564
+ "outputs": [],
565
+ "source": [
566
+ "nb_export('20220918_dog_cat_classifier_with_gradio.ipynb')"
567
+ ]
568
+ }
569
+ ],
570
+ "metadata": {
571
+ "kernelspec": {
572
+ "display_name": "fastai-kernel",
573
+ "language": "python",
574
+ "name": "fastai-kernel"
575
+ },
576
+ "language_info": {
577
+ "codemirror_mode": {
578
+ "name": "ipython",
579
+ "version": 3
580
+ },
581
+ "file_extension": ".py",
582
+ "mimetype": "text/x-python",
583
+ "name": "python",
584
+ "nbconvert_exporter": "python",
585
+ "pygments_lexer": "ipython3",
586
+ "version": "3.10.4"
587
+ }
588
+ },
589
+ "nbformat": 4,
590
+ "nbformat_minor": 5
591
+ }