add classifier code
Browse files
.ipynb_checkpoints/app-checkpoint.ipynb
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"cells": [],
|
3 |
+
"metadata": {},
|
4 |
+
"nbformat": 4,
|
5 |
+
"nbformat_minor": 5
|
6 |
+
}
|
app.ipynb
ADDED
@@ -0,0 +1,572 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"cells": [
|
3 |
+
{
|
4 |
+
"cell_type": "code",
|
5 |
+
"execution_count": 12,
|
6 |
+
"id": "b0e37c23-0a00-4a15-adc0-a4d0adc92284",
|
7 |
+
"metadata": {},
|
8 |
+
"outputs": [],
|
9 |
+
"source": [
|
10 |
+
"#| export\n",
|
11 |
+
"\n",
|
12 |
+
"from fastai.vision.all import *\n",
|
13 |
+
"import gradio as gr\n",
|
14 |
+
"\n",
|
15 |
+
"def is_cat(x): return x[0].isupper() # need this redefinition because the learner uses this function"
|
16 |
+
]
|
17 |
+
},
|
18 |
+
{
|
19 |
+
"cell_type": "code",
|
20 |
+
"execution_count": 17,
|
21 |
+
"id": "d3db8ca2-2d2f-4103-b61a-d77ac8736cd7",
|
22 |
+
"metadata": {},
|
23 |
+
"outputs": [
|
24 |
+
{
|
25 |
+
"data": {
|
26 |
+
"image/png": "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\n",
|
27 |
+
"text/plain": [
|
28 |
+
"PILImage mode=RGB size=192x108"
|
29 |
+
]
|
30 |
+
},
|
31 |
+
"execution_count": 17,
|
32 |
+
"metadata": {},
|
33 |
+
"output_type": "execute_result"
|
34 |
+
}
|
35 |
+
],
|
36 |
+
"source": [
|
37 |
+
"dog_image = PILImage.create('dog.jpg')\n",
|
38 |
+
"dog_image.thumbnail((192,192))\n",
|
39 |
+
"dog_image"
|
40 |
+
]
|
41 |
+
},
|
42 |
+
{
|
43 |
+
"cell_type": "code",
|
44 |
+
"execution_count": 18,
|
45 |
+
"id": "645eccfa-a94b-452a-ba5c-1e74ca55bc03",
|
46 |
+
"metadata": {},
|
47 |
+
"outputs": [],
|
48 |
+
"source": [
|
49 |
+
"#| export\n",
|
50 |
+
"learn = load_learner('model.pkl')"
|
51 |
+
]
|
52 |
+
},
|
53 |
+
{
|
54 |
+
"cell_type": "code",
|
55 |
+
"execution_count": 19,
|
56 |
+
"id": "080c9589-aa3f-4e8e-9bac-3a2f4bf81d4b",
|
57 |
+
"metadata": {},
|
58 |
+
"outputs": [
|
59 |
+
{
|
60 |
+
"data": {
|
61 |
+
"text/html": [
|
62 |
+
"\n",
|
63 |
+
"<style>\n",
|
64 |
+
" /* Turns off some styling */\n",
|
65 |
+
" progress {\n",
|
66 |
+
" /* gets rid of default border in Firefox and Opera. */\n",
|
67 |
+
" border: none;\n",
|
68 |
+
" /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
|
69 |
+
" background-size: auto;\n",
|
70 |
+
" }\n",
|
71 |
+
" progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
|
72 |
+
" background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
|
73 |
+
" }\n",
|
74 |
+
" .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
|
75 |
+
" background: #F44336;\n",
|
76 |
+
" }\n",
|
77 |
+
"</style>\n"
|
78 |
+
],
|
79 |
+
"text/plain": [
|
80 |
+
"<IPython.core.display.HTML object>"
|
81 |
+
]
|
82 |
+
},
|
83 |
+
"metadata": {},
|
84 |
+
"output_type": "display_data"
|
85 |
+
},
|
86 |
+
{
|
87 |
+
"data": {
|
88 |
+
"text/html": [],
|
89 |
+
"text/plain": [
|
90 |
+
"<IPython.core.display.HTML object>"
|
91 |
+
]
|
92 |
+
},
|
93 |
+
"metadata": {},
|
94 |
+
"output_type": "display_data"
|
95 |
+
},
|
96 |
+
{
|
97 |
+
"data": {
|
98 |
+
"text/plain": [
|
99 |
+
"('False', TensorBase(0), TensorBase([1.0000e+00, 3.0780e-06]))"
|
100 |
+
]
|
101 |
+
},
|
102 |
+
"execution_count": 19,
|
103 |
+
"metadata": {},
|
104 |
+
"output_type": "execute_result"
|
105 |
+
}
|
106 |
+
],
|
107 |
+
"source": [
|
108 |
+
"learn.predict(dog_image)"
|
109 |
+
]
|
110 |
+
},
|
111 |
+
{
|
112 |
+
"cell_type": "code",
|
113 |
+
"execution_count": 25,
|
114 |
+
"id": "d3769a5e-acf7-4190-93b7-da68dab09381",
|
115 |
+
"metadata": {},
|
116 |
+
"outputs": [],
|
117 |
+
"source": [
|
118 |
+
"#| export\n",
|
119 |
+
"categories = ('Dog', 'Cat')\n",
|
120 |
+
"\n",
|
121 |
+
"# turn the output into a dict with categories and probabilities\n",
|
122 |
+
"def classify_image(img): \n",
|
123 |
+
" pred, index, probs = learn.predict(img)\n",
|
124 |
+
" return dict(zip(categories, map(float, probs)))"
|
125 |
+
]
|
126 |
+
},
|
127 |
+
{
|
128 |
+
"cell_type": "code",
|
129 |
+
"execution_count": 26,
|
130 |
+
"id": "fa0f9525-f4a7-4ee6-a49c-63e10cbc93ba",
|
131 |
+
"metadata": {},
|
132 |
+
"outputs": [
|
133 |
+
{
|
134 |
+
"data": {
|
135 |
+
"text/html": [
|
136 |
+
"\n",
|
137 |
+
"<style>\n",
|
138 |
+
" /* Turns off some styling */\n",
|
139 |
+
" progress {\n",
|
140 |
+
" /* gets rid of default border in Firefox and Opera. */\n",
|
141 |
+
" border: none;\n",
|
142 |
+
" /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
|
143 |
+
" background-size: auto;\n",
|
144 |
+
" }\n",
|
145 |
+
" progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
|
146 |
+
" background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
|
147 |
+
" }\n",
|
148 |
+
" .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
|
149 |
+
" background: #F44336;\n",
|
150 |
+
" }\n",
|
151 |
+
"</style>\n"
|
152 |
+
],
|
153 |
+
"text/plain": [
|
154 |
+
"<IPython.core.display.HTML object>"
|
155 |
+
]
|
156 |
+
},
|
157 |
+
"metadata": {},
|
158 |
+
"output_type": "display_data"
|
159 |
+
},
|
160 |
+
{
|
161 |
+
"data": {
|
162 |
+
"text/html": [],
|
163 |
+
"text/plain": [
|
164 |
+
"<IPython.core.display.HTML object>"
|
165 |
+
]
|
166 |
+
},
|
167 |
+
"metadata": {},
|
168 |
+
"output_type": "display_data"
|
169 |
+
},
|
170 |
+
{
|
171 |
+
"data": {
|
172 |
+
"text/plain": [
|
173 |
+
"{'Dog': 0.9999969005584717, 'Cat': 3.0779897315369453e-06}"
|
174 |
+
]
|
175 |
+
},
|
176 |
+
"execution_count": 26,
|
177 |
+
"metadata": {},
|
178 |
+
"output_type": "execute_result"
|
179 |
+
}
|
180 |
+
],
|
181 |
+
"source": [
|
182 |
+
"classify_image(dog_image)"
|
183 |
+
]
|
184 |
+
},
|
185 |
+
{
|
186 |
+
"cell_type": "code",
|
187 |
+
"execution_count": 27,
|
188 |
+
"id": "2dc43cb2-11a7-421b-a4e8-c1bd29e18ad4",
|
189 |
+
"metadata": {},
|
190 |
+
"outputs": [
|
191 |
+
{
|
192 |
+
"name": "stderr",
|
193 |
+
"output_type": "stream",
|
194 |
+
"text": [
|
195 |
+
"/Users/etienne/mambaforge/lib/python3.9/site-packages/gradio/inputs.py:256: UserWarning: Usage of gradio.inputs is deprecated, and will not be supported in the future, please import your component from gradio.components\n",
|
196 |
+
" warnings.warn(\n",
|
197 |
+
"/Users/etienne/mambaforge/lib/python3.9/site-packages/gradio/deprecation.py:40: UserWarning: `optional` parameter is deprecated, and it has no effect\n",
|
198 |
+
" warnings.warn(value)\n",
|
199 |
+
"/Users/etienne/mambaforge/lib/python3.9/site-packages/gradio/outputs.py:196: UserWarning: Usage of gradio.outputs is deprecated, and will not be supported in the future, please import your components from gradio.components\n",
|
200 |
+
" warnings.warn(\n",
|
201 |
+
"/Users/etienne/mambaforge/lib/python3.9/site-packages/gradio/deprecation.py:40: UserWarning: The 'type' parameter has been deprecated. Use the Number component instead.\n",
|
202 |
+
" warnings.warn(value)\n"
|
203 |
+
]
|
204 |
+
},
|
205 |
+
{
|
206 |
+
"name": "stdout",
|
207 |
+
"output_type": "stream",
|
208 |
+
"text": [
|
209 |
+
"Running on local URL: http://127.0.0.1:7861/\n",
|
210 |
+
"\n",
|
211 |
+
"To create a public link, set `share=True` in `launch()`.\n"
|
212 |
+
]
|
213 |
+
},
|
214 |
+
{
|
215 |
+
"data": {
|
216 |
+
"text/plain": [
|
217 |
+
"(<gradio.routes.App at 0x148835cd0>, 'http://127.0.0.1:7861/', None)"
|
218 |
+
]
|
219 |
+
},
|
220 |
+
"execution_count": 27,
|
221 |
+
"metadata": {},
|
222 |
+
"output_type": "execute_result"
|
223 |
+
},
|
224 |
+
{
|
225 |
+
"data": {
|
226 |
+
"text/html": [
|
227 |
+
"\n",
|
228 |
+
"<style>\n",
|
229 |
+
" /* Turns off some styling */\n",
|
230 |
+
" progress {\n",
|
231 |
+
" /* gets rid of default border in Firefox and Opera. */\n",
|
232 |
+
" border: none;\n",
|
233 |
+
" /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
|
234 |
+
" background-size: auto;\n",
|
235 |
+
" }\n",
|
236 |
+
" progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
|
237 |
+
" background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
|
238 |
+
" }\n",
|
239 |
+
" .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
|
240 |
+
" background: #F44336;\n",
|
241 |
+
" }\n",
|
242 |
+
"</style>\n"
|
243 |
+
],
|
244 |
+
"text/plain": [
|
245 |
+
"<IPython.core.display.HTML object>"
|
246 |
+
]
|
247 |
+
},
|
248 |
+
"metadata": {},
|
249 |
+
"output_type": "display_data"
|
250 |
+
},
|
251 |
+
{
|
252 |
+
"data": {
|
253 |
+
"text/html": [],
|
254 |
+
"text/plain": [
|
255 |
+
"<IPython.core.display.HTML object>"
|
256 |
+
]
|
257 |
+
},
|
258 |
+
"metadata": {},
|
259 |
+
"output_type": "display_data"
|
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 |
+
"\n",
|
450 |
+
"# gradio interface\n",
|
451 |
+
"image = gr.inputs.Image(shape=(192, 192))\n",
|
452 |
+
"label = gr.outputs.Label()\n",
|
453 |
+
"examples = ['dog.jpg', 'cat.jpg', 'dunno.jpg']\n",
|
454 |
+
"\n",
|
455 |
+
"interface = gr.Interface(fn = classify_image, inputs = image, outputs = label, examples = examples)\n",
|
456 |
+
"interface.launch(inline = False)"
|
457 |
+
]
|
458 |
+
},
|
459 |
+
{
|
460 |
+
"cell_type": "code",
|
461 |
+
"execution_count": 62,
|
462 |
+
"id": "b3e8708e-0003-4abd-9872-3d97d3aa57f8",
|
463 |
+
"metadata": {},
|
464 |
+
"outputs": [
|
465 |
+
{
|
466 |
+
"name": "stdout",
|
467 |
+
"output_type": "stream",
|
468 |
+
"text": [
|
469 |
+
"Help on module nbdev.export in nbdev:\n",
|
470 |
+
"\n",
|
471 |
+
"NAME\n",
|
472 |
+
" nbdev.export - # AUTOGENERATED! DO NOT EDIT! File to edit: ../nbs/04a_export.ipynb.\n",
|
473 |
+
"\n",
|
474 |
+
"CLASSES\n",
|
475 |
+
" builtins.object\n",
|
476 |
+
" ExportModuleProc\n",
|
477 |
+
" \n",
|
478 |
+
" class ExportModuleProc(builtins.object)\n",
|
479 |
+
" | A processor which exports code to a module\n",
|
480 |
+
" | \n",
|
481 |
+
" | Methods defined here:\n",
|
482 |
+
" | \n",
|
483 |
+
" | __init__(self)\n",
|
484 |
+
" | Initialize self. See help(type(self)) for accurate signature.\n",
|
485 |
+
" | \n",
|
486 |
+
" | ----------------------------------------------------------------------\n",
|
487 |
+
" | Data descriptors defined here:\n",
|
488 |
+
" | \n",
|
489 |
+
" | __dict__\n",
|
490 |
+
" | dictionary for instance variables (if defined)\n",
|
491 |
+
" | \n",
|
492 |
+
" | __weakref__\n",
|
493 |
+
" | list of weak references to the object (if defined)\n",
|
494 |
+
"\n",
|
495 |
+
"FUNCTIONS\n",
|
496 |
+
" black_format(cell, force=False)\n",
|
497 |
+
" Format code with `black`\n",
|
498 |
+
" \n",
|
499 |
+
" create_modules(path, dest, procs=None, debug=False, mod_maker=<class 'nbdev.maker.ModuleMaker'>)\n",
|
500 |
+
" Create module(s) from notebook\n",
|
501 |
+
" \n",
|
502 |
+
" nb_export(nbname, lib_path=None)\n",
|
503 |
+
" # %% ../nbs/04a_export.ipynb 16\n",
|
504 |
+
"\n",
|
505 |
+
"DATA\n",
|
506 |
+
" __all__ = ['ExportModuleProc', 'black_format', 'create_modules', 'nb_e...\n",
|
507 |
+
"\n",
|
508 |
+
"FILE\n",
|
509 |
+
" /Users/etienne/mambaforge/lib/python3.9/site-packages/nbdev/export.py\n",
|
510 |
+
"\n",
|
511 |
+
"\n"
|
512 |
+
]
|
513 |
+
}
|
514 |
+
],
|
515 |
+
"source": [
|
516 |
+
"help(nbdev.export)"
|
517 |
+
]
|
518 |
+
},
|
519 |
+
{
|
520 |
+
"cell_type": "code",
|
521 |
+
"execution_count": 60,
|
522 |
+
"id": "06c2e628-b04a-4178-9a97-a57b64c00808",
|
523 |
+
"metadata": {},
|
524 |
+
"outputs": [
|
525 |
+
{
|
526 |
+
"ename": "ImportError",
|
527 |
+
"evalue": "cannot import name 'notebook2script' from 'nbdev.imports' (/Users/etienne/mambaforge/lib/python3.9/site-packages/nbdev/imports.py)",
|
528 |
+
"output_type": "error",
|
529 |
+
"traceback": [
|
530 |
+
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
531 |
+
"\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)",
|
532 |
+
"Input \u001b[0;32mIn [60]\u001b[0m, in \u001b[0;36m<cell line: 1>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mnbdev\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mimports\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m notebook2script\n\u001b[1;32m 2\u001b[0m notebook2script()\n",
|
533 |
+
"\u001b[0;31mImportError\u001b[0m: cannot import name 'notebook2script' from 'nbdev.imports' (/Users/etienne/mambaforge/lib/python3.9/site-packages/nbdev/imports.py)"
|
534 |
+
]
|
535 |
+
}
|
536 |
+
],
|
537 |
+
"source": [
|
538 |
+
"from nbdev.imports import notebook2script\n",
|
539 |
+
"notebook2script()"
|
540 |
+
]
|
541 |
+
},
|
542 |
+
{
|
543 |
+
"cell_type": "code",
|
544 |
+
"execution_count": null,
|
545 |
+
"id": "ccee0117-bd4a-40bb-8f42-4d211c2eb406",
|
546 |
+
"metadata": {},
|
547 |
+
"outputs": [],
|
548 |
+
"source": []
|
549 |
+
}
|
550 |
+
],
|
551 |
+
"metadata": {
|
552 |
+
"kernelspec": {
|
553 |
+
"display_name": "Python 3 (ipykernel)",
|
554 |
+
"language": "python",
|
555 |
+
"name": "python3"
|
556 |
+
},
|
557 |
+
"language_info": {
|
558 |
+
"codemirror_mode": {
|
559 |
+
"name": "ipython",
|
560 |
+
"version": 3
|
561 |
+
},
|
562 |
+
"file_extension": ".py",
|
563 |
+
"mimetype": "text/x-python",
|
564 |
+
"name": "python",
|
565 |
+
"nbconvert_exporter": "python",
|
566 |
+
"pygments_lexer": "ipython3",
|
567 |
+
"version": "3.9.13"
|
568 |
+
}
|
569 |
+
},
|
570 |
+
"nbformat": 4,
|
571 |
+
"nbformat_minor": 5
|
572 |
+
}
|
cat.jpg
ADDED
dog.jpg
ADDED
dunno.jpg
ADDED
model.pkl
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:3d62d20922e28155dc062920903cc96b96b54682058a2f9851511b69b4aa7474
|
3 |
+
size 47061355
|