file updated
Browse files- README.md +3 -1
- app.ipynb +438 -0
- app.py +23 -0
- models/tradiotional_clothing_recognition-v1.pkl +3 -0
- requirements.txt +0 -0
- test_images/unknown-1.jpg +0 -0
- test_images/unknown-2.jpg +0 -0
README.md
CHANGED
@@ -10,4 +10,6 @@ pinned: false
|
|
10 |
license: apache-2.0
|
11 |
---
|
12 |
|
13 |
-
|
|
|
|
|
|
10 |
license: apache-2.0
|
11 |
---
|
12 |
|
13 |
+
HuggingFace Spaces App URL: https://huggingface.co/spaces/msideadman/cap-recognizer
|
14 |
+
|
15 |
+
Gradio App URL: https://aa658403-2945-4237.gradio.live
|
app.ipynb
ADDED
@@ -0,0 +1,438 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
+
"execution_count": 1,
|
20 |
+
"metadata": {
|
21 |
+
"colab": {
|
22 |
+
"base_uri": "https://localhost:8080/"
|
23 |
+
},
|
24 |
+
"id": "lm2GQwhxCNQw",
|
25 |
+
"outputId": "9f599db7-0b70-4a02-b363-8e09496a4b84"
|
26 |
+
},
|
27 |
+
"outputs": [
|
28 |
+
{
|
29 |
+
"output_type": "stream",
|
30 |
+
"name": "stdout",
|
31 |
+
"text": [
|
32 |
+
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m19.7/19.7 MB\u001b[0m \u001b[31m46.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
|
33 |
+
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m64.8/64.8 kB\u001b[0m \u001b[31m6.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
|
34 |
+
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.0/1.0 MB\u001b[0m \u001b[31m56.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
|
35 |
+
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m57.0/57.0 kB\u001b[0m \u001b[31m5.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
|
36 |
+
"\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
|
37 |
+
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m288.4/288.4 kB\u001b[0m \u001b[31m23.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
|
38 |
+
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m75.4/75.4 kB\u001b[0m \u001b[31m6.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
|
39 |
+
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m236.8/236.8 kB\u001b[0m \u001b[31m18.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
|
40 |
+
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m50.5/50.5 kB\u001b[0m \u001b[31m4.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
|
41 |
+
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m137.0/137.0 kB\u001b[0m \u001b[31m12.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
|
42 |
+
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m45.7/45.7 kB\u001b[0m \u001b[31m4.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
|
43 |
+
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m5.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
|
44 |
+
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m129.9/129.9 kB\u001b[0m \u001b[31m11.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
|
45 |
+
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.7/58.7 kB\u001b[0m \u001b[31m6.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
|
46 |
+
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m82.1/82.1 kB\u001b[0m \u001b[31m8.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
|
47 |
+
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m5.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
|
48 |
+
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m114.5/114.5 kB\u001b[0m \u001b[31m12.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
|
49 |
+
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m268.8/268.8 kB\u001b[0m \u001b[31m22.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
|
50 |
+
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m149.6/149.6 kB\u001b[0m \u001b[31m14.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
|
51 |
+
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m67.0/67.0 kB\u001b[0m \u001b[31m6.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
|
52 |
+
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m72.5/72.5 kB\u001b[0m \u001b[31m7.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
|
53 |
+
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.6/1.6 MB\u001b[0m \u001b[31m65.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
|
54 |
+
"\u001b[?25h Building wheel for ffmpy (setup.py) ... \u001b[?25l\u001b[?25hdone\n"
|
55 |
+
]
|
56 |
+
}
|
57 |
+
],
|
58 |
+
"source": [
|
59 |
+
"!pip install -Uqq fastai gradio nbdev"
|
60 |
+
]
|
61 |
+
},
|
62 |
+
{
|
63 |
+
"cell_type": "code",
|
64 |
+
"source": [
|
65 |
+
"from fastai.vision.all import *"
|
66 |
+
],
|
67 |
+
"metadata": {
|
68 |
+
"id": "KjVdtCKTWf4g"
|
69 |
+
},
|
70 |
+
"execution_count": 2,
|
71 |
+
"outputs": []
|
72 |
+
},
|
73 |
+
{
|
74 |
+
"cell_type": "code",
|
75 |
+
"source": [
|
76 |
+
"#!export\n",
|
77 |
+
"from fastai.vision.all import load_learner\n",
|
78 |
+
"import gradio as gr"
|
79 |
+
],
|
80 |
+
"metadata": {
|
81 |
+
"id": "SBhTQPpDWlLE"
|
82 |
+
},
|
83 |
+
"execution_count": 3,
|
84 |
+
"outputs": []
|
85 |
+
},
|
86 |
+
{
|
87 |
+
"cell_type": "code",
|
88 |
+
"source": [
|
89 |
+
"from google.colab import drive\n",
|
90 |
+
"drive.mount('/content/drive')"
|
91 |
+
],
|
92 |
+
"metadata": {
|
93 |
+
"colab": {
|
94 |
+
"base_uri": "https://localhost:8080/"
|
95 |
+
},
|
96 |
+
"id": "SPKfnx2rXUpD",
|
97 |
+
"outputId": "9d4feb07-6736-48fb-dc8c-c532964002b9"
|
98 |
+
},
|
99 |
+
"execution_count": 4,
|
100 |
+
"outputs": [
|
101 |
+
{
|
102 |
+
"output_type": "stream",
|
103 |
+
"name": "stdout",
|
104 |
+
"text": [
|
105 |
+
"Mounted at /content/drive\n"
|
106 |
+
]
|
107 |
+
}
|
108 |
+
]
|
109 |
+
},
|
110 |
+
{
|
111 |
+
"cell_type": "code",
|
112 |
+
"source": [
|
113 |
+
"%cd /content/drive/MyDrive/Master_Course_Data Science/LastAssignment"
|
114 |
+
],
|
115 |
+
"metadata": {
|
116 |
+
"colab": {
|
117 |
+
"base_uri": "https://localhost:8080/"
|
118 |
+
},
|
119 |
+
"id": "bupo-ZwLXbVk",
|
120 |
+
"outputId": "c6d21944-d02f-46ef-ccb6-664dc5d5b216"
|
121 |
+
},
|
122 |
+
"execution_count": 5,
|
123 |
+
"outputs": [
|
124 |
+
{
|
125 |
+
"output_type": "stream",
|
126 |
+
"name": "stdout",
|
127 |
+
"text": [
|
128 |
+
"/content/drive/MyDrive/Master_Course_Data Science/LastAssignment\n"
|
129 |
+
]
|
130 |
+
}
|
131 |
+
]
|
132 |
+
},
|
133 |
+
{
|
134 |
+
"cell_type": "code",
|
135 |
+
"source": [
|
136 |
+
"#!export\n",
|
137 |
+
"model = load_learner('models/tradiotional_clothing_recognition-v1.pkl')"
|
138 |
+
],
|
139 |
+
"metadata": {
|
140 |
+
"id": "sSpSwwC1Wny7"
|
141 |
+
},
|
142 |
+
"execution_count": 8,
|
143 |
+
"outputs": []
|
144 |
+
},
|
145 |
+
{
|
146 |
+
"cell_type": "code",
|
147 |
+
"source": [
|
148 |
+
"categories = [\n",
|
149 |
+
" \"kimono (Japan)\",\n",
|
150 |
+
" \"hanbok (South Korea)\",\n",
|
151 |
+
" \"cheongsam/qipao (China)\",\n",
|
152 |
+
" \"sari (India)\",\n",
|
153 |
+
" \"thawb/dishdasha (Saudi Arabia)\",\n",
|
154 |
+
" \"dirndl (Germany)\",\n",
|
155 |
+
" \"kilt (Scotland)\",\n",
|
156 |
+
" \"ao dai (Vietnam)\",\n",
|
157 |
+
" \"boubou (West Africa)\",\n",
|
158 |
+
" \"huipil (Mexico)\",\n",
|
159 |
+
" \"sarong (Indonesia)\",\n",
|
160 |
+
" \"chador (Iran)\",\n",
|
161 |
+
" \"traje de flamenca (Spain)\",\n",
|
162 |
+
" \"batik (Malaysia)\",\n",
|
163 |
+
" \"thobe (Palestine)\",\n",
|
164 |
+
" \"national dress (Norway)\",\n",
|
165 |
+
" \"national costume (Philippines)\",\n",
|
166 |
+
" \"barong tagalog (Philippines)\",\n",
|
167 |
+
" \"abaya (United Arab Emirates)\",\n",
|
168 |
+
" \"folkdräkt (Sweden)\",\n",
|
169 |
+
" \"ao po'i (Paraguay)\",\n",
|
170 |
+
" \"pounamu piupiu (New Zealand)\",\n",
|
171 |
+
" \"kaftan (Morocco)\"\n",
|
172 |
+
"]\n",
|
173 |
+
"def recognize_image(image):\n",
|
174 |
+
" pred, idx, probs = model.predict(image)\n",
|
175 |
+
" return dict(zip(categories, map(float, probs)))"
|
176 |
+
],
|
177 |
+
"metadata": {
|
178 |
+
"id": "j2TCH9wVXe7c"
|
179 |
+
},
|
180 |
+
"execution_count": 9,
|
181 |
+
"outputs": []
|
182 |
+
},
|
183 |
+
{
|
184 |
+
"cell_type": "code",
|
185 |
+
"source": [
|
186 |
+
"img = PILImage.create(f'test_images/unknown-1.jpg')\n",
|
187 |
+
"img.thumbnail((192,192))\n",
|
188 |
+
"img"
|
189 |
+
],
|
190 |
+
"metadata": {
|
191 |
+
"colab": {
|
192 |
+
"base_uri": "https://localhost:8080/",
|
193 |
+
"height": 209
|
194 |
+
},
|
195 |
+
"id": "7CpDz53hX-n6",
|
196 |
+
"outputId": "f028d264-15f1-4723-a425-e8ca22abf6a4"
|
197 |
+
},
|
198 |
+
"execution_count": 10,
|
199 |
+
"outputs": [
|
200 |
+
{
|
201 |
+
"output_type": "execute_result",
|
202 |
+
"data": {
|
203 |
+
"text/plain": [
|
204 |
+
"PILImage mode=RGB size=192x192"
|
205 |
+
],
|
206 |
+
"image/png": "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\n"
|
207 |
+
},
|
208 |
+
"metadata": {},
|
209 |
+
"execution_count": 10
|
210 |
+
}
|
211 |
+
]
|
212 |
+
},
|
213 |
+
{
|
214 |
+
"cell_type": "code",
|
215 |
+
"source": [
|
216 |
+
"recognize_image(img)"
|
217 |
+
],
|
218 |
+
"metadata": {
|
219 |
+
"colab": {
|
220 |
+
"base_uri": "https://localhost:8080/",
|
221 |
+
"height": 436
|
222 |
+
},
|
223 |
+
"id": "V5HdXkkPYC0y",
|
224 |
+
"outputId": "225b6ae5-7b9a-4cc0-b722-52195286931d"
|
225 |
+
},
|
226 |
+
"execution_count": 11,
|
227 |
+
"outputs": [
|
228 |
+
{
|
229 |
+
"output_type": "display_data",
|
230 |
+
"data": {
|
231 |
+
"text/plain": [
|
232 |
+
"<IPython.core.display.HTML object>"
|
233 |
+
],
|
234 |
+
"text/html": [
|
235 |
+
"\n",
|
236 |
+
"<style>\n",
|
237 |
+
" /* Turns off some styling */\n",
|
238 |
+
" progress {\n",
|
239 |
+
" /* gets rid of default border in Firefox and Opera. */\n",
|
240 |
+
" border: none;\n",
|
241 |
+
" /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
|
242 |
+
" background-size: auto;\n",
|
243 |
+
" }\n",
|
244 |
+
" progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
|
245 |
+
" background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
|
246 |
+
" }\n",
|
247 |
+
" .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
|
248 |
+
" background: #F44336;\n",
|
249 |
+
" }\n",
|
250 |
+
"</style>\n"
|
251 |
+
]
|
252 |
+
},
|
253 |
+
"metadata": {}
|
254 |
+
},
|
255 |
+
{
|
256 |
+
"output_type": "display_data",
|
257 |
+
"data": {
|
258 |
+
"text/plain": [
|
259 |
+
"<IPython.core.display.HTML object>"
|
260 |
+
],
|
261 |
+
"text/html": []
|
262 |
+
},
|
263 |
+
"metadata": {}
|
264 |
+
},
|
265 |
+
{
|
266 |
+
"output_type": "execute_result",
|
267 |
+
"data": {
|
268 |
+
"text/plain": [
|
269 |
+
"{'kimono (Japan)': 3.039119837922044e-05,\n",
|
270 |
+
" 'hanbok (South Korea)': 0.00026097308727912605,\n",
|
271 |
+
" 'cheongsam/qipao (China)': 9.200982162838045e-07,\n",
|
272 |
+
" 'sari (India)': 1.4729216673003975e-06,\n",
|
273 |
+
" 'thawb/dishdasha (Saudi Arabia)': 1.62081287271576e-05,\n",
|
274 |
+
" 'dirndl (Germany)': 4.745931437355466e-05,\n",
|
275 |
+
" 'kilt (Scotland)': 2.069252877845429e-05,\n",
|
276 |
+
" 'ao dai (Vietnam)': 0.00028415146516636014,\n",
|
277 |
+
" 'boubou (West Africa)': 7.29018381662172e-07,\n",
|
278 |
+
" 'huipil (Mexico)': 0.00010681543062673882,\n",
|
279 |
+
" 'sarong (Indonesia)': 0.00015180723858065903,\n",
|
280 |
+
" 'chador (Iran)': 1.9500197595334612e-05,\n",
|
281 |
+
" 'traje de flamenca (Spain)': 1.9817616703221574e-05,\n",
|
282 |
+
" 'batik (Malaysia)': 4.4932971832167823e-07,\n",
|
283 |
+
" 'thobe (Palestine)': 0.6253378391265869,\n",
|
284 |
+
" 'national dress (Norway)': 0.37217476963996887,\n",
|
285 |
+
" 'national costume (Philippines)': 0.00039766140980646014,\n",
|
286 |
+
" 'barong tagalog (Philippines)': 3.984975137427682e-06,\n",
|
287 |
+
" 'abaya (United Arab Emirates)': 1.5120702983040246e-06,\n",
|
288 |
+
" 'folkdräkt (Sweden)': 2.1541298337979242e-05,\n",
|
289 |
+
" \"ao po'i (Paraguay)\": 0.00011518658720888197,\n",
|
290 |
+
" 'pounamu piupiu (New Zealand)': 9.098471491597593e-05,\n",
|
291 |
+
" 'kaftan (Morocco)': 0.0008950466872192919}"
|
292 |
+
]
|
293 |
+
},
|
294 |
+
"metadata": {},
|
295 |
+
"execution_count": 11
|
296 |
+
}
|
297 |
+
]
|
298 |
+
},
|
299 |
+
{
|
300 |
+
"cell_type": "code",
|
301 |
+
"source": [
|
302 |
+
"#!export\n",
|
303 |
+
"image = gr.inputs.Image(shape=(192,192))\n",
|
304 |
+
"label = gr.outputs.Label()\n",
|
305 |
+
"examples = [\n",
|
306 |
+
" 'test_images/unknown-1.jpg',\n",
|
307 |
+
" 'test_images/unknown-2.jpg',\n",
|
308 |
+
" ]\n",
|
309 |
+
"\n",
|
310 |
+
"iface = gr.Interface(fn=recognize_image, inputs=image, outputs=label, examples=examples)\n",
|
311 |
+
"iface.launch(inline=False, share=True)"
|
312 |
+
],
|
313 |
+
"metadata": {
|
314 |
+
"colab": {
|
315 |
+
"base_uri": "https://localhost:8080/"
|
316 |
+
},
|
317 |
+
"id": "SB4lBAhvYFVy",
|
318 |
+
"outputId": "d79c2d4b-bc5d-4fa8-9f02-88692f5c0d36"
|
319 |
+
},
|
320 |
+
"execution_count": 13,
|
321 |
+
"outputs": [
|
322 |
+
{
|
323 |
+
"output_type": "stream",
|
324 |
+
"name": "stderr",
|
325 |
+
"text": [
|
326 |
+
"/usr/local/lib/python3.10/dist-packages/gradio/inputs.py:259: UserWarning: Usage of gradio.inputs is deprecated, and will not be supported in the future, please import your component from gradio.components\n",
|
327 |
+
" warnings.warn(\n",
|
328 |
+
"/usr/local/lib/python3.10/dist-packages/gradio/inputs.py:262: UserWarning: `optional` parameter is deprecated, and it has no effect\n",
|
329 |
+
" super().__init__(\n",
|
330 |
+
"/usr/local/lib/python3.10/dist-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",
|
331 |
+
" warnings.warn(\n",
|
332 |
+
"/usr/local/lib/python3.10/dist-packages/gradio/outputs.py:200: UserWarning: The 'type' parameter has been deprecated. Use the Number component instead.\n",
|
333 |
+
" super().__init__(num_top_classes=num_top_classes, type=type, label=label)\n"
|
334 |
+
]
|
335 |
+
},
|
336 |
+
{
|
337 |
+
"output_type": "stream",
|
338 |
+
"name": "stdout",
|
339 |
+
"text": [
|
340 |
+
"Colab notebook detected. To show errors in colab notebook, set debug=True in launch()\n",
|
341 |
+
"Running on public URL: https://897f24d5bf9ba00855.gradio.live\n",
|
342 |
+
"\n",
|
343 |
+
"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"
|
344 |
+
]
|
345 |
+
},
|
346 |
+
{
|
347 |
+
"output_type": "execute_result",
|
348 |
+
"data": {
|
349 |
+
"text/plain": []
|
350 |
+
},
|
351 |
+
"metadata": {},
|
352 |
+
"execution_count": 13
|
353 |
+
}
|
354 |
+
]
|
355 |
+
},
|
356 |
+
{
|
357 |
+
"cell_type": "markdown",
|
358 |
+
"source": [
|
359 |
+
"\n",
|
360 |
+
"Notebook to Python Script Export"
|
361 |
+
],
|
362 |
+
"metadata": {
|
363 |
+
"id": "NxT2Gxu3YWcD"
|
364 |
+
}
|
365 |
+
},
|
366 |
+
{
|
367 |
+
"cell_type": "code",
|
368 |
+
"source": [
|
369 |
+
"!pip install nbdev\n"
|
370 |
+
],
|
371 |
+
"metadata": {
|
372 |
+
"colab": {
|
373 |
+
"base_uri": "https://localhost:8080/"
|
374 |
+
},
|
375 |
+
"id": "6tfDvQm2YgdM",
|
376 |
+
"outputId": "3f8f9f02-443a-4d69-9b89-c88e75fc6bed"
|
377 |
+
},
|
378 |
+
"execution_count": 15,
|
379 |
+
"outputs": [
|
380 |
+
{
|
381 |
+
"output_type": "stream",
|
382 |
+
"name": "stdout",
|
383 |
+
"text": [
|
384 |
+
"Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n",
|
385 |
+
"Requirement already satisfied: nbdev in /usr/local/lib/python3.10/dist-packages (2.3.12)\n",
|
386 |
+
"Requirement already satisfied: fastcore>=1.5.27 in /usr/local/lib/python3.10/dist-packages (from nbdev) (1.5.29)\n",
|
387 |
+
"Requirement already satisfied: execnb>=0.1.4 in /usr/local/lib/python3.10/dist-packages (from nbdev) (0.1.5)\n",
|
388 |
+
"Requirement already satisfied: astunparse in /usr/local/lib/python3.10/dist-packages (from nbdev) (1.6.3)\n",
|
389 |
+
"Requirement already satisfied: ghapi>=1.0.3 in /usr/local/lib/python3.10/dist-packages (from nbdev) (1.0.4)\n",
|
390 |
+
"Requirement already satisfied: watchdog in /usr/local/lib/python3.10/dist-packages (from nbdev) (3.0.0)\n",
|
391 |
+
"Requirement already satisfied: asttokens in /usr/local/lib/python3.10/dist-packages (from nbdev) (2.2.1)\n",
|
392 |
+
"Requirement already satisfied: PyYAML in /usr/local/lib/python3.10/dist-packages (from nbdev) (6.0)\n",
|
393 |
+
"Requirement already satisfied: ipython in /usr/local/lib/python3.10/dist-packages (from execnb>=0.1.4->nbdev) (7.34.0)\n",
|
394 |
+
"Requirement already satisfied: pip in /usr/local/lib/python3.10/dist-packages (from fastcore>=1.5.27->nbdev) (23.1.2)\n",
|
395 |
+
"Requirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from fastcore>=1.5.27->nbdev) (23.1)\n",
|
396 |
+
"Requirement already satisfied: six in /usr/local/lib/python3.10/dist-packages (from asttokens->nbdev) (1.16.0)\n",
|
397 |
+
"Requirement already satisfied: wheel<1.0,>=0.23.0 in /usr/local/lib/python3.10/dist-packages (from astunparse->nbdev) (0.40.0)\n",
|
398 |
+
"Requirement already satisfied: setuptools>=18.5 in /usr/local/lib/python3.10/dist-packages (from ipython->execnb>=0.1.4->nbdev) (67.7.2)\n",
|
399 |
+
"Requirement already satisfied: jedi>=0.16 in /usr/local/lib/python3.10/dist-packages (from ipython->execnb>=0.1.4->nbdev) (0.18.2)\n",
|
400 |
+
"Requirement already satisfied: decorator in /usr/local/lib/python3.10/dist-packages (from ipython->execnb>=0.1.4->nbdev) (4.4.2)\n",
|
401 |
+
"Requirement already satisfied: pickleshare in /usr/local/lib/python3.10/dist-packages (from ipython->execnb>=0.1.4->nbdev) (0.7.5)\n",
|
402 |
+
"Requirement already satisfied: traitlets>=4.2 in /usr/local/lib/python3.10/dist-packages (from ipython->execnb>=0.1.4->nbdev) (5.7.1)\n",
|
403 |
+
"Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from ipython->execnb>=0.1.4->nbdev) (3.0.38)\n",
|
404 |
+
"Requirement already satisfied: pygments in /usr/local/lib/python3.10/dist-packages (from ipython->execnb>=0.1.4->nbdev) (2.14.0)\n",
|
405 |
+
"Requirement already satisfied: backcall in /usr/local/lib/python3.10/dist-packages (from ipython->execnb>=0.1.4->nbdev) (0.2.0)\n",
|
406 |
+
"Requirement already satisfied: matplotlib-inline in /usr/local/lib/python3.10/dist-packages (from ipython->execnb>=0.1.4->nbdev) (0.1.6)\n",
|
407 |
+
"Requirement already satisfied: pexpect>4.3 in /usr/local/lib/python3.10/dist-packages (from ipython->execnb>=0.1.4->nbdev) (4.8.0)\n",
|
408 |
+
"Requirement already satisfied: parso<0.9.0,>=0.8.0 in /usr/local/lib/python3.10/dist-packages (from jedi>=0.16->ipython->execnb>=0.1.4->nbdev) (0.8.3)\n",
|
409 |
+
"Requirement already satisfied: ptyprocess>=0.5 in /usr/local/lib/python3.10/dist-packages (from pexpect>4.3->ipython->execnb>=0.1.4->nbdev) (0.7.0)\n",
|
410 |
+
"Requirement already satisfied: wcwidth in /usr/local/lib/python3.10/dist-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->ipython->execnb>=0.1.4->nbdev) (0.2.6)\n"
|
411 |
+
]
|
412 |
+
}
|
413 |
+
]
|
414 |
+
},
|
415 |
+
{
|
416 |
+
"cell_type": "code",
|
417 |
+
"source": [
|
418 |
+
"from nbdev.export import notebook2script"
|
419 |
+
],
|
420 |
+
"metadata": {
|
421 |
+
"id": "DKCUaInbYYlD"
|
422 |
+
},
|
423 |
+
"execution_count": null,
|
424 |
+
"outputs": []
|
425 |
+
},
|
426 |
+
{
|
427 |
+
"cell_type": "code",
|
428 |
+
"source": [
|
429 |
+
"notebook2script('app.ipynb')"
|
430 |
+
],
|
431 |
+
"metadata": {
|
432 |
+
"id": "yuknkMK2ZZkx"
|
433 |
+
},
|
434 |
+
"execution_count": null,
|
435 |
+
"outputs": []
|
436 |
+
}
|
437 |
+
]
|
438 |
+
}
|
app.py
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from fastai.vision.all import *
|
2 |
+
import gradio as gr
|
3 |
+
|
4 |
+
|
5 |
+
|
6 |
+
model = load_learner('./models/tradiotional_clothing_recognition-v1.pkl')
|
7 |
+
|
8 |
+
categories = model.dls.vocab
|
9 |
+
|
10 |
+
def recognize_image(image):
|
11 |
+
pred, idx, probs = model.predict(image)
|
12 |
+
return dict(zip(categories, map(float, probs)))
|
13 |
+
|
14 |
+
image = gr.inputs.Image(shape=(192,192))
|
15 |
+
label = gr.outputs.Label(num_top_classes=5)
|
16 |
+
examples = [
|
17 |
+
'./test_images/unknown-1.jpg',
|
18 |
+
'./test_images/unknown-2.jpg'
|
19 |
+
|
20 |
+
]
|
21 |
+
|
22 |
+
iface = gr.Interface(fn=recognize_image, inputs=image, outputs=label, examples=examples)
|
23 |
+
iface.launch(inline=False)
|
models/tradiotional_clothing_recognition-v1.pkl
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:efc4c9d70a5420a6eac8c1aebe9e81bf966ce809bfa35c78b619139d9ba678c4
|
3 |
+
size 87581158
|
requirements.txt
ADDED
File without changes
|
test_images/unknown-1.jpg
ADDED
test_images/unknown-2.jpg
ADDED