Spaces:
Runtime error
Runtime error
Gradio UI test
Browse files- .ipynb_checkpoints/testing-checkpoint.ipynb +157 -0
- air_chair.jpg +0 -0
- air_chair.jpgZone.Identifier +0 -0
- airbaby.jpeg +0 -0
- airbaby.jpegZone.Identifier +0 -0
- airflare.jpeg +0 -0
- airflare.jpegZone.Identifier +0 -0
- app.py +14 -4
- headspin.jpeg +0 -0
- headspin.jpegZone.Identifier +0 -0
- hollowback.jpeg +0 -0
- hollowback.jpegZone.Identifier +0 -0
- model.pkl +3 -0
- model.pklZone.Identifier +4 -0
- testing.ipynb +574 -0
.ipynb_checkpoints/testing-checkpoint.ipynb
ADDED
@@ -0,0 +1,157 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"cells": [
|
3 |
+
{
|
4 |
+
"cell_type": "code",
|
5 |
+
"execution_count": 1,
|
6 |
+
"id": "a001aeaa",
|
7 |
+
"metadata": {},
|
8 |
+
"outputs": [],
|
9 |
+
"source": [
|
10 |
+
"from fastai.vision.all import *"
|
11 |
+
]
|
12 |
+
},
|
13 |
+
{
|
14 |
+
"cell_type": "code",
|
15 |
+
"execution_count": 2,
|
16 |
+
"id": "77a1ec51",
|
17 |
+
"metadata": {},
|
18 |
+
"outputs": [
|
19 |
+
{
|
20 |
+
"ename": "ModuleNotFoundError",
|
21 |
+
"evalue": "No module named 'gradio'",
|
22 |
+
"output_type": "error",
|
23 |
+
"traceback": [
|
24 |
+
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
25 |
+
"\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)",
|
26 |
+
"Cell \u001b[0;32mIn[2], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mgradio\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mgr\u001b[39;00m\n",
|
27 |
+
"\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'gradio'"
|
28 |
+
]
|
29 |
+
}
|
30 |
+
],
|
31 |
+
"source": [
|
32 |
+
"import gradio as gr"
|
33 |
+
]
|
34 |
+
},
|
35 |
+
{
|
36 |
+
"cell_type": "code",
|
37 |
+
"execution_count": 4,
|
38 |
+
"id": "bfa6ddd8",
|
39 |
+
"metadata": {},
|
40 |
+
"outputs": [
|
41 |
+
{
|
42 |
+
"data": {
|
43 |
+
"image/png": "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\n",
|
44 |
+
"text/plain": [
|
45 |
+
"PILImage mode=RGB size=192x139"
|
46 |
+
]
|
47 |
+
},
|
48 |
+
"execution_count": 4,
|
49 |
+
"metadata": {},
|
50 |
+
"output_type": "execute_result"
|
51 |
+
}
|
52 |
+
],
|
53 |
+
"source": [
|
54 |
+
"im = PILImage.create('air_chair.jpg')\n",
|
55 |
+
"im.thumbnail((192,192))\n",
|
56 |
+
"im"
|
57 |
+
]
|
58 |
+
},
|
59 |
+
{
|
60 |
+
"cell_type": "code",
|
61 |
+
"execution_count": 6,
|
62 |
+
"id": "3e90c9c5",
|
63 |
+
"metadata": {},
|
64 |
+
"outputs": [],
|
65 |
+
"source": [
|
66 |
+
"learn = load_learner('model.pkl')"
|
67 |
+
]
|
68 |
+
},
|
69 |
+
{
|
70 |
+
"cell_type": "code",
|
71 |
+
"execution_count": 7,
|
72 |
+
"id": "8af21afa",
|
73 |
+
"metadata": {},
|
74 |
+
"outputs": [
|
75 |
+
{
|
76 |
+
"data": {
|
77 |
+
"text/html": [
|
78 |
+
"\n",
|
79 |
+
"<style>\n",
|
80 |
+
" /* Turns off some styling */\n",
|
81 |
+
" progress {\n",
|
82 |
+
" /* gets rid of default border in Firefox and Opera. */\n",
|
83 |
+
" border: none;\n",
|
84 |
+
" /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
|
85 |
+
" background-size: auto;\n",
|
86 |
+
" }\n",
|
87 |
+
" progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
|
88 |
+
" background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
|
89 |
+
" }\n",
|
90 |
+
" .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
|
91 |
+
" background: #F44336;\n",
|
92 |
+
" }\n",
|
93 |
+
"</style>\n"
|
94 |
+
],
|
95 |
+
"text/plain": [
|
96 |
+
"<IPython.core.display.HTML object>"
|
97 |
+
]
|
98 |
+
},
|
99 |
+
"metadata": {},
|
100 |
+
"output_type": "display_data"
|
101 |
+
},
|
102 |
+
{
|
103 |
+
"data": {
|
104 |
+
"text/html": [],
|
105 |
+
"text/plain": [
|
106 |
+
"<IPython.core.display.HTML object>"
|
107 |
+
]
|
108 |
+
},
|
109 |
+
"metadata": {},
|
110 |
+
"output_type": "display_data"
|
111 |
+
},
|
112 |
+
{
|
113 |
+
"data": {
|
114 |
+
"text/plain": [
|
115 |
+
"('air chair', tensor(0), tensor([0.5669, 0.1083, 0.1205, 0.0177, 0.1866]))"
|
116 |
+
]
|
117 |
+
},
|
118 |
+
"execution_count": 7,
|
119 |
+
"metadata": {},
|
120 |
+
"output_type": "execute_result"
|
121 |
+
}
|
122 |
+
],
|
123 |
+
"source": [
|
124 |
+
"learn.predict(im)"
|
125 |
+
]
|
126 |
+
},
|
127 |
+
{
|
128 |
+
"cell_type": "code",
|
129 |
+
"execution_count": null,
|
130 |
+
"id": "1300bcd6",
|
131 |
+
"metadata": {},
|
132 |
+
"outputs": [],
|
133 |
+
"source": []
|
134 |
+
}
|
135 |
+
],
|
136 |
+
"metadata": {
|
137 |
+
"kernelspec": {
|
138 |
+
"display_name": "Python 3 (ipykernel)",
|
139 |
+
"language": "python",
|
140 |
+
"name": "python3"
|
141 |
+
},
|
142 |
+
"language_info": {
|
143 |
+
"codemirror_mode": {
|
144 |
+
"name": "ipython",
|
145 |
+
"version": 3
|
146 |
+
},
|
147 |
+
"file_extension": ".py",
|
148 |
+
"mimetype": "text/x-python",
|
149 |
+
"name": "python",
|
150 |
+
"nbconvert_exporter": "python",
|
151 |
+
"pygments_lexer": "ipython3",
|
152 |
+
"version": "3.10.10"
|
153 |
+
}
|
154 |
+
},
|
155 |
+
"nbformat": 4,
|
156 |
+
"nbformat_minor": 5
|
157 |
+
}
|
air_chair.jpg
ADDED
air_chair.jpgZone.Identifier
ADDED
File without changes
|
airbaby.jpeg
ADDED
airbaby.jpegZone.Identifier
ADDED
File without changes
|
airflare.jpeg
ADDED
airflare.jpegZone.Identifier
ADDED
File without changes
|
app.py
CHANGED
@@ -1,7 +1,17 @@
|
|
|
|
1 |
import gradio as gr
|
2 |
|
3 |
-
|
4 |
-
return "Hello " + name + "!!"
|
5 |
|
6 |
-
|
7 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from fastai.vision.all import *
|
2 |
import gradio as gr
|
3 |
|
4 |
+
learn = load_learner('model.pkl')
|
|
|
5 |
|
6 |
+
categories = ('air chair','hollowback','airflare','airbaby','headspin')
|
7 |
+
|
8 |
+
def classify_image(img):
|
9 |
+
pred, idx, probs = learn.predict(img)
|
10 |
+
return dict(zip(categories, map(float,probs)))
|
11 |
+
|
12 |
+
image = gr.inputs.Image(shape=(192,192))
|
13 |
+
label = gr.outputs.Label()
|
14 |
+
examples = ['air_chair.jpg','hollowback.jpeg','airbaby.jpeg','airflare.jpeg','headspin.jpeg']
|
15 |
+
|
16 |
+
intf = gr.Interface(fn=classify_image, inputs=image, outputs=label, examples=examples)
|
17 |
+
intf.launch(inline=False)
|
headspin.jpeg
ADDED
headspin.jpegZone.Identifier
ADDED
File without changes
|
hollowback.jpeg
ADDED
hollowback.jpegZone.Identifier
ADDED
File without changes
|
model.pkl
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:a52aa21078b34c00ddf615bd10757b4ca8c1d2d68fa0933d99ccba6d13ad749a
|
3 |
+
size 46968317
|
model.pklZone.Identifier
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[ZoneTransfer]
|
2 |
+
ZoneId=3
|
3 |
+
ReferrerUrl=https://www.kaggle.com/
|
4 |
+
HostUrl=https://www.kaggleusercontent.com/kf/125221375/eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0..eGFvYdBL5KNvGoS12V43eQ.ZMpFgySFpqRq5Vfn3Vq_HF9PBOK8xgt3dSMwif2NFzn1ru4rFC7caAxoAHJXFOc3dqVrtM9sKPgpegRBsIio5OBgy4D1g-smo0TAMLdpOPrzICJ8BDNuLYP_vpRvh24t2K45Xx7TyV9afphO55o8VKPPLiHnE8YmJT8pViDY85cT40_b0PjUyiGuHrdlfbuxZxZKFafRPYevN4hpHid9QWcOkDDUF7x9TmuM66MY6tP9eZLeFSDSSeUQsH2QsBOwl_1n9IuOX7G6-4dgA0tOPqumObkCDzPPf70pEMcc9_dsRA3ewSwnY2Bm4Mz44G8bfDxhLafuZX5mfPzSpMskIm3-sCx7-ToesODgc58iDhsRJGSCbH3UJSAOgGRC-ge7Y_TsKDNi9Tr_wE73OJM3dvbrF42-glP0N0NULz3RYJVt0CS6L4elWpTf-bSCs88sVNmmfN0KZDOK0A3v_D_NPNJ2Mu8Hum6hVwjIVCKS_AUzGnqQ6MTGfDidGt62IixfgIF2zBwJq-ODzY8VuvdOMXT9UHm9bGVBSurU_p3SI0ek4la-vkkd1UBp4Ox-rdTSXBmSGvKcCe7zHWKzmZRj8CK1bk9sjFPwPD5wO5OCz122FSmuX7EqqgqqO8uVoV6zQM8RB8vz7DH1tIMhMoe_dGp5kH2OYr4q2t6ADxvvLWs.BWy5QgM2JDTTvfpbVORvIg/model.pkl
|
testing.ipynb
ADDED
@@ -0,0 +1,574 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"cells": [
|
3 |
+
{
|
4 |
+
"cell_type": "code",
|
5 |
+
"execution_count": 12,
|
6 |
+
"id": "a001aeaa",
|
7 |
+
"metadata": {},
|
8 |
+
"outputs": [],
|
9 |
+
"source": [
|
10 |
+
"#|export\n",
|
11 |
+
"from fastai.vision.all import *\n",
|
12 |
+
"import gradio as gr"
|
13 |
+
]
|
14 |
+
},
|
15 |
+
{
|
16 |
+
"cell_type": "code",
|
17 |
+
"execution_count": 13,
|
18 |
+
"id": "77a1ec51",
|
19 |
+
"metadata": {},
|
20 |
+
"outputs": [],
|
21 |
+
"source": []
|
22 |
+
},
|
23 |
+
{
|
24 |
+
"cell_type": "code",
|
25 |
+
"execution_count": 14,
|
26 |
+
"id": "bfa6ddd8",
|
27 |
+
"metadata": {},
|
28 |
+
"outputs": [
|
29 |
+
{
|
30 |
+
"data": {
|
31 |
+
"image/png": "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\n",
|
32 |
+
"text/plain": [
|
33 |
+
"PILImage mode=RGB size=192x139"
|
34 |
+
]
|
35 |
+
},
|
36 |
+
"execution_count": 14,
|
37 |
+
"metadata": {},
|
38 |
+
"output_type": "execute_result"
|
39 |
+
}
|
40 |
+
],
|
41 |
+
"source": [
|
42 |
+
"im = PILImage.create('air_chair.jpg')\n",
|
43 |
+
"im.thumbnail((192,192))\n",
|
44 |
+
"im"
|
45 |
+
]
|
46 |
+
},
|
47 |
+
{
|
48 |
+
"cell_type": "code",
|
49 |
+
"execution_count": 15,
|
50 |
+
"id": "3e90c9c5",
|
51 |
+
"metadata": {},
|
52 |
+
"outputs": [],
|
53 |
+
"source": [
|
54 |
+
"#|export\n",
|
55 |
+
"learn = load_learner('model.pkl')"
|
56 |
+
]
|
57 |
+
},
|
58 |
+
{
|
59 |
+
"cell_type": "code",
|
60 |
+
"execution_count": 16,
|
61 |
+
"id": "8af21afa",
|
62 |
+
"metadata": {},
|
63 |
+
"outputs": [
|
64 |
+
{
|
65 |
+
"data": {
|
66 |
+
"text/html": [
|
67 |
+
"\n",
|
68 |
+
"<style>\n",
|
69 |
+
" /* Turns off some styling */\n",
|
70 |
+
" progress {\n",
|
71 |
+
" /* gets rid of default border in Firefox and Opera. */\n",
|
72 |
+
" border: none;\n",
|
73 |
+
" /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
|
74 |
+
" background-size: auto;\n",
|
75 |
+
" }\n",
|
76 |
+
" progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
|
77 |
+
" background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
|
78 |
+
" }\n",
|
79 |
+
" .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
|
80 |
+
" background: #F44336;\n",
|
81 |
+
" }\n",
|
82 |
+
"</style>\n"
|
83 |
+
],
|
84 |
+
"text/plain": [
|
85 |
+
"<IPython.core.display.HTML object>"
|
86 |
+
]
|
87 |
+
},
|
88 |
+
"metadata": {},
|
89 |
+
"output_type": "display_data"
|
90 |
+
},
|
91 |
+
{
|
92 |
+
"data": {
|
93 |
+
"text/html": [],
|
94 |
+
"text/plain": [
|
95 |
+
"<IPython.core.display.HTML object>"
|
96 |
+
]
|
97 |
+
},
|
98 |
+
"metadata": {},
|
99 |
+
"output_type": "display_data"
|
100 |
+
},
|
101 |
+
{
|
102 |
+
"data": {
|
103 |
+
"text/plain": [
|
104 |
+
"('air chair', tensor(0), tensor([0.5669, 0.1083, 0.1205, 0.0177, 0.1866]))"
|
105 |
+
]
|
106 |
+
},
|
107 |
+
"execution_count": 16,
|
108 |
+
"metadata": {},
|
109 |
+
"output_type": "execute_result"
|
110 |
+
}
|
111 |
+
],
|
112 |
+
"source": [
|
113 |
+
"learn.predict(im)"
|
114 |
+
]
|
115 |
+
},
|
116 |
+
{
|
117 |
+
"cell_type": "code",
|
118 |
+
"execution_count": 17,
|
119 |
+
"id": "1300bcd6",
|
120 |
+
"metadata": {},
|
121 |
+
"outputs": [],
|
122 |
+
"source": [
|
123 |
+
"#|export\n",
|
124 |
+
"categories = ('air chair','hollowback','airflare','airbaby','headspin')\n",
|
125 |
+
"\n",
|
126 |
+
"def classify_image(img):\n",
|
127 |
+
" pred, idx, probs = learn.predict(img)\n",
|
128 |
+
" return dict(zip(categories, map(float,probs)))"
|
129 |
+
]
|
130 |
+
},
|
131 |
+
{
|
132 |
+
"cell_type": "code",
|
133 |
+
"execution_count": 18,
|
134 |
+
"id": "c8deb5e3",
|
135 |
+
"metadata": {},
|
136 |
+
"outputs": [
|
137 |
+
{
|
138 |
+
"data": {
|
139 |
+
"text/html": [
|
140 |
+
"\n",
|
141 |
+
"<style>\n",
|
142 |
+
" /* Turns off some styling */\n",
|
143 |
+
" progress {\n",
|
144 |
+
" /* gets rid of default border in Firefox and Opera. */\n",
|
145 |
+
" border: none;\n",
|
146 |
+
" /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
|
147 |
+
" background-size: auto;\n",
|
148 |
+
" }\n",
|
149 |
+
" progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
|
150 |
+
" background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
|
151 |
+
" }\n",
|
152 |
+
" .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
|
153 |
+
" background: #F44336;\n",
|
154 |
+
" }\n",
|
155 |
+
"</style>\n"
|
156 |
+
],
|
157 |
+
"text/plain": [
|
158 |
+
"<IPython.core.display.HTML object>"
|
159 |
+
]
|
160 |
+
},
|
161 |
+
"metadata": {},
|
162 |
+
"output_type": "display_data"
|
163 |
+
},
|
164 |
+
{
|
165 |
+
"data": {
|
166 |
+
"text/html": [],
|
167 |
+
"text/plain": [
|
168 |
+
"<IPython.core.display.HTML object>"
|
169 |
+
]
|
170 |
+
},
|
171 |
+
"metadata": {},
|
172 |
+
"output_type": "display_data"
|
173 |
+
},
|
174 |
+
{
|
175 |
+
"data": {
|
176 |
+
"text/plain": [
|
177 |
+
"{'air chair': 0.5669036507606506,\n",
|
178 |
+
" 'hollowback': 0.1082528755068779,\n",
|
179 |
+
" 'airflare': 0.12053287029266357,\n",
|
180 |
+
" 'airbaby': 0.01773569919168949,\n",
|
181 |
+
" 'headspin': 0.18657492101192474}"
|
182 |
+
]
|
183 |
+
},
|
184 |
+
"execution_count": 18,
|
185 |
+
"metadata": {},
|
186 |
+
"output_type": "execute_result"
|
187 |
+
}
|
188 |
+
],
|
189 |
+
"source": [
|
190 |
+
"classify_image(im)"
|
191 |
+
]
|
192 |
+
},
|
193 |
+
{
|
194 |
+
"cell_type": "code",
|
195 |
+
"execution_count": 19,
|
196 |
+
"id": "8221e327",
|
197 |
+
"metadata": {},
|
198 |
+
"outputs": [
|
199 |
+
{
|
200 |
+
"name": "stderr",
|
201 |
+
"output_type": "stream",
|
202 |
+
"text": [
|
203 |
+
"/home/jdinh/mambaforge/lib/python3.10/site-packages/gradio/inputs.py:257: UserWarning: Usage of gradio.inputs is deprecated, and will not be supported in the future, please import your component from gradio.components\n",
|
204 |
+
" warnings.warn(\n",
|
205 |
+
"/home/jdinh/mambaforge/lib/python3.10/site-packages/gradio/deprecation.py:40: UserWarning: `optional` parameter is deprecated, and it has no effect\n",
|
206 |
+
" warnings.warn(value)\n",
|
207 |
+
"/home/jdinh/mambaforge/lib/python3.10/site-packages/gradio/outputs.py:197: UserWarning: Usage of gradio.outputs is deprecated, and will not be supported in the future, please import your components from gradio.components\n",
|
208 |
+
" warnings.warn(\n",
|
209 |
+
"/home/jdinh/mambaforge/lib/python3.10/site-packages/gradio/deprecation.py:40: UserWarning: The 'type' parameter has been deprecated. Use the Number component instead.\n",
|
210 |
+
" warnings.warn(value)\n"
|
211 |
+
]
|
212 |
+
},
|
213 |
+
{
|
214 |
+
"name": "stdout",
|
215 |
+
"output_type": "stream",
|
216 |
+
"text": [
|
217 |
+
"Running on local URL: http://127.0.0.1:7860\n",
|
218 |
+
"\n",
|
219 |
+
"To create a public link, set `share=True` in `launch()`.\n"
|
220 |
+
]
|
221 |
+
},
|
222 |
+
{
|
223 |
+
"data": {
|
224 |
+
"text/plain": []
|
225 |
+
},
|
226 |
+
"execution_count": 19,
|
227 |
+
"metadata": {},
|
228 |
+
"output_type": "execute_result"
|
229 |
+
},
|
230 |
+
{
|
231 |
+
"data": {
|
232 |
+
"text/html": [
|
233 |
+
"\n",
|
234 |
+
"<style>\n",
|
235 |
+
" /* Turns off some styling */\n",
|
236 |
+
" progress {\n",
|
237 |
+
" /* gets rid of default border in Firefox and Opera. */\n",
|
238 |
+
" border: none;\n",
|
239 |
+
" /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
|
240 |
+
" background-size: auto;\n",
|
241 |
+
" }\n",
|
242 |
+
" progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
|
243 |
+
" background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
|
244 |
+
" }\n",
|
245 |
+
" .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
|
246 |
+
" background: #F44336;\n",
|
247 |
+
" }\n",
|
248 |
+
"</style>\n"
|
249 |
+
],
|
250 |
+
"text/plain": [
|
251 |
+
"<IPython.core.display.HTML object>"
|
252 |
+
]
|
253 |
+
},
|
254 |
+
"metadata": {},
|
255 |
+
"output_type": "display_data"
|
256 |
+
},
|
257 |
+
{
|
258 |
+
"data": {
|
259 |
+
"text/html": [],
|
260 |
+
"text/plain": [
|
261 |
+
"<IPython.core.display.HTML object>"
|
262 |
+
]
|
263 |
+
},
|
264 |
+
"metadata": {},
|
265 |
+
"output_type": "display_data"
|
266 |
+
},
|
267 |
+
{
|
268 |
+
"data": {
|
269 |
+
"text/html": [
|
270 |
+
"\n",
|
271 |
+
"<style>\n",
|
272 |
+
" /* Turns off some styling */\n",
|
273 |
+
" progress {\n",
|
274 |
+
" /* gets rid of default border in Firefox and Opera. */\n",
|
275 |
+
" border: none;\n",
|
276 |
+
" /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
|
277 |
+
" background-size: auto;\n",
|
278 |
+
" }\n",
|
279 |
+
" progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
|
280 |
+
" background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
|
281 |
+
" }\n",
|
282 |
+
" .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
|
283 |
+
" background: #F44336;\n",
|
284 |
+
" }\n",
|
285 |
+
"</style>\n"
|
286 |
+
],
|
287 |
+
"text/plain": [
|
288 |
+
"<IPython.core.display.HTML object>"
|
289 |
+
]
|
290 |
+
},
|
291 |
+
"metadata": {},
|
292 |
+
"output_type": "display_data"
|
293 |
+
},
|
294 |
+
{
|
295 |
+
"data": {
|
296 |
+
"text/html": [],
|
297 |
+
"text/plain": [
|
298 |
+
"<IPython.core.display.HTML object>"
|
299 |
+
]
|
300 |
+
},
|
301 |
+
"metadata": {},
|
302 |
+
"output_type": "display_data"
|
303 |
+
},
|
304 |
+
{
|
305 |
+
"data": {
|
306 |
+
"text/html": [
|
307 |
+
"\n",
|
308 |
+
"<style>\n",
|
309 |
+
" /* Turns off some styling */\n",
|
310 |
+
" progress {\n",
|
311 |
+
" /* gets rid of default border in Firefox and Opera. */\n",
|
312 |
+
" border: none;\n",
|
313 |
+
" /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
|
314 |
+
" background-size: auto;\n",
|
315 |
+
" }\n",
|
316 |
+
" progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
|
317 |
+
" background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
|
318 |
+
" }\n",
|
319 |
+
" .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
|
320 |
+
" background: #F44336;\n",
|
321 |
+
" }\n",
|
322 |
+
"</style>\n"
|
323 |
+
],
|
324 |
+
"text/plain": [
|
325 |
+
"<IPython.core.display.HTML object>"
|
326 |
+
]
|
327 |
+
},
|
328 |
+
"metadata": {},
|
329 |
+
"output_type": "display_data"
|
330 |
+
},
|
331 |
+
{
|
332 |
+
"data": {
|
333 |
+
"text/html": [],
|
334 |
+
"text/plain": [
|
335 |
+
"<IPython.core.display.HTML object>"
|
336 |
+
]
|
337 |
+
},
|
338 |
+
"metadata": {},
|
339 |
+
"output_type": "display_data"
|
340 |
+
},
|
341 |
+
{
|
342 |
+
"data": {
|
343 |
+
"text/html": [
|
344 |
+
"\n",
|
345 |
+
"<style>\n",
|
346 |
+
" /* Turns off some styling */\n",
|
347 |
+
" progress {\n",
|
348 |
+
" /* gets rid of default border in Firefox and Opera. */\n",
|
349 |
+
" border: none;\n",
|
350 |
+
" /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
|
351 |
+
" background-size: auto;\n",
|
352 |
+
" }\n",
|
353 |
+
" progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
|
354 |
+
" background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
|
355 |
+
" }\n",
|
356 |
+
" .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
|
357 |
+
" background: #F44336;\n",
|
358 |
+
" }\n",
|
359 |
+
"</style>\n"
|
360 |
+
],
|
361 |
+
"text/plain": [
|
362 |
+
"<IPython.core.display.HTML object>"
|
363 |
+
]
|
364 |
+
},
|
365 |
+
"metadata": {},
|
366 |
+
"output_type": "display_data"
|
367 |
+
},
|
368 |
+
{
|
369 |
+
"data": {
|
370 |
+
"text/html": [],
|
371 |
+
"text/plain": [
|
372 |
+
"<IPython.core.display.HTML object>"
|
373 |
+
]
|
374 |
+
},
|
375 |
+
"metadata": {},
|
376 |
+
"output_type": "display_data"
|
377 |
+
},
|
378 |
+
{
|
379 |
+
"data": {
|
380 |
+
"text/html": [
|
381 |
+
"\n",
|
382 |
+
"<style>\n",
|
383 |
+
" /* Turns off some styling */\n",
|
384 |
+
" progress {\n",
|
385 |
+
" /* gets rid of default border in Firefox and Opera. */\n",
|
386 |
+
" border: none;\n",
|
387 |
+
" /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
|
388 |
+
" background-size: auto;\n",
|
389 |
+
" }\n",
|
390 |
+
" progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
|
391 |
+
" background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
|
392 |
+
" }\n",
|
393 |
+
" .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
|
394 |
+
" background: #F44336;\n",
|
395 |
+
" }\n",
|
396 |
+
"</style>\n"
|
397 |
+
],
|
398 |
+
"text/plain": [
|
399 |
+
"<IPython.core.display.HTML object>"
|
400 |
+
]
|
401 |
+
},
|
402 |
+
"metadata": {},
|
403 |
+
"output_type": "display_data"
|
404 |
+
},
|
405 |
+
{
|
406 |
+
"data": {
|
407 |
+
"text/html": [],
|
408 |
+
"text/plain": [
|
409 |
+
"<IPython.core.display.HTML object>"
|
410 |
+
]
|
411 |
+
},
|
412 |
+
"metadata": {},
|
413 |
+
"output_type": "display_data"
|
414 |
+
},
|
415 |
+
{
|
416 |
+
"data": {
|
417 |
+
"text/html": [
|
418 |
+
"\n",
|
419 |
+
"<style>\n",
|
420 |
+
" /* Turns off some styling */\n",
|
421 |
+
" progress {\n",
|
422 |
+
" /* gets rid of default border in Firefox and Opera. */\n",
|
423 |
+
" border: none;\n",
|
424 |
+
" /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
|
425 |
+
" background-size: auto;\n",
|
426 |
+
" }\n",
|
427 |
+
" progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
|
428 |
+
" background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
|
429 |
+
" }\n",
|
430 |
+
" .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
|
431 |
+
" background: #F44336;\n",
|
432 |
+
" }\n",
|
433 |
+
"</style>\n"
|
434 |
+
],
|
435 |
+
"text/plain": [
|
436 |
+
"<IPython.core.display.HTML object>"
|
437 |
+
]
|
438 |
+
},
|
439 |
+
"metadata": {},
|
440 |
+
"output_type": "display_data"
|
441 |
+
},
|
442 |
+
{
|
443 |
+
"data": {
|
444 |
+
"text/html": [],
|
445 |
+
"text/plain": [
|
446 |
+
"<IPython.core.display.HTML object>"
|
447 |
+
]
|
448 |
+
},
|
449 |
+
"metadata": {},
|
450 |
+
"output_type": "display_data"
|
451 |
+
},
|
452 |
+
{
|
453 |
+
"data": {
|
454 |
+
"text/html": [
|
455 |
+
"\n",
|
456 |
+
"<style>\n",
|
457 |
+
" /* Turns off some styling */\n",
|
458 |
+
" progress {\n",
|
459 |
+
" /* gets rid of default border in Firefox and Opera. */\n",
|
460 |
+
" border: none;\n",
|
461 |
+
" /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
|
462 |
+
" background-size: auto;\n",
|
463 |
+
" }\n",
|
464 |
+
" progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
|
465 |
+
" background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
|
466 |
+
" }\n",
|
467 |
+
" .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
|
468 |
+
" background: #F44336;\n",
|
469 |
+
" }\n",
|
470 |
+
"</style>\n"
|
471 |
+
],
|
472 |
+
"text/plain": [
|
473 |
+
"<IPython.core.display.HTML object>"
|
474 |
+
]
|
475 |
+
},
|
476 |
+
"metadata": {},
|
477 |
+
"output_type": "display_data"
|
478 |
+
},
|
479 |
+
{
|
480 |
+
"data": {
|
481 |
+
"text/html": [],
|
482 |
+
"text/plain": [
|
483 |
+
"<IPython.core.display.HTML object>"
|
484 |
+
]
|
485 |
+
},
|
486 |
+
"metadata": {},
|
487 |
+
"output_type": "display_data"
|
488 |
+
}
|
489 |
+
],
|
490 |
+
"source": [
|
491 |
+
"#|export\n",
|
492 |
+
"image = gr.inputs.Image(shape=(192,192))\n",
|
493 |
+
"label = gr.outputs.Label()\n",
|
494 |
+
"examples = ['air_chair.jpg','hollowback.jpeg','airbaby.jpeg','airflare.jpeg','headspin.jpeg']\n",
|
495 |
+
"\n",
|
496 |
+
"intf = gr.Interface(fn=classify_image, inputs=image, outputs=label, examples=examples)\n",
|
497 |
+
"intf.launch(inline=False)"
|
498 |
+
]
|
499 |
+
},
|
500 |
+
{
|
501 |
+
"cell_type": "code",
|
502 |
+
"execution_count": 24,
|
503 |
+
"id": "53485bd7",
|
504 |
+
"metadata": {},
|
505 |
+
"outputs": [
|
506 |
+
{
|
507 |
+
"name": "stderr",
|
508 |
+
"output_type": "stream",
|
509 |
+
"text": [
|
510 |
+
"/home/jdinh/mambaforge/lib/python3.10/site-packages/nbdev/export.py:54: UserWarning: Notebook 'testing.ipynb' uses `#|export` without `#|default_exp` cell.\n",
|
511 |
+
"Note nbdev2 no longer supports nbdev1 syntax. Run `nbdev_migrate` to upgrade.\n",
|
512 |
+
"See https://nbdev.fast.ai/getting_started.html for more information.\n",
|
513 |
+
" warn(f\"Notebook '{nbname}' uses `#|export` without `#|default_exp` cell.\\n\"\n"
|
514 |
+
]
|
515 |
+
}
|
516 |
+
],
|
517 |
+
"source": [
|
518 |
+
"import nbdev\n",
|
519 |
+
"nbdev.export.nb_export('testing.ipynb', 'app')"
|
520 |
+
]
|
521 |
+
},
|
522 |
+
{
|
523 |
+
"cell_type": "code",
|
524 |
+
"execution_count": 21,
|
525 |
+
"id": "3da898fc",
|
526 |
+
"metadata": {},
|
527 |
+
"outputs": [
|
528 |
+
{
|
529 |
+
"ename": "NameError",
|
530 |
+
"evalue": "name 'notebook2script' is not defined",
|
531 |
+
"output_type": "error",
|
532 |
+
"traceback": [
|
533 |
+
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
534 |
+
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
|
535 |
+
"Cell \u001b[0;32mIn[21], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mnotebook2script\u001b[49m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtesting.ipynb\u001b[39m\u001b[38;5;124m'\u001b[39m)\n",
|
536 |
+
"\u001b[0;31mNameError\u001b[0m: name 'notebook2script' is not defined"
|
537 |
+
]
|
538 |
+
}
|
539 |
+
],
|
540 |
+
"source": [
|
541 |
+
"notebook2script('testing.ipynb')"
|
542 |
+
]
|
543 |
+
},
|
544 |
+
{
|
545 |
+
"cell_type": "code",
|
546 |
+
"execution_count": null,
|
547 |
+
"id": "194afe26",
|
548 |
+
"metadata": {},
|
549 |
+
"outputs": [],
|
550 |
+
"source": []
|
551 |
+
}
|
552 |
+
],
|
553 |
+
"metadata": {
|
554 |
+
"kernelspec": {
|
555 |
+
"display_name": "Python 3 (ipykernel)",
|
556 |
+
"language": "python",
|
557 |
+
"name": "python3"
|
558 |
+
},
|
559 |
+
"language_info": {
|
560 |
+
"codemirror_mode": {
|
561 |
+
"name": "ipython",
|
562 |
+
"version": 3
|
563 |
+
},
|
564 |
+
"file_extension": ".py",
|
565 |
+
"mimetype": "text/x-python",
|
566 |
+
"name": "python",
|
567 |
+
"nbconvert_exporter": "python",
|
568 |
+
"pygments_lexer": "ipython3",
|
569 |
+
"version": "3.10.10"
|
570 |
+
}
|
571 |
+
},
|
572 |
+
"nbformat": 4,
|
573 |
+
"nbformat_minor": 5
|
574 |
+
}
|