Commit of the model
Browse files- .gitignore +1 -0
- MANIFEST.in +5 -0
- app.ipynb +1 -0
- app.py +21 -4
- examples/Bengal_102.jpg +0 -0
- examples/Sphynx_143.jpg +0 -0
- examples/chihuahua_43.jpg +0 -0
- examples/english_setter_15.jpg +0 -0
- examples/havanese_129.jpg +0 -0
- examples/japanese_chin_83.jpg +0 -0
- justfile +12 -0
- model.pkl +3 -0
- requirements-dev.txt +4 -0
- requirements.txt +1 -0
.gitignore
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
.venv
|
MANIFEST.in
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
include settings.ini
|
2 |
+
include LICENSE
|
3 |
+
include CONTRIBUTING.md
|
4 |
+
include README.md
|
5 |
+
recursive-exclude * __pycache__
|
app.ipynb
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
{"cells":[{"cell_type":"code","execution_count":3,"metadata":{},"outputs":[],"source":["#|default_exp app"]},{"attachments":{},"cell_type":"markdown","metadata":{"id":"98d53c05"},"source":["# Dogs-Cats Model"]},{"cell_type":"code","execution_count":4,"metadata":{},"outputs":[],"source":["#|export\n","from fastai.vision.all import *\n","import gradio as gr\n","\n","def is_cat(x) -> bool:\n"," return x[0].isupper()\n"]},{"cell_type":"code","execution_count":6,"metadata":{},"outputs":[{"data":{"text/html":["\n","<style>\n"," /* Turns off some styling */\n"," progress {\n"," /* gets rid of default border in Firefox and Opera. */\n"," border: none;\n"," /* Needs to be in here for Safari polyfill so background images work as expected. */\n"," background-size: auto;\n"," }\n"," progress:not([value]), progress:not([value])::-webkit-progress-bar {\n"," background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n"," }\n"," .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n"," background: #F44336;\n"," }\n","</style>\n"],"text/plain":["<IPython.core.display.HTML object>"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n"," <div>\n"," <progress value='811712512' class='' max='811706944' style='width:300px; height:20px; vertical-align: middle;'></progress>\n"," 100.00% [811712512/811706944 05:01<00:00]\n"," </div>\n"," "],"text/plain":["<IPython.core.display.HTML object>"]},"metadata":{},"output_type":"display_data"}],"source":["# from fastai.vision.all import *\n","# path = untar_data(URLs.PETS)\n","# dls = ImageDataLoaders.from_name_re(path, get_image_files(path/'images'), pat='(.+)_\\d+.jpg', item_tfms=Resize(460), batch_tfms=aug_transforms(size=224, min_scale=0.75))"]},{"cell_type":"code","execution_count":24,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["[Path('/Users/jrnold/.fastai/data/oxford-iiit-pet/images/english_setter_15.jpg'), Path('/Users/jrnold/.fastai/data/oxford-iiit-pet/images/havanese_129.jpg'), Path('/Users/jrnold/.fastai/data/oxford-iiit-pet/images/Bengal_102.jpg'), Path('/Users/jrnold/.fastai/data/oxford-iiit-pet/images/japanese_chin_83.jpg'), Path('/Users/jrnold/.fastai/data/oxford-iiit-pet/images/chihuahua_43.jpg'), Path('/Users/jrnold/.fastai/data/oxford-iiit-pet/images/Sphynx_143.jpg')]\n"]}],"source":["# from itertools import islice\n","# from pathlib import Path\n","# import shutil\n","# from random import shuffle\n","# paths = list((path / \"images\").iterdir())\n","# shuffle(paths)\n","# out_dir = Path(\"examples\")\n","# if not path.exists:\n","# out_dir.mkdir(exist_ok=True)\n","# for p in paths[:6]:\n","# shutil.copy(p, out_dir / p.name)"]},{"cell_type":"code","execution_count":25,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["[Path('examples/Bengal_102.jpg'), Path('examples/havanese_129.jpg'), Path('examples/Sphynx_143.jpg'), Path('examples/japanese_chin_83.jpg'), Path('examples/chihuahua_43.jpg'), Path('examples/english_setter_15.jpg')]\n"]}],"source":["from pathlib import Path\n","example_dir = Path(\"examples\")\n","example_images = list(example_dir.iterdir())\n","print(example_images)"]},{"cell_type":"code","execution_count":28,"metadata":{},"outputs":[{"data":{"image/png":"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","text/plain":["PILImage mode=RGB size=128x192"]},"execution_count":28,"metadata":{},"output_type":"execute_result"}],"source":["im = PILImage.create(str(example_images[0]))\n","im.thumbnail((192, 192))\n","im"]},{"cell_type":"code","execution_count":29,"metadata":{},"outputs":[],"source":["#|export\n","learn = load_learner(\"model.pkl\")"]},{"cell_type":"code","execution_count":31,"metadata":{},"outputs":[{"data":{"text/html":["\n","<style>\n"," /* Turns off some styling */\n"," progress {\n"," /* gets rid of default border in Firefox and Opera. */\n"," border: none;\n"," /* Needs to be in here for Safari polyfill so background images work as expected. */\n"," background-size: auto;\n"," }\n"," progress:not([value]), progress:not([value])::-webkit-progress-bar {\n"," background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n"," }\n"," .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n"," background: #F44336;\n"," }\n","</style>\n"],"text/plain":["<IPython.core.display.HTML object>"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[],"text/plain":["<IPython.core.display.HTML object>"]},"metadata":{},"output_type":"display_data"},{"name":"stdout","output_type":"stream","text":["CPU times: user 196 ms, sys: 25.4 ms, total: 221 ms\n","Wall time: 82.8 ms\n"]},{"data":{"text/plain":["('True', TensorBase(1), TensorBase([1.6575e-09, 1.0000e+00]))"]},"execution_count":31,"metadata":{},"output_type":"execute_result"}],"source":["%time learn.predict(im)"]},{"cell_type":"code","execution_count":30,"metadata":{},"outputs":[{"data":{"text/html":["\n","<style>\n"," /* Turns off some styling */\n"," progress {\n"," /* gets rid of default border in Firefox and Opera. */\n"," border: none;\n"," /* Needs to be in here for Safari polyfill so background images work as expected. */\n"," background-size: auto;\n"," }\n"," progress:not([value]), progress:not([value])::-webkit-progress-bar {\n"," background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n"," }\n"," .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n"," background: #F44336;\n"," }\n","</style>\n"],"text/plain":["<IPython.core.display.HTML object>"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[],"text/plain":["<IPython.core.display.HTML object>"]},"metadata":{},"output_type":"display_data"},{"data":{"text/plain":["('True', TensorBase(1), TensorBase([1.6575e-09, 1.0000e+00]))"]},"execution_count":30,"metadata":{},"output_type":"execute_result"}],"source":["learn.predict(im)"]},{"cell_type":"code","execution_count":32,"metadata":{},"outputs":[],"source":["#|export\n","categories = (\"Dog\", \"Cat\")\n","\n","def classify_image(img):\n"," _, _, probs = learn.predict(img)\n"," return dict(zip(categories, [float(p) for p in probs]))"]},{"cell_type":"code","execution_count":33,"metadata":{},"outputs":[{"data":{"text/html":["\n","<style>\n"," /* Turns off some styling */\n"," progress {\n"," /* gets rid of default border in Firefox and Opera. */\n"," border: none;\n"," /* Needs to be in here for Safari polyfill so background images work as expected. */\n"," background-size: auto;\n"," }\n"," progress:not([value]), progress:not([value])::-webkit-progress-bar {\n"," background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n"," }\n"," .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n"," background: #F44336;\n"," }\n","</style>\n"],"text/plain":["<IPython.core.display.HTML object>"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[],"text/plain":["<IPython.core.display.HTML object>"]},"metadata":{},"output_type":"display_data"},{"data":{"text/plain":["{'Dog': 1.6574918104694802e-09, 'Cat': 1.0}"]},"execution_count":33,"metadata":{},"output_type":"execute_result"}],"source":["classify_image(im)"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"ename":"NameError","evalue":"name 'gr' is not defined","output_type":"error","traceback":["\u001b[0;31m---------------------------------------------------------------------------\u001b[0m","\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)","Cell \u001b[0;32mIn[1], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[39m#|export\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m image \u001b[39m=\u001b[39m gr\u001b[39m.\u001b[39minputs\u001b[39m.\u001b[39mImage(shape\u001b[39m=\u001b[39m(\u001b[39m192\u001b[39m, \u001b[39m192\u001b[39m))\n\u001b[1;32m 3\u001b[0m label \u001b[39m=\u001b[39m gr\u001b[39m.\u001b[39moutputs\u001b[39m.\u001b[39mLabel()\n\u001b[1;32m 4\u001b[0m examples \u001b[39m=\u001b[39m example_images\n","\u001b[0;31mNameError\u001b[0m: name 'gr' is not defined"]}],"source":["#|export\n","image = gr.inputs.Image(shape=(192, 192))\n","label = gr.outputs.Label()\n","examples = example_images\n","intf = gr.Interface(fn=classify_image, inputs=image, outputs=label, examples=examples)\n","intf.launch(inline=True)\n"]},{"cell_type":"code","execution_count":3,"metadata":{},"outputs":[{"ename":"InterpolationMissingOptionError","evalue":"Bad value substitution: option 'lib_name' in section 'DEFAULT' contains an interpolation key 'repo' which is not a valid option name. Raw value: '%(repo)s'","output_type":"error","traceback":["\u001b[0;31m---------------------------------------------------------------------------\u001b[0m","\u001b[0;31mInterpolationMissingOptionError\u001b[0m Traceback (most recent call last)","Cell \u001b[0;32mIn[3], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mnbdev\u001b[39;00m \u001b[39mimport\u001b[39;00m nbdev_export\n\u001b[0;32m----> 2\u001b[0m nbdev_export(\u001b[39m\"\u001b[39;49m\u001b[39m.\u001b[39;49m\u001b[39m\"\u001b[39;49m)\n","File \u001b[0;32m~/minimal/.venv/lib/python3.9/site-packages/fastcore/script.py:110\u001b[0m, in \u001b[0;36mcall_parse.<locals>._f\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 107\u001b[0m \u001b[39m@wraps\u001b[39m(func)\n\u001b[1;32m 108\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m_f\u001b[39m(\u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs):\n\u001b[1;32m 109\u001b[0m mod \u001b[39m=\u001b[39m inspect\u001b[39m.\u001b[39mgetmodule(inspect\u001b[39m.\u001b[39mcurrentframe()\u001b[39m.\u001b[39mf_back)\n\u001b[0;32m--> 110\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m mod: \u001b[39mreturn\u001b[39;00m func(\u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n\u001b[1;32m 111\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m SCRIPT_INFO\u001b[39m.\u001b[39mfunc \u001b[39mand\u001b[39;00m mod\u001b[39m.\u001b[39m\u001b[39m__name__\u001b[39m\u001b[39m==\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m__main__\u001b[39m\u001b[39m\"\u001b[39m: SCRIPT_INFO\u001b[39m.\u001b[39mfunc \u001b[39m=\u001b[39m func\u001b[39m.\u001b[39m\u001b[39m__name__\u001b[39m\n\u001b[1;32m 112\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mlen\u001b[39m(sys\u001b[39m.\u001b[39margv)\u001b[39m>\u001b[39m\u001b[39m1\u001b[39m \u001b[39mand\u001b[39;00m sys\u001b[39m.\u001b[39margv[\u001b[39m1\u001b[39m]\u001b[39m==\u001b[39m\u001b[39m'\u001b[39m\u001b[39m'\u001b[39m: sys\u001b[39m.\u001b[39margv\u001b[39m.\u001b[39mpop(\u001b[39m1\u001b[39m)\n","File \u001b[0;32m~/minimal/.venv/lib/python3.9/site-packages/nbdev/doclinks.py:139\u001b[0m, in \u001b[0;36mnbdev_export\u001b[0;34m(path, **kwargs)\u001b[0m\n\u001b[1;32m 137\u001b[0m \u001b[39mfor\u001b[39;00m f \u001b[39min\u001b[39;00m files: nb_export(f)\n\u001b[1;32m 138\u001b[0m add_init(get_config()\u001b[39m.\u001b[39mlib_path)\n\u001b[0;32m--> 139\u001b[0m _build_modidx()\n","File \u001b[0;32m~/minimal/.venv/lib/python3.9/site-packages/nbdev/doclinks.py:97\u001b[0m, in \u001b[0;36m_build_modidx\u001b[0;34m(dest, nbs_path, skip_exists)\u001b[0m\n\u001b[1;32m 95\u001b[0m \u001b[39mif\u001b[39;00m idxfile\u001b[39m.\u001b[39mexists(): res \u001b[39m=\u001b[39m exec_local(idxfile\u001b[39m.\u001b[39mread_text(), \u001b[39m'\u001b[39m\u001b[39md\u001b[39m\u001b[39m'\u001b[39m)\n\u001b[1;32m 96\u001b[0m \u001b[39melse\u001b[39;00m: res \u001b[39m=\u001b[39m \u001b[39mdict\u001b[39m(syms\u001b[39m=\u001b[39m{}, settings\u001b[39m=\u001b[39m{}) \n\u001b[0;32m---> 97\u001b[0m res[\u001b[39m'\u001b[39m\u001b[39msettings\u001b[39m\u001b[39m'\u001b[39m] \u001b[39m=\u001b[39m {k:v \u001b[39mfor\u001b[39;00m k,v \u001b[39min\u001b[39;00m get_config()\u001b[39m.\u001b[39md\u001b[39m.\u001b[39mitems()\n\u001b[1;32m 98\u001b[0m \u001b[39mif\u001b[39;00m k \u001b[39min\u001b[39;00m (\u001b[39m'\u001b[39m\u001b[39mdoc_host\u001b[39m\u001b[39m'\u001b[39m,\u001b[39m'\u001b[39m\u001b[39mdoc_baseurl\u001b[39m\u001b[39m'\u001b[39m,\u001b[39m'\u001b[39m\u001b[39mlib_path\u001b[39m\u001b[39m'\u001b[39m,\u001b[39m'\u001b[39m\u001b[39mgit_url\u001b[39m\u001b[39m'\u001b[39m,\u001b[39m'\u001b[39m\u001b[39mbranch\u001b[39m\u001b[39m'\u001b[39m)}\n\u001b[1;32m 99\u001b[0m code_root \u001b[39m=\u001b[39m dest\u001b[39m.\u001b[39mparent\u001b[39m.\u001b[39mresolve()\n\u001b[1;32m 100\u001b[0m \u001b[39mfor\u001b[39;00m file \u001b[39min\u001b[39;00m globtastic(dest, file_glob\u001b[39m=\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m*.py\u001b[39m\u001b[39m\"\u001b[39m, skip_file_re\u001b[39m=\u001b[39m\u001b[39m'\u001b[39m\u001b[39m^_\u001b[39m\u001b[39m'\u001b[39m, skip_folder_re\u001b[39m=\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m\\\u001b[39m\u001b[39m.ipynb_checkpoints\u001b[39m\u001b[39m\"\u001b[39m):\n","File \u001b[0;32m~/minimal/.venv/lib/python3.9/site-packages/nbdev/doclinks.py:97\u001b[0m, in \u001b[0;36m<dictcomp>\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 95\u001b[0m \u001b[39mif\u001b[39;00m idxfile\u001b[39m.\u001b[39mexists(): res \u001b[39m=\u001b[39m exec_local(idxfile\u001b[39m.\u001b[39mread_text(), \u001b[39m'\u001b[39m\u001b[39md\u001b[39m\u001b[39m'\u001b[39m)\n\u001b[1;32m 96\u001b[0m \u001b[39melse\u001b[39;00m: res \u001b[39m=\u001b[39m \u001b[39mdict\u001b[39m(syms\u001b[39m=\u001b[39m{}, settings\u001b[39m=\u001b[39m{}) \n\u001b[0;32m---> 97\u001b[0m res[\u001b[39m'\u001b[39m\u001b[39msettings\u001b[39m\u001b[39m'\u001b[39m] \u001b[39m=\u001b[39m {k:v \u001b[39mfor\u001b[39;00m k,v \u001b[39min\u001b[39;00m get_config()\u001b[39m.\u001b[39md\u001b[39m.\u001b[39mitems()\n\u001b[1;32m 98\u001b[0m \u001b[39mif\u001b[39;00m k \u001b[39min\u001b[39;00m (\u001b[39m'\u001b[39m\u001b[39mdoc_host\u001b[39m\u001b[39m'\u001b[39m,\u001b[39m'\u001b[39m\u001b[39mdoc_baseurl\u001b[39m\u001b[39m'\u001b[39m,\u001b[39m'\u001b[39m\u001b[39mlib_path\u001b[39m\u001b[39m'\u001b[39m,\u001b[39m'\u001b[39m\u001b[39mgit_url\u001b[39m\u001b[39m'\u001b[39m,\u001b[39m'\u001b[39m\u001b[39mbranch\u001b[39m\u001b[39m'\u001b[39m)}\n\u001b[1;32m 99\u001b[0m code_root \u001b[39m=\u001b[39m dest\u001b[39m.\u001b[39mparent\u001b[39m.\u001b[39mresolve()\n\u001b[1;32m 100\u001b[0m \u001b[39mfor\u001b[39;00m file \u001b[39min\u001b[39;00m globtastic(dest, file_glob\u001b[39m=\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m*.py\u001b[39m\u001b[39m\"\u001b[39m, skip_file_re\u001b[39m=\u001b[39m\u001b[39m'\u001b[39m\u001b[39m^_\u001b[39m\u001b[39m'\u001b[39m, skip_folder_re\u001b[39m=\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m\\\u001b[39m\u001b[39m.ipynb_checkpoints\u001b[39m\u001b[39m\"\u001b[39m):\n","File \u001b[0;32m~/.pyenv/versions/3.9.13/lib/python3.9/_collections_abc.py:851\u001b[0m, in \u001b[0;36mItemsView.__iter__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 849\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m__iter__\u001b[39m(\u001b[39mself\u001b[39m):\n\u001b[1;32m 850\u001b[0m \u001b[39mfor\u001b[39;00m key \u001b[39min\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_mapping:\n\u001b[0;32m--> 851\u001b[0m \u001b[39myield\u001b[39;00m (key, \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_mapping[key])\n","File \u001b[0;32m~/.pyenv/versions/3.9.13/lib/python3.9/configparser.py:1258\u001b[0m, in \u001b[0;36mSectionProxy.__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 1256\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_parser\u001b[39m.\u001b[39mhas_option(\u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_name, key):\n\u001b[1;32m 1257\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mKeyError\u001b[39;00m(key)\n\u001b[0;32m-> 1258\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_parser\u001b[39m.\u001b[39;49mget(\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_name, key)\n","File \u001b[0;32m~/.pyenv/versions/3.9.13/lib/python3.9/configparser.py:799\u001b[0m, in \u001b[0;36mRawConfigParser.get\u001b[0;34m(self, section, option, raw, vars, fallback)\u001b[0m\n\u001b[1;32m 797\u001b[0m \u001b[39mreturn\u001b[39;00m value\n\u001b[1;32m 798\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m--> 799\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_interpolation\u001b[39m.\u001b[39;49mbefore_get(\u001b[39mself\u001b[39;49m, section, option, value,\n\u001b[1;32m 800\u001b[0m d)\n","File \u001b[0;32m~/.pyenv/versions/3.9.13/lib/python3.9/configparser.py:395\u001b[0m, in \u001b[0;36mBasicInterpolation.before_get\u001b[0;34m(self, parser, section, option, value, defaults)\u001b[0m\n\u001b[1;32m 393\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mbefore_get\u001b[39m(\u001b[39mself\u001b[39m, parser, section, option, value, defaults):\n\u001b[1;32m 394\u001b[0m L \u001b[39m=\u001b[39m []\n\u001b[0;32m--> 395\u001b[0m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_interpolate_some(parser, option, L, value, section, defaults, \u001b[39m1\u001b[39;49m)\n\u001b[1;32m 396\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39m'\u001b[39m\u001b[39m'\u001b[39m\u001b[39m.\u001b[39mjoin(L)\n","File \u001b[0;32m~/.pyenv/versions/3.9.13/lib/python3.9/configparser.py:434\u001b[0m, in \u001b[0;36mBasicInterpolation._interpolate_some\u001b[0;34m(self, parser, option, accum, rest, section, map, depth)\u001b[0m\n\u001b[1;32m 432\u001b[0m v \u001b[39m=\u001b[39m \u001b[39mmap\u001b[39m[var]\n\u001b[1;32m 433\u001b[0m \u001b[39mexcept\u001b[39;00m \u001b[39mKeyError\u001b[39;00m:\n\u001b[0;32m--> 434\u001b[0m \u001b[39mraise\u001b[39;00m InterpolationMissingOptionError(\n\u001b[1;32m 435\u001b[0m option, section, rawval, var) \u001b[39mfrom\u001b[39;00m \u001b[39mNone\u001b[39m\n\u001b[1;32m 436\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39m\"\u001b[39m\u001b[39m%\u001b[39m\u001b[39m\"\u001b[39m \u001b[39min\u001b[39;00m v:\n\u001b[1;32m 437\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_interpolate_some(parser, option, accum, v,\n\u001b[1;32m 438\u001b[0m section, \u001b[39mmap\u001b[39m, depth \u001b[39m+\u001b[39m \u001b[39m1\u001b[39m)\n","\u001b[0;31mInterpolationMissingOptionError\u001b[0m: Bad value substitution: option 'lib_name' in section 'DEFAULT' contains an interpolation key 'repo' which is not a valid option name. Raw value: '%(repo)s'"]}],"source":["from nbdev import nbdev_export\n","nbdev_export(\".\")"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":[]}],"metadata":{"kernelspec":{"display_name":".venv","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.9.13"},"vscode":{"interpreter":{"hash":"ccdf76d42fc1ce40ce90d0a2ce3bbe230e9127dd20c081d8c358bf7cb5298b16"}}},"nbformat":4,"nbformat_minor":4}
|
app.py
CHANGED
@@ -1,7 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
1 |
import gradio as gr
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
-
def
|
4 |
-
|
|
|
5 |
|
6 |
-
|
7 |
-
|
|
|
|
|
|
|
|
1 |
+
# AUTOGENERATED! DO NOT EDIT! File to edit: ../nbs/app.ipynb.
|
2 |
+
|
3 |
+
# %% auto 0
|
4 |
+
__all__ = ['learn', 'categories', 'image', 'label', 'examples', 'intf', 'is_cat', 'classify_image']
|
5 |
+
from fastai.vision.all import *
|
6 |
import gradio as gr
|
7 |
+
from pathlib import Path
|
8 |
+
|
9 |
+
def is_cat(x) -> bool:
|
10 |
+
return x[0].isupper()
|
11 |
+
|
12 |
+
learn = load_learner("model.pkl")
|
13 |
+
|
14 |
+
categories = ("Dog", "Cat")
|
15 |
|
16 |
+
def classify_image(img):
|
17 |
+
_, _, probs = learn.predict(img)
|
18 |
+
return dict(zip(categories, [float(p) for p in probs]))
|
19 |
|
20 |
+
image = gr.inputs.Image(shape=(192, 192))
|
21 |
+
label = gr.outputs.Label()
|
22 |
+
examples = [str(x) for x in Path("examples").iterdir()]
|
23 |
+
intf = gr.Interface(fn=classify_image, inputs=image, outputs=label, examples=examples)
|
24 |
+
intf.launch(inline=True)
|
examples/Bengal_102.jpg
ADDED
examples/Sphynx_143.jpg
ADDED
examples/chihuahua_43.jpg
ADDED
examples/english_setter_15.jpg
ADDED
examples/havanese_129.jpg
ADDED
examples/japanese_chin_83.jpg
ADDED
justfile
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
set shell := ["/usr/local/bin/zsh", "-cu"]
|
2 |
+
|
3 |
+
venv_dir := justfile_directory() / ".venv"
|
4 |
+
python := venv_dir / "bin" / "python3"
|
5 |
+
|
6 |
+
install:
|
7 |
+
#!/usr/bin/env zsh
|
8 |
+
set -e
|
9 |
+
source {{ venv_dir }}/bin/activate
|
10 |
+
python -m pip install --upgrade pip wheel
|
11 |
+
python -m pip install -r requirements.txt
|
12 |
+
python -m pip install -r requirements-dev.txt
|
model.pkl
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:8297b694848f1cf98cba72c69c7cc936a61d309519875b7234395a5830a40ef2
|
3 |
+
size 47060075
|
requirements-dev.txt
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
nbdev
|
2 |
+
ipykernel
|
3 |
+
ipython
|
4 |
+
jupyterlab
|
requirements.txt
CHANGED
@@ -1 +1,2 @@
|
|
1 |
gradio
|
|
|
|
1 |
gradio
|
2 |
+
fastai
|