jarif commited on
Commit
8fae8d6
1 Parent(s): bc1b0c6

Upload 4 files

Browse files
Files changed (4) hide show
  1. App.ipynb +320 -0
  2. README.md +6 -5
  3. app.py +32 -0
  4. requirements.txt +2 -0
App.ipynb ADDED
@@ -0,0 +1,320 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "nbformat": 4,
3
+ "nbformat_minor": 0,
4
+ "metadata": {
5
+ "colab": {
6
+ "provenance": []
7
+ },
8
+ "kernelspec": {
9
+ "name": "python3",
10
+ "display_name": "Python 3"
11
+ },
12
+ "language_info": {
13
+ "name": "python"
14
+ }
15
+ },
16
+ "cells": [
17
+ {
18
+ "cell_type": "code",
19
+ "source": [
20
+ "from google.colab import drive\n",
21
+ "drive.mount('/content/drive')"
22
+ ],
23
+ "metadata": {
24
+ "colab": {
25
+ "base_uri": "https://localhost:8080/"
26
+ },
27
+ "id": "VHha5UmeC-9y",
28
+ "outputId": "5545c9d6-174c-450a-ade6-9c6bc21b5696"
29
+ },
30
+ "execution_count": 57,
31
+ "outputs": [
32
+ {
33
+ "output_type": "stream",
34
+ "name": "stdout",
35
+ "text": [
36
+ "Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n"
37
+ ]
38
+ }
39
+ ]
40
+ },
41
+ {
42
+ "cell_type": "code",
43
+ "source": [
44
+ "%cd /content/drive/MyDrive/Fruit_Recognizer"
45
+ ],
46
+ "metadata": {
47
+ "colab": {
48
+ "base_uri": "https://localhost:8080/"
49
+ },
50
+ "id": "A9WRi6HVDDuY",
51
+ "outputId": "4c216d21-4ebf-485f-ea3f-8dc21353831c"
52
+ },
53
+ "execution_count": 58,
54
+ "outputs": [
55
+ {
56
+ "output_type": "stream",
57
+ "name": "stdout",
58
+ "text": [
59
+ "/content/drive/MyDrive/Fruit_Recognizer\n"
60
+ ]
61
+ }
62
+ ]
63
+ },
64
+ {
65
+ "cell_type": "code",
66
+ "execution_count": 59,
67
+ "metadata": {
68
+ "id": "SWpRA6v7QI_R"
69
+ },
70
+ "outputs": [],
71
+ "source": [
72
+ "!pip install -Uqq fastai gradio nbdev"
73
+ ]
74
+ },
75
+ {
76
+ "cell_type": "code",
77
+ "source": [
78
+ "from fastai.vision.all import *\n",
79
+ "from fastai.vision.all import load_learner\n",
80
+ "import gradio as gr"
81
+ ],
82
+ "metadata": {
83
+ "id": "OpUS3z3MQgZ0"
84
+ },
85
+ "execution_count": 60,
86
+ "outputs": []
87
+ },
88
+ {
89
+ "cell_type": "code",
90
+ "source": [
91
+ "model=load_learner(\"models/fruit_model_v6.pkl\")"
92
+ ],
93
+ "metadata": {
94
+ "id": "7J-MaltBP0_f"
95
+ },
96
+ "execution_count": 61,
97
+ "outputs": []
98
+ },
99
+ {
100
+ "cell_type": "code",
101
+ "source": [
102
+ "fruit_labels = ('Apple', 'Apricot', 'Avocado',\n",
103
+ " 'Banana', 'Blueberry',\n",
104
+ " 'Carambola', 'Cherry', 'Fig',\n",
105
+ " 'Grape', 'Kiwi', 'Lemon',\n",
106
+ " 'Lychee', 'Mango',\n",
107
+ " 'Orange', 'Papaya',\n",
108
+ " 'Pear', 'Pineapple',\n",
109
+ " 'Raspberry', 'Strawberry', 'Watermelon')\n",
110
+ "\n",
111
+ "\n",
112
+ "def recognize_image(image):\n",
113
+ " pred, idx, probs = model.predict(image)\n",
114
+ " print(pred)\n",
115
+ " return dict(zip(fruit_labels, map(float, probs)))"
116
+ ],
117
+ "metadata": {
118
+ "id": "lVtVhZtzQgc3"
119
+ },
120
+ "execution_count": 62,
121
+ "outputs": []
122
+ },
123
+ {
124
+ "cell_type": "code",
125
+ "source": [
126
+ "img = PILImage.create(f'test_images/test_0.jpg')\n",
127
+ "img.thumbnail((192,192))\n",
128
+ "img"
129
+ ],
130
+ "metadata": {
131
+ "id": "TqVA9jzPQgfy",
132
+ "colab": {
133
+ "base_uri": "https://localhost:8080/",
134
+ "height": 145
135
+ },
136
+ "outputId": "f058714e-afb7-4875-e421-41da25112aeb"
137
+ },
138
+ "execution_count": 63,
139
+ "outputs": [
140
+ {
141
+ "output_type": "execute_result",
142
+ "data": {
143
+ "text/plain": [
144
+ "PILImage mode=RGB size=192x128"
145
+ ],
146
+ "image/png": "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\n"
147
+ },
148
+ "metadata": {},
149
+ "execution_count": 63
150
+ }
151
+ ]
152
+ },
153
+ {
154
+ "cell_type": "code",
155
+ "source": [
156
+ "recognize_image(img)"
157
+ ],
158
+ "metadata": {
159
+ "id": "PKU2JFPlQgi2",
160
+ "colab": {
161
+ "base_uri": "https://localhost:8080/",
162
+ "height": 436
163
+ },
164
+ "outputId": "a30655cb-1b6b-4953-e423-3625d67f60db"
165
+ },
166
+ "execution_count": 64,
167
+ "outputs": [
168
+ {
169
+ "output_type": "stream",
170
+ "name": "stderr",
171
+ "text": [
172
+ "/usr/local/lib/python3.10/dist-packages/fastai/torch_core.py:263: UserWarning: 'has_mps' is deprecated, please use 'torch.backends.mps.is_built()'\n",
173
+ " return getattr(torch, 'has_mps', False)\n"
174
+ ]
175
+ },
176
+ {
177
+ "output_type": "display_data",
178
+ "data": {
179
+ "text/plain": [
180
+ "<IPython.core.display.HTML object>"
181
+ ],
182
+ "text/html": [
183
+ "\n",
184
+ "<style>\n",
185
+ " /* Turns off some styling */\n",
186
+ " progress {\n",
187
+ " /* gets rid of default border in Firefox and Opera. */\n",
188
+ " border: none;\n",
189
+ " /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
190
+ " background-size: auto;\n",
191
+ " }\n",
192
+ " progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
193
+ " background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
194
+ " }\n",
195
+ " .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
196
+ " background: #F44336;\n",
197
+ " }\n",
198
+ "</style>\n"
199
+ ]
200
+ },
201
+ "metadata": {}
202
+ },
203
+ {
204
+ "output_type": "display_data",
205
+ "data": {
206
+ "text/plain": [
207
+ "<IPython.core.display.HTML object>"
208
+ ],
209
+ "text/html": []
210
+ },
211
+ "metadata": {}
212
+ },
213
+ {
214
+ "output_type": "stream",
215
+ "name": "stdout",
216
+ "text": [
217
+ "Banana\n"
218
+ ]
219
+ },
220
+ {
221
+ "output_type": "execute_result",
222
+ "data": {
223
+ "text/plain": [
224
+ "{'Apple': 5.5752518157703435e-09,\n",
225
+ " 'Apricot': 2.5855018126463847e-10,\n",
226
+ " 'Avocado': 4.064226999389575e-08,\n",
227
+ " 'Banana': 0.9999983310699463,\n",
228
+ " 'Blueberry': 5.352696064164775e-09,\n",
229
+ " 'Carambola': 1.3467055737237388e-07,\n",
230
+ " 'Cherry': 7.743841479168623e-08,\n",
231
+ " 'Fig': 1.3441150770177046e-07,\n",
232
+ " 'Grape': 1.305619701241767e-08,\n",
233
+ " 'Kiwi': 1.0617771550869293e-08,\n",
234
+ " 'Lemon': 7.528898890996061e-07,\n",
235
+ " 'Lychee': 1.645614133849449e-08,\n",
236
+ " 'Mango': 7.693946457720813e-08,\n",
237
+ " 'Orange': 2.524078865917545e-07,\n",
238
+ " 'Papaya': 5.074594255916054e-08,\n",
239
+ " 'Pear': 1.430123717227616e-07,\n",
240
+ " 'Pineapple': 9.21994214309052e-08,\n",
241
+ " 'Raspberry': 8.419928754221928e-09,\n",
242
+ " 'Strawberry': 2.021719680556089e-09,\n",
243
+ " 'Watermelon': 1.9477317536598093e-09}"
244
+ ]
245
+ },
246
+ "metadata": {},
247
+ "execution_count": 64
248
+ }
249
+ ]
250
+ },
251
+ {
252
+ "cell_type": "code",
253
+ "source": [
254
+ "import gradio as gr\n",
255
+ "\n",
256
+ "image = gr.Image()\n",
257
+ "label = gr.Label()\n",
258
+ "examples = [\n",
259
+ " 'test_images/test_0.jpg',\n",
260
+ " 'test_images/test_1.jpg',\n",
261
+ " 'test_images/test_2.jpg',\n",
262
+ " 'test_images/test_4.jpeg'\n",
263
+ "]\n",
264
+ "\n",
265
+ "iface = gr.Interface(fn=recognize_image, inputs=image, outputs=label, examples=examples)\n",
266
+ "iface.launch(inline=False)\n"
267
+ ],
268
+ "metadata": {
269
+ "id": "eWhn_nMJQgls",
270
+ "colab": {
271
+ "base_uri": "https://localhost:8080/"
272
+ },
273
+ "outputId": "1d509c26-6b0a-4951-fb34-76a4e04add98"
274
+ },
275
+ "execution_count": 65,
276
+ "outputs": [
277
+ {
278
+ "output_type": "stream",
279
+ "name": "stdout",
280
+ "text": [
281
+ "Setting queue=True in a Colab notebook requires sharing enabled. Setting `share=True` (you can turn this off by setting `share=False` in `launch()` explicitly).\n",
282
+ "\n",
283
+ "Colab notebook detected. To show errors in colab notebook, set debug=True in launch()\n",
284
+ "Running on public URL: https://64643211b6c5ebf0bf.gradio.live\n",
285
+ "\n",
286
+ "This share link expires in 72 hours. For free permanent hosting and GPU upgrades, run `gradio deploy` from Terminal to deploy to Spaces (https://huggingface.co/spaces)\n"
287
+ ]
288
+ },
289
+ {
290
+ "output_type": "execute_result",
291
+ "data": {
292
+ "text/plain": []
293
+ },
294
+ "metadata": {},
295
+ "execution_count": 65
296
+ }
297
+ ]
298
+ },
299
+ {
300
+ "cell_type": "code",
301
+ "source": [
302
+ "\n"
303
+ ],
304
+ "metadata": {
305
+ "id": "RUkeg4_2jND8"
306
+ },
307
+ "execution_count": 65,
308
+ "outputs": []
309
+ },
310
+ {
311
+ "cell_type": "code",
312
+ "source": [],
313
+ "metadata": {
314
+ "id": "JqItGOrkQgo2"
315
+ },
316
+ "execution_count": 65,
317
+ "outputs": []
318
+ }
319
+ ]
320
+ }
README.md CHANGED
@@ -1,12 +1,13 @@
1
  ---
2
- title: Test
3
- emoji: 🌍
4
- colorFrom: indigo
5
- colorTo: red
6
  sdk: gradio
7
- sdk_version: 4.10.0
8
  app_file: app.py
9
  pinned: false
 
10
  ---
11
 
12
  Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: Fruit Recognizer
3
+ emoji: 🐨
4
+ colorFrom: yellow
5
+ colorTo: pink
6
  sdk: gradio
7
+ sdk_version: 3.16.0
8
  app_file: app.py
9
  pinned: false
10
+ license: apache-2.0
11
  ---
12
 
13
  Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
app.py ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastai.vision.all import *
2
+ from fastai.vision.all import load_learner
3
+ import gradio as gr
4
+
5
+ fruit_labels = ('Apple', 'Apricot', 'Avocado',
6
+ 'Banana', 'Blueberry',
7
+ 'Carambola', 'Cherry', 'Fig',
8
+ 'Grape', 'Kiwi', 'Lemon',
9
+ 'Lychee', 'Mango',
10
+ 'Orange', 'Papaya',
11
+ 'Pear', 'Pineapple',
12
+ 'Raspberry', 'Strawberry', 'Watermelon')
13
+
14
+ model=load_learner("model/fruit_model_v6.pkl")
15
+
16
+ def recognize_image(image):
17
+ pred, idx, probs = model.predict(image)
18
+ print(pred)
19
+ return dict(zip(fruit_labels, map(float, probs)))
20
+
21
+
22
+ image = gr.inputs.Image(shape=(192,192))
23
+ label = gr.outputs.Label(num_top_classes=5)
24
+ examples = [
25
+ 'test_images/test_0.jpg',
26
+ 'test_images/test_1.jpg',
27
+ 'test_images/test_2.jpg',
28
+ 'test_images/test_4.jpeg'
29
+ ]
30
+
31
+ iface = gr.Interface(fn=recognize_image, inputs=image, outputs=label, examples=examples)
32
+ iface.launch(inline=False,share=True)
requirements.txt ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ Gradio==3.16.0
2
+ Fastai==2.7.13