Spaces:
Build error
Build error
André Boekhorst
commited on
Commit
•
a8d81c8
1
Parent(s):
8ff933f
updated with model
Browse files- .ipynb_checkpoints/Monet or Picasso Notebook-checkpoint.ipynb +6 -0
- .ipynb_checkpoints/Monet-Picasso-Using-Model-checkpoint.ipynb +6 -0
- Monet or Picasso Notebook.ipynb +56 -0
- Monet-Picasso-Using-Model.ipynb +471 -0
- app.py +20 -4
- fake-picasso_art_forgery.jpg +0 -0
- model-monet-picasso.pkl +3 -0
- monet-image.jpeg +0 -0
- monet-style.jpg +0 -0
- picasso-image.jpg +0 -0
- renoir.jpeg +0 -0
- untitled +0 -0
.ipynb_checkpoints/Monet or Picasso Notebook-checkpoint.ipynb
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"cells": [],
|
3 |
+
"metadata": {},
|
4 |
+
"nbformat": 4,
|
5 |
+
"nbformat_minor": 5
|
6 |
+
}
|
.ipynb_checkpoints/Monet-Picasso-Using-Model-checkpoint.ipynb
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"cells": [],
|
3 |
+
"metadata": {},
|
4 |
+
"nbformat": 4,
|
5 |
+
"nbformat_minor": 5
|
6 |
+
}
|
Monet or Picasso Notebook.ipynb
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"cells": [
|
3 |
+
{
|
4 |
+
"cell_type": "code",
|
5 |
+
"execution_count": 2,
|
6 |
+
"id": "9b782fa2",
|
7 |
+
"metadata": {},
|
8 |
+
"outputs": [
|
9 |
+
{
|
10 |
+
"ename": "ModuleNotFoundError",
|
11 |
+
"evalue": "No module named 'fastai'",
|
12 |
+
"output_type": "error",
|
13 |
+
"traceback": [
|
14 |
+
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
15 |
+
"\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)",
|
16 |
+
"\u001b[0;32m/var/folders/8z/zrtpx1656jvgptcb1ld3hvz40000gn/T/ipykernel_6025/2197721857.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mfastai\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvision\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mall\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mgradio\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mgr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
17 |
+
"\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'fastai'"
|
18 |
+
]
|
19 |
+
}
|
20 |
+
],
|
21 |
+
"source": [
|
22 |
+
"from fastai.vision.all import *\n",
|
23 |
+
"import gradio as gr"
|
24 |
+
]
|
25 |
+
},
|
26 |
+
{
|
27 |
+
"cell_type": "code",
|
28 |
+
"execution_count": null,
|
29 |
+
"id": "6fcbb770",
|
30 |
+
"metadata": {},
|
31 |
+
"outputs": [],
|
32 |
+
"source": []
|
33 |
+
}
|
34 |
+
],
|
35 |
+
"metadata": {
|
36 |
+
"kernelspec": {
|
37 |
+
"display_name": "Python 3 (ipykernel)",
|
38 |
+
"language": "python",
|
39 |
+
"name": "python3"
|
40 |
+
},
|
41 |
+
"language_info": {
|
42 |
+
"codemirror_mode": {
|
43 |
+
"name": "ipython",
|
44 |
+
"version": 3
|
45 |
+
},
|
46 |
+
"file_extension": ".py",
|
47 |
+
"mimetype": "text/x-python",
|
48 |
+
"name": "python",
|
49 |
+
"nbconvert_exporter": "python",
|
50 |
+
"pygments_lexer": "ipython3",
|
51 |
+
"version": "3.9.7"
|
52 |
+
}
|
53 |
+
},
|
54 |
+
"nbformat": 4,
|
55 |
+
"nbformat_minor": 5
|
56 |
+
}
|
Monet-Picasso-Using-Model.ipynb
ADDED
@@ -0,0 +1,471 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"cells": [
|
3 |
+
{
|
4 |
+
"cell_type": "code",
|
5 |
+
"execution_count": 58,
|
6 |
+
"id": "d9a173f8-eecc-4590-b687-f9f72fcbd393",
|
7 |
+
"metadata": {
|
8 |
+
"collapsed": true,
|
9 |
+
"jupyter": {
|
10 |
+
"outputs_hidden": true
|
11 |
+
},
|
12 |
+
"tags": []
|
13 |
+
},
|
14 |
+
"outputs": [
|
15 |
+
{
|
16 |
+
"name": "stdout",
|
17 |
+
"output_type": "stream",
|
18 |
+
"text": [
|
19 |
+
"Requirement already satisfied: nbdev in /Users/andre/mambaforge/lib/python3.10/site-packages (2.2.6)\n",
|
20 |
+
"Requirement already satisfied: astunparse in /Users/andre/mambaforge/lib/python3.10/site-packages (from nbdev) (1.6.3)\n",
|
21 |
+
"Requirement already satisfied: fastcore>=1.5.19 in /Users/andre/mambaforge/lib/python3.10/site-packages (from nbdev) (1.5.21)\n",
|
22 |
+
"Requirement already satisfied: PyYAML in /Users/andre/mambaforge/lib/python3.10/site-packages (from nbdev) (6.0)\n",
|
23 |
+
"Requirement already satisfied: ghapi in /Users/andre/mambaforge/lib/python3.10/site-packages (from nbdev) (1.0.1)\n",
|
24 |
+
"Requirement already satisfied: execnb>=0.0.10 in /Users/andre/mambaforge/lib/python3.10/site-packages (from nbdev) (0.1.2)\n",
|
25 |
+
"Requirement already satisfied: ipython in /Users/andre/mambaforge/lib/python3.10/site-packages (from execnb>=0.0.10->nbdev) (8.4.0)\n",
|
26 |
+
"Requirement already satisfied: packaging in /Users/andre/mambaforge/lib/python3.10/site-packages (from fastcore>=1.5.19->nbdev) (21.3)\n",
|
27 |
+
"Requirement already satisfied: pip in /Users/andre/mambaforge/lib/python3.10/site-packages (from fastcore>=1.5.19->nbdev) (22.2.2)\n",
|
28 |
+
"Requirement already satisfied: wheel<1.0,>=0.23.0 in /Users/andre/mambaforge/lib/python3.10/site-packages (from astunparse->nbdev) (0.37.1)\n",
|
29 |
+
"Requirement already satisfied: six<2.0,>=1.6.1 in /Users/andre/mambaforge/lib/python3.10/site-packages (from astunparse->nbdev) (1.16.0)\n",
|
30 |
+
"Requirement already satisfied: stack-data in /Users/andre/mambaforge/lib/python3.10/site-packages (from ipython->execnb>=0.0.10->nbdev) (0.4.0)\n",
|
31 |
+
"Requirement already satisfied: backcall in /Users/andre/mambaforge/lib/python3.10/site-packages (from ipython->execnb>=0.0.10->nbdev) (0.2.0)\n",
|
32 |
+
"Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /Users/andre/mambaforge/lib/python3.10/site-packages (from ipython->execnb>=0.0.10->nbdev) (3.0.30)\n",
|
33 |
+
"Requirement already satisfied: decorator in /Users/andre/mambaforge/lib/python3.10/site-packages (from ipython->execnb>=0.0.10->nbdev) (5.1.1)\n",
|
34 |
+
"Requirement already satisfied: appnope in /Users/andre/mambaforge/lib/python3.10/site-packages (from ipython->execnb>=0.0.10->nbdev) (0.1.3)\n",
|
35 |
+
"Requirement already satisfied: pygments>=2.4.0 in /Users/andre/mambaforge/lib/python3.10/site-packages (from ipython->execnb>=0.0.10->nbdev) (2.13.0)\n",
|
36 |
+
"Requirement already satisfied: pickleshare in /Users/andre/mambaforge/lib/python3.10/site-packages (from ipython->execnb>=0.0.10->nbdev) (0.7.5)\n",
|
37 |
+
"Requirement already satisfied: setuptools>=18.5 in /Users/andre/mambaforge/lib/python3.10/site-packages (from ipython->execnb>=0.0.10->nbdev) (65.2.0)\n",
|
38 |
+
"Requirement already satisfied: traitlets>=5 in /Users/andre/mambaforge/lib/python3.10/site-packages (from ipython->execnb>=0.0.10->nbdev) (5.3.0)\n",
|
39 |
+
"Requirement already satisfied: pexpect>4.3 in /Users/andre/mambaforge/lib/python3.10/site-packages (from ipython->execnb>=0.0.10->nbdev) (4.8.0)\n",
|
40 |
+
"Requirement already satisfied: matplotlib-inline in /Users/andre/mambaforge/lib/python3.10/site-packages (from ipython->execnb>=0.0.10->nbdev) (0.1.6)\n",
|
41 |
+
"Requirement already satisfied: jedi>=0.16 in /Users/andre/mambaforge/lib/python3.10/site-packages (from ipython->execnb>=0.0.10->nbdev) (0.18.1)\n",
|
42 |
+
"Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /Users/andre/mambaforge/lib/python3.10/site-packages (from packaging->fastcore>=1.5.19->nbdev) (3.0.9)\n",
|
43 |
+
"Requirement already satisfied: parso<0.9.0,>=0.8.0 in /Users/andre/mambaforge/lib/python3.10/site-packages (from jedi>=0.16->ipython->execnb>=0.0.10->nbdev) (0.8.3)\n",
|
44 |
+
"Requirement already satisfied: ptyprocess>=0.5 in /Users/andre/mambaforge/lib/python3.10/site-packages (from pexpect>4.3->ipython->execnb>=0.0.10->nbdev) (0.7.0)\n",
|
45 |
+
"Requirement already satisfied: wcwidth in /Users/andre/mambaforge/lib/python3.10/site-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->ipython->execnb>=0.0.10->nbdev) (0.2.5)\n",
|
46 |
+
"Requirement already satisfied: pure-eval in /Users/andre/mambaforge/lib/python3.10/site-packages (from stack-data->ipython->execnb>=0.0.10->nbdev) (0.2.2)\n",
|
47 |
+
"Requirement already satisfied: asttokens in /Users/andre/mambaforge/lib/python3.10/site-packages (from stack-data->ipython->execnb>=0.0.10->nbdev) (2.0.8)\n",
|
48 |
+
"Requirement already satisfied: executing in /Users/andre/mambaforge/lib/python3.10/site-packages (from stack-data->ipython->execnb>=0.0.10->nbdev) (0.10.0)\n"
|
49 |
+
]
|
50 |
+
},
|
51 |
+
{
|
52 |
+
"ename": "ImportError",
|
53 |
+
"evalue": "cannot import name 'reset_nbdev_module' from 'nbdev.export' (/Users/andre/mambaforge/lib/python3.10/site-packages/nbdev/export.py)",
|
54 |
+
"output_type": "error",
|
55 |
+
"traceback": [
|
56 |
+
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
57 |
+
"\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)",
|
58 |
+
"Input \u001b[0;32mIn [58]\u001b[0m, in \u001b[0;36m<cell line: 4>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m#!pip install fastai\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;66;03m#!pip install ipywidgets\u001b[39;00m\n\u001b[1;32m 3\u001b[0m get_ipython()\u001b[38;5;241m.\u001b[39msystem(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mpip3 install nbdev\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m----> 4\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;01mexport\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m reset_nbdev_module, notebook2script\n",
|
59 |
+
"\u001b[0;31mImportError\u001b[0m: cannot import name 'reset_nbdev_module' from 'nbdev.export' (/Users/andre/mambaforge/lib/python3.10/site-packages/nbdev/export.py)"
|
60 |
+
]
|
61 |
+
}
|
62 |
+
],
|
63 |
+
"source": [
|
64 |
+
"#!pip install fastai\n",
|
65 |
+
"#!pip install ipywidgets\n",
|
66 |
+
"!pip install nbdev\n",
|
67 |
+
"from nbdev.export import reset_nbdev_module, notebook2script\n"
|
68 |
+
]
|
69 |
+
},
|
70 |
+
{
|
71 |
+
"cell_type": "code",
|
72 |
+
"execution_count": 36,
|
73 |
+
"id": "6fb09ca8",
|
74 |
+
"metadata": {
|
75 |
+
"tags": []
|
76 |
+
},
|
77 |
+
"outputs": [],
|
78 |
+
"source": [
|
79 |
+
"#|export\n",
|
80 |
+
"from fastai.vision.all import *\n",
|
81 |
+
"import gradio as gr"
|
82 |
+
]
|
83 |
+
},
|
84 |
+
{
|
85 |
+
"cell_type": "code",
|
86 |
+
"execution_count": 37,
|
87 |
+
"id": "01120831",
|
88 |
+
"metadata": {},
|
89 |
+
"outputs": [],
|
90 |
+
"source": [
|
91 |
+
"#|export\n",
|
92 |
+
"learn = load_learner('model-monet-picasso.pkl')\n"
|
93 |
+
]
|
94 |
+
},
|
95 |
+
{
|
96 |
+
"cell_type": "code",
|
97 |
+
"execution_count": 38,
|
98 |
+
"id": "b018dec1-d54b-491d-bab6-0fd8a68af249",
|
99 |
+
"metadata": {},
|
100 |
+
"outputs": [
|
101 |
+
{
|
102 |
+
"data": {
|
103 |
+
"image/png": "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mk2pG8AVTmnQGmZ1kY6sMdZo+8mHQ3u5MYWbTavcDdXEDUMPIEorhTUoEmBGlpRFxPdDdXRYVWW3640CV5Zt8JrQWXt+dta1bdt2pbHI0O72LOIqhywcE4pY7XxJ583w8PKTuq5Xq9355ZXWipCUSKnpcrO++crtajLph0FEirLs+76eTij33g/7/d668uqsUUb7fV9NZqRM3w8huV89WNnOv3p09LU33/zk7F6mlFplbRFimFU1Ntuh89wmbSoyKkknEpVWJLZNOzIBTBa0yEpBkshAgBkKVwJpRWo+c1o33g9t2yJSM3S9EpXywrm5q33yKafRQQsoWWtGMEQIYTabvSQ9cBz06IdJyIKgJ8PQa631q29cGzEfAEBKRltuVxSE4PSLekAIAZAAMYQAIFpMEnry4PFF3287bygDIRk9iO/2sdkEN6neeeva7VsnouTi2SOtxSqeTnVZFZzJFepgWSolIGlem/nEBUClKKcsUD9tYxe6wxNX2CwpEYznFRSGjTHagkhiidMaodScoWn2HCMjFkYfzapdv3eIpiCttPe90dz1YSx9+WHow7BdX+U4fP9vfO/s8bOz5+fL48MQAua0vbga041FNbFaA/Mw+JRS1+6KuqzL6uDwYN+0V9tNyhkBKqPe+fpXy8/vP3z4EA2llIYsifPjx0/eefcdY8wYALmi2KxWJ8sydbGu64+++LwN9vDmSTv0fYiZLFP2Pl2sHpY+vXvrdFmaCm2n4+GJIcyh7bfNhbPq5ulB0w+QO1SSIXvvC0YirXmmsRRIkhQwELEIu8KQtURBOx0lp5BdoUKUxXKmtd41TR+yzrxNvVG6rvRYe67rqotpZMQaY0RAQIwZg2DQRCwiLNrYkXYwfktnbssKWRgEkBhyEpGYkjCkwTVN471vmn1ZTDlDP/Q5JwkU2bKAAHskTp4QKKERmDodUEeks7OLQmVy7uBgiZhEctdfdX2LUggk4CRZsWRrDAMo0ooUGf348WNOhlmlHFJmyloxIaJwBgClkQSICMhATorU1bpptzF5MLbMORlih1knmczmWpte2U++eNiDYuYYo4i03iuC87PzH/zg/12W9awqd6srz9laY7TV2ihS/dCHbmDOAAAsiAQpD13fmubWjeu37944OjqqqgoJWej11249f/aMRdrtvlu36/22XswODg8XiwUSaa0//fTT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\n",
|
104 |
+
"text/plain": [
|
105 |
+
"PILImage mode=RGB size=192x108"
|
106 |
+
]
|
107 |
+
},
|
108 |
+
"execution_count": 38,
|
109 |
+
"metadata": {},
|
110 |
+
"output_type": "execute_result"
|
111 |
+
}
|
112 |
+
],
|
113 |
+
"source": [
|
114 |
+
"im = PILImage.create('monet-image.jpeg')\n",
|
115 |
+
"im.thumbnail( (192,192) )\n",
|
116 |
+
"im"
|
117 |
+
]
|
118 |
+
},
|
119 |
+
{
|
120 |
+
"cell_type": "code",
|
121 |
+
"execution_count": 39,
|
122 |
+
"id": "5c42f479-56b9-405e-b691-61f3a2011440",
|
123 |
+
"metadata": {},
|
124 |
+
"outputs": [
|
125 |
+
{
|
126 |
+
"data": {
|
127 |
+
"text/html": [
|
128 |
+
"\n",
|
129 |
+
"<style>\n",
|
130 |
+
" /* Turns off some styling */\n",
|
131 |
+
" progress {\n",
|
132 |
+
" /* gets rid of default border in Firefox and Opera. */\n",
|
133 |
+
" border: none;\n",
|
134 |
+
" /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
|
135 |
+
" background-size: auto;\n",
|
136 |
+
" }\n",
|
137 |
+
" progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
|
138 |
+
" background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
|
139 |
+
" }\n",
|
140 |
+
" .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
|
141 |
+
" background: #F44336;\n",
|
142 |
+
" }\n",
|
143 |
+
"</style>\n"
|
144 |
+
],
|
145 |
+
"text/plain": [
|
146 |
+
"<IPython.core.display.HTML object>"
|
147 |
+
]
|
148 |
+
},
|
149 |
+
"metadata": {},
|
150 |
+
"output_type": "display_data"
|
151 |
+
},
|
152 |
+
{
|
153 |
+
"data": {
|
154 |
+
"text/html": [],
|
155 |
+
"text/plain": [
|
156 |
+
"<IPython.core.display.HTML object>"
|
157 |
+
]
|
158 |
+
},
|
159 |
+
"metadata": {},
|
160 |
+
"output_type": "display_data"
|
161 |
+
},
|
162 |
+
{
|
163 |
+
"data": {
|
164 |
+
"text/plain": [
|
165 |
+
"('monet painting', TensorBase(0), TensorBase([0.8959, 0.1041]))"
|
166 |
+
]
|
167 |
+
},
|
168 |
+
"execution_count": 39,
|
169 |
+
"metadata": {},
|
170 |
+
"output_type": "execute_result"
|
171 |
+
}
|
172 |
+
],
|
173 |
+
"source": [
|
174 |
+
"#|export\n",
|
175 |
+
"learn.predict(im)"
|
176 |
+
]
|
177 |
+
},
|
178 |
+
{
|
179 |
+
"cell_type": "code",
|
180 |
+
"execution_count": 40,
|
181 |
+
"id": "94d12d01-e357-4cac-b1da-aa0fd4a7e403",
|
182 |
+
"metadata": {},
|
183 |
+
"outputs": [],
|
184 |
+
"source": [
|
185 |
+
"#|export\n",
|
186 |
+
"categories = ('Monet', 'Picasso')\n",
|
187 |
+
"\n",
|
188 |
+
"def classify_image(img):\n",
|
189 |
+
" pred,idx,probs = learn.predict(img)\n",
|
190 |
+
" return dict(zip( categories, map(float,probs) ) )"
|
191 |
+
]
|
192 |
+
},
|
193 |
+
{
|
194 |
+
"cell_type": "code",
|
195 |
+
"execution_count": 23,
|
196 |
+
"id": "5047c1a6-3f8b-49e7-ab15-9542b00c3053",
|
197 |
+
"metadata": {},
|
198 |
+
"outputs": [
|
199 |
+
{
|
200 |
+
"data": {
|
201 |
+
"text/html": [
|
202 |
+
"\n",
|
203 |
+
"<style>\n",
|
204 |
+
" /* Turns off some styling */\n",
|
205 |
+
" progress {\n",
|
206 |
+
" /* gets rid of default border in Firefox and Opera. */\n",
|
207 |
+
" border: none;\n",
|
208 |
+
" /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
|
209 |
+
" background-size: auto;\n",
|
210 |
+
" }\n",
|
211 |
+
" progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
|
212 |
+
" background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
|
213 |
+
" }\n",
|
214 |
+
" .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
|
215 |
+
" background: #F44336;\n",
|
216 |
+
" }\n",
|
217 |
+
"</style>\n"
|
218 |
+
],
|
219 |
+
"text/plain": [
|
220 |
+
"<IPython.core.display.HTML object>"
|
221 |
+
]
|
222 |
+
},
|
223 |
+
"metadata": {},
|
224 |
+
"output_type": "display_data"
|
225 |
+
},
|
226 |
+
{
|
227 |
+
"data": {
|
228 |
+
"text/html": [],
|
229 |
+
"text/plain": [
|
230 |
+
"<IPython.core.display.HTML object>"
|
231 |
+
]
|
232 |
+
},
|
233 |
+
"metadata": {},
|
234 |
+
"output_type": "display_data"
|
235 |
+
},
|
236 |
+
{
|
237 |
+
"data": {
|
238 |
+
"text/plain": [
|
239 |
+
"{'Monet': 0.8958567976951599, 'Picasso': 0.10414314270019531}"
|
240 |
+
]
|
241 |
+
},
|
242 |
+
"execution_count": 23,
|
243 |
+
"metadata": {},
|
244 |
+
"output_type": "execute_result"
|
245 |
+
}
|
246 |
+
],
|
247 |
+
"source": [
|
248 |
+
"classify_image(im)"
|
249 |
+
]
|
250 |
+
},
|
251 |
+
{
|
252 |
+
"cell_type": "code",
|
253 |
+
"execution_count": 41,
|
254 |
+
"id": "4e1f729c-5be7-4c5a-92a9-36021c8c3f70",
|
255 |
+
"metadata": {},
|
256 |
+
"outputs": [
|
257 |
+
{
|
258 |
+
"name": "stderr",
|
259 |
+
"output_type": "stream",
|
260 |
+
"text": [
|
261 |
+
"/Users/andre/mambaforge/lib/python3.10/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",
|
262 |
+
" warnings.warn(\n",
|
263 |
+
"/Users/andre/mambaforge/lib/python3.10/site-packages/gradio/deprecation.py:40: UserWarning: `optional` parameter is deprecated, and it has no effect\n",
|
264 |
+
" warnings.warn(value)\n",
|
265 |
+
"/Users/andre/mambaforge/lib/python3.10/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",
|
266 |
+
" warnings.warn(\n",
|
267 |
+
"/Users/andre/mambaforge/lib/python3.10/site-packages/gradio/deprecation.py:40: UserWarning: The 'type' parameter has been deprecated. Use the Number component instead.\n",
|
268 |
+
" warnings.warn(value)\n"
|
269 |
+
]
|
270 |
+
},
|
271 |
+
{
|
272 |
+
"name": "stdout",
|
273 |
+
"output_type": "stream",
|
274 |
+
"text": [
|
275 |
+
"Running on local URL: http://127.0.0.1:7867/\n",
|
276 |
+
"\n",
|
277 |
+
"To create a public link, set `share=True` in `launch()`.\n"
|
278 |
+
]
|
279 |
+
},
|
280 |
+
{
|
281 |
+
"data": {
|
282 |
+
"text/plain": [
|
283 |
+
"(<gradio.routes.App at 0x15e273070>, 'http://127.0.0.1:7867/', None)"
|
284 |
+
]
|
285 |
+
},
|
286 |
+
"execution_count": 41,
|
287 |
+
"metadata": {},
|
288 |
+
"output_type": "execute_result"
|
289 |
+
},
|
290 |
+
{
|
291 |
+
"data": {
|
292 |
+
"text/html": [
|
293 |
+
"\n",
|
294 |
+
"<style>\n",
|
295 |
+
" /* Turns off some styling */\n",
|
296 |
+
" progress {\n",
|
297 |
+
" /* gets rid of default border in Firefox and Opera. */\n",
|
298 |
+
" border: none;\n",
|
299 |
+
" /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
|
300 |
+
" background-size: auto;\n",
|
301 |
+
" }\n",
|
302 |
+
" progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
|
303 |
+
" background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
|
304 |
+
" }\n",
|
305 |
+
" .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
|
306 |
+
" background: #F44336;\n",
|
307 |
+
" }\n",
|
308 |
+
"</style>\n"
|
309 |
+
],
|
310 |
+
"text/plain": [
|
311 |
+
"<IPython.core.display.HTML object>"
|
312 |
+
]
|
313 |
+
},
|
314 |
+
"metadata": {},
|
315 |
+
"output_type": "display_data"
|
316 |
+
},
|
317 |
+
{
|
318 |
+
"data": {
|
319 |
+
"text/html": [],
|
320 |
+
"text/plain": [
|
321 |
+
"<IPython.core.display.HTML object>"
|
322 |
+
]
|
323 |
+
},
|
324 |
+
"metadata": {},
|
325 |
+
"output_type": "display_data"
|
326 |
+
},
|
327 |
+
{
|
328 |
+
"data": {
|
329 |
+
"text/html": [
|
330 |
+
"\n",
|
331 |
+
"<style>\n",
|
332 |
+
" /* Turns off some styling */\n",
|
333 |
+
" progress {\n",
|
334 |
+
" /* gets rid of default border in Firefox and Opera. */\n",
|
335 |
+
" border: none;\n",
|
336 |
+
" /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
|
337 |
+
" background-size: auto;\n",
|
338 |
+
" }\n",
|
339 |
+
" progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
|
340 |
+
" background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
|
341 |
+
" }\n",
|
342 |
+
" .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
|
343 |
+
" background: #F44336;\n",
|
344 |
+
" }\n",
|
345 |
+
"</style>\n"
|
346 |
+
],
|
347 |
+
"text/plain": [
|
348 |
+
"<IPython.core.display.HTML object>"
|
349 |
+
]
|
350 |
+
},
|
351 |
+
"metadata": {},
|
352 |
+
"output_type": "display_data"
|
353 |
+
},
|
354 |
+
{
|
355 |
+
"data": {
|
356 |
+
"text/html": [],
|
357 |
+
"text/plain": [
|
358 |
+
"<IPython.core.display.HTML object>"
|
359 |
+
]
|
360 |
+
},
|
361 |
+
"metadata": {},
|
362 |
+
"output_type": "display_data"
|
363 |
+
},
|
364 |
+
{
|
365 |
+
"data": {
|
366 |
+
"text/html": [
|
367 |
+
"\n",
|
368 |
+
"<style>\n",
|
369 |
+
" /* Turns off some styling */\n",
|
370 |
+
" progress {\n",
|
371 |
+
" /* gets rid of default border in Firefox and Opera. */\n",
|
372 |
+
" border: none;\n",
|
373 |
+
" /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
|
374 |
+
" background-size: auto;\n",
|
375 |
+
" }\n",
|
376 |
+
" progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
|
377 |
+
" background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
|
378 |
+
" }\n",
|
379 |
+
" .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
|
380 |
+
" background: #F44336;\n",
|
381 |
+
" }\n",
|
382 |
+
"</style>\n"
|
383 |
+
],
|
384 |
+
"text/plain": [
|
385 |
+
"<IPython.core.display.HTML object>"
|
386 |
+
]
|
387 |
+
},
|
388 |
+
"metadata": {},
|
389 |
+
"output_type": "display_data"
|
390 |
+
},
|
391 |
+
{
|
392 |
+
"data": {
|
393 |
+
"text/html": [],
|
394 |
+
"text/plain": [
|
395 |
+
"<IPython.core.display.HTML object>"
|
396 |
+
]
|
397 |
+
},
|
398 |
+
"metadata": {},
|
399 |
+
"output_type": "display_data"
|
400 |
+
},
|
401 |
+
{
|
402 |
+
"data": {
|
403 |
+
"text/html": [
|
404 |
+
"\n",
|
405 |
+
"<style>\n",
|
406 |
+
" /* Turns off some styling */\n",
|
407 |
+
" progress {\n",
|
408 |
+
" /* gets rid of default border in Firefox and Opera. */\n",
|
409 |
+
" border: none;\n",
|
410 |
+
" /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
|
411 |
+
" background-size: auto;\n",
|
412 |
+
" }\n",
|
413 |
+
" progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
|
414 |
+
" background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
|
415 |
+
" }\n",
|
416 |
+
" .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
|
417 |
+
" background: #F44336;\n",
|
418 |
+
" }\n",
|
419 |
+
"</style>\n"
|
420 |
+
],
|
421 |
+
"text/plain": [
|
422 |
+
"<IPython.core.display.HTML object>"
|
423 |
+
]
|
424 |
+
},
|
425 |
+
"metadata": {},
|
426 |
+
"output_type": "display_data"
|
427 |
+
},
|
428 |
+
{
|
429 |
+
"data": {
|
430 |
+
"text/html": [],
|
431 |
+
"text/plain": [
|
432 |
+
"<IPython.core.display.HTML object>"
|
433 |
+
]
|
434 |
+
},
|
435 |
+
"metadata": {},
|
436 |
+
"output_type": "display_data"
|
437 |
+
}
|
438 |
+
],
|
439 |
+
"source": [
|
440 |
+
"#|export\n",
|
441 |
+
"image = gr.inputs.Image(shape=(192,192))\n",
|
442 |
+
"label = gr.outputs.Label()\n",
|
443 |
+
"examples = ['monet-image.jpeg', 'picasso-image.jpg', 'monet-style.jpg', 'renoir.jpeg', 'fake-picasso_art_forgery.jpg']\n",
|
444 |
+
"\n",
|
445 |
+
"intf = gr.Interface( fn=classify_image, inputs=image, outputs=label, examples=examples)\n",
|
446 |
+
"intf.launch( inline=False )"
|
447 |
+
]
|
448 |
+
}
|
449 |
+
],
|
450 |
+
"metadata": {
|
451 |
+
"kernelspec": {
|
452 |
+
"display_name": "Python 3 (ipykernel)",
|
453 |
+
"language": "python",
|
454 |
+
"name": "python3"
|
455 |
+
},
|
456 |
+
"language_info": {
|
457 |
+
"codemirror_mode": {
|
458 |
+
"name": "ipython",
|
459 |
+
"version": 3
|
460 |
+
},
|
461 |
+
"file_extension": ".py",
|
462 |
+
"mimetype": "text/x-python",
|
463 |
+
"name": "python",
|
464 |
+
"nbconvert_exporter": "python",
|
465 |
+
"pygments_lexer": "ipython3",
|
466 |
+
"version": "3.10.6"
|
467 |
+
}
|
468 |
+
},
|
469 |
+
"nbformat": 4,
|
470 |
+
"nbformat_minor": 5
|
471 |
+
}
|
app.py
CHANGED
@@ -1,7 +1,23 @@
|
|
|
|
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-monet-picasso.pkl')
|
|
|
5 |
|
6 |
+
im = PILImage.create('monet-image.jpeg')
|
7 |
+
im.thumbnail( (192,192) )
|
8 |
+
im
|
9 |
+
|
10 |
+
learn.predict(im)
|
11 |
+
|
12 |
+
categories = ('Monet', 'Picasso')
|
13 |
+
|
14 |
+
def classify_image(img):
|
15 |
+
pred,idx,probs = learn.predict(img)
|
16 |
+
return dict(zip( categories, map(float,probs) )
|
17 |
+
|
18 |
+
image = gr.inputs.Image(shape=(192,192))
|
19 |
+
label = gr.outputs.Label()
|
20 |
+
examples = ['monet-image.jpeg', 'picasso-image.jpg', 'monet-style.jpg', 'renoir.jpeg', 'fake-picasso_art_forgery.jpg']
|
21 |
+
|
22 |
+
intf = gr.Interface( fn=classify_image, inputs=image, outputs=label, examples=examples)
|
23 |
+
intf.launch( inline=False )
|
fake-picasso_art_forgery.jpg
ADDED
![]() |
model-monet-picasso.pkl
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:fe46cb5a552e5aae8276cd9e183732f134e873f0f449198d48c90099cdfd0b86
|
3 |
+
size 46954799
|
monet-image.jpeg
ADDED
![]() |
monet-style.jpg
ADDED
![]() |
picasso-image.jpg
ADDED
![]() |
renoir.jpeg
ADDED
![]() |
untitled
ADDED
File without changes
|