{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "6412367a-68a3-4c35-a9cd-44db9c17dafa", "metadata": {}, "outputs": [], "source": [ "from fastai.vision.all import *" ] }, { "cell_type": "code", "execution_count": 41, "id": "a2573076-ba96-497d-adbd-e27f791c43b2", "metadata": {}, "outputs": [], "source": [ "#| default_exp app" ] }, { "cell_type": "code", "execution_count": 3, "id": "a8dfd72f-5686-448e-8442-c8bde6b9cf03", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple\n", "Collecting gradio\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/50/70/ed0ba0fb5c3b1cb2e481717ad190056a4c9a0ef2f296b871e10375b2ab83/gradio-3.35.2-py3-none-any.whl (19.7 MB)\n", "Collecting semantic-version\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/6a/23/8146aad7d88f4fcb3a6218f41a60f6c2d4e3a72de72da1825dc7c8f7877c/semantic_version-2.10.0-py2.py3-none-any.whl (15 kB)\n", "Requirement already satisfied: pandas in /Users/qian/anaconda3/lib/python3.10/site-packages (from gradio) (1.5.3)\n", "Requirement already satisfied: pydantic in /Users/qian/anaconda3/lib/python3.10/site-packages (from gradio) (1.10.10)\n", "Collecting orjson\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/55/d1/03769e06ac4b76cdf2caf33cb6097f690f621c9903d772b5c11abcdc2bbf/orjson-3.9.1-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl (240 kB)\n", "Collecting aiofiles\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/a8/76/635aa4f210d46ca105bfedd42d41f649b91d3e58422912726fc5e7965442/aiofiles-23.1.0-py3-none-any.whl (14 kB)\n", "Collecting pygments>=2.12.0\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/34/a7/37c8d68532ba71549db4212cb036dbd6161b40e463aba336770e80c72f84/Pygments-2.15.1-py3-none-any.whl (1.1 MB)\n", "Requirement already satisfied: matplotlib in /Users/qian/anaconda3/lib/python3.10/site-packages (from gradio) (3.7.0)\n", "Collecting mdit-py-plugins<=0.3.3\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/33/eb/c358112e8265f827cf8228eda36cf2a720ad933f5ca66f47f808edf4bb34/mdit_py_plugins-0.3.3-py3-none-any.whl (50 kB)\n", "Collecting fastapi\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/73/eb/03b691afa0b5ffa1e93ed34f97ec1e7855c758efbdcfb16c209af0b0506b/fastapi-0.99.1-py3-none-any.whl (58 kB)\n", "Requirement already satisfied: markupsafe in /Users/qian/anaconda3/lib/python3.10/site-packages (from gradio) (2.1.1)\n", "Requirement already satisfied: requests in /Users/qian/anaconda3/lib/python3.10/site-packages (from gradio) (2.28.1)\n", "Requirement already satisfied: huggingface-hub>=0.14.0 in /Users/qian/anaconda3/lib/python3.10/site-packages (from gradio) (0.15.1)\n", "Requirement already satisfied: jinja2 in /Users/qian/anaconda3/lib/python3.10/site-packages (from gradio) (3.1.2)\n", "Collecting pydub\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/a6/53/d78dc063216e62fc55f6b2eebb447f6a4b0a59f55c8406376f76bf959b08/pydub-0.25.1-py2.py3-none-any.whl (32 kB)\n", "Collecting httpx\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/ec/91/e41f64f03d2a13aee7e8c819d82ee3aa7cdc484d18c0ae859742597d5aa0/httpx-0.24.1-py3-none-any.whl (75 kB)\n", "Collecting python-multipart\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/b4/ff/b1e11d8bffb5e0e1b6d27f402eeedbeb9be6df2cdbc09356a1ae49806dbf/python_multipart-0.0.6-py3-none-any.whl (45 kB)\n", "Collecting markdown-it-py[linkify]>=2.0.0\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl (87 kB)\n", "Requirement already satisfied: numpy in /Users/qian/anaconda3/lib/python3.10/site-packages (from gradio) (1.23.5)\n", "Collecting ffmpy\n", " Using cached ffmpy-0.3.0-py3-none-any.whl\n", "Collecting gradio-client>=0.2.7\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/d8/e9/a45a653b6ef112d475f26a8a62d82fba8b3cfd77247ffd70cf5d54b6f1cb/gradio_client-0.2.7-py3-none-any.whl (288 kB)\n", "Requirement already satisfied: aiohttp in /Users/qian/anaconda3/lib/python3.10/site-packages (from gradio) (3.8.4)\n", "Requirement already satisfied: pillow in /Users/qian/anaconda3/lib/python3.10/site-packages (from gradio) (9.4.0)\n", "Collecting altair>=4.2.0\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/b2/20/5c3b89d6f8d9938325a9330793438389e0dc94c34d921f6da35ec62095f3/altair-5.0.1-py3-none-any.whl (471 kB)\n", "Collecting websockets>=10.0\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/b9/6b/26b28115b46e23e74ede76d95792eedfe8c58b21f4daabfff1e9f159c8fe/websockets-11.0.3-cp310-cp310-macosx_10_9_x86_64.whl (120 kB)\n", "Requirement already satisfied: pyyaml in /Users/qian/anaconda3/lib/python3.10/site-packages (from gradio) (6.0)\n", "Collecting uvicorn>=0.14.0\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/ad/bd/d47ee02312640fcf26c7e1c807402d5c5eab468571153a94ec8f7ada0e46/uvicorn-0.22.0-py3-none-any.whl (58 kB)\n", "Requirement already satisfied: jsonschema>=3.0 in /Users/qian/anaconda3/lib/python3.10/site-packages (from altair>=4.2.0->gradio) (4.17.3)\n", "Requirement already satisfied: typing-extensions>=4.0.1 in /Users/qian/anaconda3/lib/python3.10/site-packages (from altair>=4.2.0->gradio) (4.4.0)\n", "Requirement already satisfied: toolz in /Users/qian/anaconda3/lib/python3.10/site-packages (from altair>=4.2.0->gradio) (0.12.0)\n", "Requirement already satisfied: fsspec in /Users/qian/anaconda3/lib/python3.10/site-packages (from gradio-client>=0.2.7->gradio) (2022.11.0)\n", "Requirement already satisfied: packaging in /Users/qian/anaconda3/lib/python3.10/site-packages (from gradio-client>=0.2.7->gradio) (22.0)\n", "Requirement already satisfied: filelock in /Users/qian/anaconda3/lib/python3.10/site-packages (from huggingface-hub>=0.14.0->gradio) (3.9.0)\n", "Requirement already satisfied: tqdm>=4.42.1 in /Users/qian/anaconda3/lib/python3.10/site-packages (from huggingface-hub>=0.14.0->gradio) (4.64.1)\n", "Collecting mdurl~=0.1\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl (10.0 kB)\n", "Collecting linkify-it-py<3,>=1\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/1f/1a/16b0d2f66601ba3081f1d4177087c79fd1f11d17706ee01d373e4ba8e00d/linkify_it_py-2.0.2-py3-none-any.whl (19 kB)\n", "Collecting mdit-py-plugins<=0.3.3\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/e4/92/268849737427f7f9a128d2586e561a7dfac723c02f3aaaaef4d27dd6829c/mdit_py_plugins-0.3.2-py3-none-any.whl (50 kB)\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/de/d9/20870f611989b8dcfd2395eddefdd4b1983d6c36513cce7fbbe9eb345768/mdit_py_plugins-0.3.1-py3-none-any.whl (46 kB)\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/5b/c4/1cf60e11b55197fa2e5e8d2f732a229690f5a08b018ae1cf4c00585ca834/mdit_py_plugins-0.3.0-py3-none-any.whl (43 kB)\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/c0/cb/782222da2cc3d543aee662c33cbaf611ec010146ca21c91d5743e8d99603/mdit_py_plugins-0.2.8-py3-none-any.whl (41 kB)\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/58/04/d5538523c5aae983c6057e6feba23dccb1da39d022264d7dacac1bfc4cd6/mdit_py_plugins-0.2.7-py3-none-any.whl (41 kB)\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/0c/31/f0ecaccf7cd2db17332a94852f190840167c3cb7eadf09efe498412f909a/mdit_py_plugins-0.2.6-py3-none-any.whl (39 kB)\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/66/62/fae9ee5766a7153d571ad732ef514c552efeaa31735fd60e6d9bc07fa9e4/mdit_py_plugins-0.2.5-py3-none-any.whl (39 kB)\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/9d/df/16e87ebd0bb9d946d3b2d39c1171398f7f71eef5d9ca85adb94131b8c7b5/mdit_py_plugins-0.2.4-py3-none-any.whl (39 kB)\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/97/23/3e017136aefe61b442fee2869fcc7756c814e3cfe551f225e1e085f27217/mdit_py_plugins-0.2.3-py3-none-any.whl (39 kB)\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/40/fe/0f06e8545ac0578741342cc00305b8d955863b72755af0c3771f339099fb/mdit_py_plugins-0.2.2-py3-none-any.whl (39 kB)\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/64/f2/b477dfb13e6d3db6421cf61cd7b76562f16141e81cb174d837dda519253b/mdit_py_plugins-0.2.1-py3-none-any.whl (38 kB)\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/5b/78/e3b8c43edce725d01021d5b2947dc6d425ee5201cece4bc3d6a757720151/mdit_py_plugins-0.2.0-py3-none-any.whl (38 kB)\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/00/02/280276967a2328199700b5e16bf427c4b4af1c54fdd6a00623ef93ed25c2/mdit_py_plugins-0.1.0-py3-none-any.whl (37 kB)\n", "INFO: pip is looking at multiple versions of markdown-it-py[linkify] to determine which version is compatible with other requirements. This could take a while.\n", "Collecting markdown-it-py[linkify]>=2.0.0\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/bf/25/2d88e8feee8e055d015343f9b86e370a1ccbec546f2865c98397aaef24af/markdown_it_py-2.2.0-py3-none-any.whl (84 kB)\n", "Requirement already satisfied: python-dateutil>=2.8.1 in /Users/qian/anaconda3/lib/python3.10/site-packages (from pandas->gradio) (2.8.2)\n", "Requirement already satisfied: pytz>=2020.1 in /Users/qian/anaconda3/lib/python3.10/site-packages (from pandas->gradio) (2022.7)\n", "Collecting h11>=0.8\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/95/04/ff642e65ad6b90db43e668d70ffb6736436c7ce41fcc549f4e9472234127/h11-0.14.0-py3-none-any.whl (58 kB)\n", "Requirement already satisfied: click>=7.0 in /Users/qian/anaconda3/lib/python3.10/site-packages (from uvicorn>=0.14.0->gradio) (8.0.4)\n", "Requirement already satisfied: frozenlist>=1.1.1 in /Users/qian/anaconda3/lib/python3.10/site-packages (from aiohttp->gradio) (1.3.3)\n", "Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in /Users/qian/anaconda3/lib/python3.10/site-packages (from aiohttp->gradio) (4.0.2)\n", "Requirement already satisfied: aiosignal>=1.1.2 in /Users/qian/anaconda3/lib/python3.10/site-packages (from aiohttp->gradio) (1.3.1)\n", "Requirement already satisfied: multidict<7.0,>=4.5 in /Users/qian/anaconda3/lib/python3.10/site-packages (from aiohttp->gradio) (6.0.4)\n", "Requirement already satisfied: attrs>=17.3.0 in /Users/qian/anaconda3/lib/python3.10/site-packages (from aiohttp->gradio) (22.1.0)\n", "Requirement already satisfied: charset-normalizer<4.0,>=2.0 in /Users/qian/anaconda3/lib/python3.10/site-packages (from aiohttp->gradio) (2.0.4)\n", "Requirement already satisfied: yarl<2.0,>=1.0 in /Users/qian/anaconda3/lib/python3.10/site-packages (from aiohttp->gradio) (1.9.2)\n", "Collecting typing-extensions>=4.0.1\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/ec/6b/63cc3df74987c36fe26157ee12e09e8f9db4de771e0f3404263117e75b95/typing_extensions-4.7.1-py3-none-any.whl (33 kB)\n", "Collecting starlette<0.28.0,>=0.27.0\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/58/f8/e2cca22387965584a409795913b774235752be4176d276714e15e1a58884/starlette-0.27.0-py3-none-any.whl (66 kB)\n", "Requirement already satisfied: idna in /Users/qian/anaconda3/lib/python3.10/site-packages (from httpx->gradio) (3.4)\n", "Requirement already satisfied: certifi in /Users/qian/anaconda3/lib/python3.10/site-packages (from httpx->gradio) (2022.12.7)\n", "Collecting httpcore<0.18.0,>=0.15.0\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/4d/32/b908f673ccef12b6425b848a541264ee3d95f5f571f18f6ab0d8c311442e/httpcore-0.17.2-py3-none-any.whl (72 kB)\n", "Requirement already satisfied: sniffio in /Users/qian/anaconda3/lib/python3.10/site-packages (from httpx->gradio) (1.2.0)\n", "Requirement already satisfied: contourpy>=1.0.1 in /Users/qian/anaconda3/lib/python3.10/site-packages (from matplotlib->gradio) (1.0.5)\n", "Requirement already satisfied: cycler>=0.10 in /Users/qian/anaconda3/lib/python3.10/site-packages (from matplotlib->gradio) (0.11.0)\n", "Requirement already satisfied: fonttools>=4.22.0 in /Users/qian/anaconda3/lib/python3.10/site-packages (from matplotlib->gradio) (4.25.0)\n", "Requirement already satisfied: pyparsing>=2.3.1 in /Users/qian/anaconda3/lib/python3.10/site-packages (from matplotlib->gradio) (3.0.9)\n", "Requirement already satisfied: kiwisolver>=1.0.1 in /Users/qian/anaconda3/lib/python3.10/site-packages (from matplotlib->gradio) (1.4.4)\n", "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /Users/qian/anaconda3/lib/python3.10/site-packages (from requests->gradio) (1.26.14)\n", "Requirement already satisfied: anyio<5.0,>=3.0 in /Users/qian/anaconda3/lib/python3.10/site-packages (from httpcore<0.18.0,>=0.15.0->httpx->gradio) (3.5.0)\n", "Requirement already satisfied: pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0 in /Users/qian/anaconda3/lib/python3.10/site-packages (from jsonschema>=3.0->altair>=4.2.0->gradio) (0.18.0)\n", "Collecting uc-micro-py\n", " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/d1/1c/5aeb94aa980da111e4fd0c0fbe5ad95ed5bf9bd957f8e2a6178b85ff4da8/uc_micro_py-1.0.2-py3-none-any.whl (6.2 kB)\n", "Requirement already satisfied: six>=1.5 in /Users/qian/anaconda3/lib/python3.10/site-packages (from python-dateutil>=2.8.1->pandas->gradio) (1.16.0)\n", "Installing collected packages: pydub, ffmpy, websockets, uc-micro-py, typing-extensions, semantic-version, python-multipart, pygments, orjson, mdurl, h11, aiofiles, uvicorn, starlette, markdown-it-py, linkify-it-py, httpcore, mdit-py-plugins, httpx, fastapi, altair, gradio-client, gradio\n", " Attempting uninstall: typing-extensions\n", " Found existing installation: typing_extensions 4.4.0\n", " Uninstalling typing_extensions-4.4.0:\n", " Successfully uninstalled typing_extensions-4.4.0\n", " Attempting uninstall: pygments\n", " Found existing installation: Pygments 2.11.2\n", " Uninstalling Pygments-2.11.2:\n", " Successfully uninstalled Pygments-2.11.2\n", "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", "spyder 5.4.1 requires pyqt5<5.16, which is not installed.\n", "spyder 5.4.1 requires pyqtwebengine<5.16, which is not installed.\u001b[0m\u001b[31m\n", "\u001b[0mSuccessfully installed aiofiles-23.1.0 altair-5.0.1 fastapi-0.99.1 ffmpy-0.3.0 gradio-3.35.2 gradio-client-0.2.7 h11-0.14.0 httpcore-0.17.2 httpx-0.24.1 linkify-it-py-2.0.2 markdown-it-py-2.2.0 mdit-py-plugins-0.3.3 mdurl-0.1.2 orjson-3.9.1 pydub-0.25.1 pygments-2.15.1 python-multipart-0.0.6 semantic-version-2.10.0 starlette-0.27.0 typing-extensions-4.7.1 uc-micro-py-1.0.2 uvicorn-0.22.0 websockets-11.0.3\n" ] } ], "source": [ "!pip install gradio" ] }, { "cell_type": "code", "execution_count": 21, "id": "7517e072-5371-484a-a531-dd93fc6a59dc", "metadata": {}, "outputs": [], "source": [ "#|export\n", "import gradio as gr\n" ] }, { "cell_type": "code", "execution_count": 3, "id": "266f5ae6-099c-496a-ac60-8ec7e197f2cf", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Running on local URL: http://127.0.0.1:7860\n", "\n", "To create a public link, set `share=True` in `launch()`.\n" ] }, { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def greet(name):\n", " return \"Hello \" + name + \"!\"\n", "\n", "demo = gr.Interface(fn=greet, inputs=\"text\", outputs=\"text\")\n", "\n", "demo.launch() " ] }, { "cell_type": "code", "execution_count": 2, "id": "ec8fd680-af15-41a6-8a2c-1ae3d5fbc046", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "PILImage mode=RGB size=192x120" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "im = PILImage.create('dog.webp')\n", "im.thumbnail((192,192))\n", "im" ] }, { "cell_type": "code", "execution_count": 4, "id": "1e2cc214-0f0d-48ca-ab66-81af9eaecf3c", "metadata": {}, "outputs": [], "source": [ "#|export\n", "def is_cat(x): return x[0].isupper() " ] }, { "cell_type": "code", "execution_count": 5, "id": "04a70a85-1653-4dc1-bcb7-1c28f4440b6a", "metadata": {}, "outputs": [], "source": [ "#\\export\n", "learn = load_learner('model.pkl')" ] }, { "cell_type": "code", "execution_count": 6, "id": "2e85fb54-41b4-44cd-81a7-3b05eeeba187", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "('False', TensorImage(0), TensorImage([1.0000e+00, 9.1793e-07]))" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "learn.predict(im)" ] }, { "cell_type": "code", "execution_count": 16, "id": "62e898a2-9121-4192-a90e-04f089aa7157", "metadata": {}, "outputs": [], "source": [ "#|export\n", "ategories = ('Dog', 'Cat')\n", "\n", "def classify_image(img):\n", " pred, idx, probs = learn.predict(img)\n", " print(map(float, probs))\n", " return dict(zip(categories, map(float, probs)))\n", " " ] }, { "cell_type": "code", "execution_count": 17, "id": "ec02e373-4d17-4dbd-9fc6-8144d26f6333", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "data": { "text/plain": [ "{'Dog': 0.9999990463256836, 'Cat': 9.179332778330718e-07}" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "classify_image(im)" ] }, { "cell_type": "code", "execution_count": 25, "id": "78d206b8-81bf-4f5e-b14d-ae1a41f9fd7d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Running on local URL: http://127.0.0.1:7860\n", "\n", "To create a public link, set `share=True` in `launch()`.\n" ] }, { "data": { "text/plain": [] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "#|export\n", "image = gr.inputs.Image(shape=(192,192))\n", "label = gr.outputs.Label()\n", "examples = ['dog.webp', 'cat.png', 'dunno.jpeg']\n", "\n", "intf = gr.Interface(fn=classify_image,inputs=image, outputs=label, examples=examples)\n", "intf.launch(inline=False)" ] }, { "cell_type": "code", "execution_count": 28, "id": "e38e5be8-4f71-4027-ab5d-b9e5027de050", "metadata": {}, "outputs": [], "source": [ "# Export" ] }, { "cell_type": "code", "execution_count": 29, "id": "a2ee2380-20c9-4236-97bc-2a8ed423228a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple\n", "Collecting nbdev\n", " Downloading https://pypi.tuna.tsinghua.edu.cn/packages/f9/e8/107f97e160f270deb04ba16a9f11bcf860bcd6f62e40b369a8444a99d129/nbdev-2.3.12-py3-none-any.whl (64 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m64.8/64.8 kB\u001b[0m \u001b[31m1.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0ma \u001b[36m0:00:01\u001b[0m\n", "\u001b[?25hRequirement already satisfied: asttokens in /Users/qian/anaconda3/lib/python3.10/site-packages (from nbdev) (2.0.5)\n", "Requirement already satisfied: watchdog in /Users/qian/anaconda3/lib/python3.10/site-packages (from nbdev) (2.1.6)\n", "Requirement already satisfied: PyYAML in /Users/qian/anaconda3/lib/python3.10/site-packages (from nbdev) (6.0)\n", "Collecting execnb>=0.1.4\n", " Downloading https://pypi.tuna.tsinghua.edu.cn/packages/fe/ae/b16271d6cc0775f7b81e13dad9a9136cc0ca597402a2738a0faa8ef9eefa/execnb-0.1.5-py3-none-any.whl (13 kB)\n", "Requirement already satisfied: fastcore>=1.5.27 in /Users/qian/anaconda3/lib/python3.10/site-packages (from nbdev) (1.5.29)\n", "Collecting astunparse\n", " Downloading https://pypi.tuna.tsinghua.edu.cn/packages/2b/03/13dde6512ad7b4557eb792fbcf0c653af6076b81e5941d36ec61f7ce6028/astunparse-1.6.3-py2.py3-none-any.whl (12 kB)\n", "Collecting ghapi>=1.0.3\n", " Downloading https://pypi.tuna.tsinghua.edu.cn/packages/60/71/064560201c434c22c9f395878ba0f21f9ede8169e61c1a109f26a377bd5e/ghapi-1.0.4-py3-none-any.whl (58 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.7/58.7 kB\u001b[0m \u001b[31m1.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hRequirement already satisfied: ipython in /Users/qian/anaconda3/lib/python3.10/site-packages (from execnb>=0.1.4->nbdev) (8.10.0)\n", "Requirement already satisfied: pip in /Users/qian/anaconda3/lib/python3.10/site-packages (from fastcore>=1.5.27->nbdev) (22.3.1)\n", "Requirement already satisfied: packaging in /Users/qian/anaconda3/lib/python3.10/site-packages (from fastcore>=1.5.27->nbdev) (22.0)\n", "Requirement already satisfied: six in /Users/qian/anaconda3/lib/python3.10/site-packages (from asttokens->nbdev) (1.16.0)\n", "Requirement already satisfied: wheel<1.0,>=0.23.0 in /Users/qian/anaconda3/lib/python3.10/site-packages (from astunparse->nbdev) (0.38.4)\n", "Requirement already satisfied: stack-data in /Users/qian/anaconda3/lib/python3.10/site-packages (from ipython->execnb>=0.1.4->nbdev) (0.2.0)\n", "Requirement already satisfied: appnope in /Users/qian/anaconda3/lib/python3.10/site-packages (from ipython->execnb>=0.1.4->nbdev) (0.1.2)\n", "Requirement already satisfied: jedi>=0.16 in /Users/qian/anaconda3/lib/python3.10/site-packages (from ipython->execnb>=0.1.4->nbdev) (0.18.1)\n", "Requirement already satisfied: prompt-toolkit<3.1.0,>=3.0.30 in /Users/qian/anaconda3/lib/python3.10/site-packages (from ipython->execnb>=0.1.4->nbdev) (3.0.36)\n", "Requirement already satisfied: pygments>=2.4.0 in /Users/qian/anaconda3/lib/python3.10/site-packages (from ipython->execnb>=0.1.4->nbdev) (2.15.1)\n", "Requirement already satisfied: traitlets>=5 in /Users/qian/anaconda3/lib/python3.10/site-packages (from ipython->execnb>=0.1.4->nbdev) (5.7.1)\n", "Requirement already satisfied: decorator in /Users/qian/anaconda3/lib/python3.10/site-packages (from ipython->execnb>=0.1.4->nbdev) (5.1.1)\n", "Requirement already satisfied: pexpect>4.3 in /Users/qian/anaconda3/lib/python3.10/site-packages (from ipython->execnb>=0.1.4->nbdev) (4.8.0)\n", "Requirement already satisfied: pickleshare in /Users/qian/anaconda3/lib/python3.10/site-packages (from ipython->execnb>=0.1.4->nbdev) (0.7.5)\n", "Requirement already satisfied: backcall in /Users/qian/anaconda3/lib/python3.10/site-packages (from ipython->execnb>=0.1.4->nbdev) (0.2.0)\n", "Requirement already satisfied: matplotlib-inline in /Users/qian/anaconda3/lib/python3.10/site-packages (from ipython->execnb>=0.1.4->nbdev) (0.1.6)\n", "Requirement already satisfied: parso<0.9.0,>=0.8.0 in /Users/qian/anaconda3/lib/python3.10/site-packages (from jedi>=0.16->ipython->execnb>=0.1.4->nbdev) (0.8.3)\n", "Requirement already satisfied: ptyprocess>=0.5 in /Users/qian/anaconda3/lib/python3.10/site-packages (from pexpect>4.3->ipython->execnb>=0.1.4->nbdev) (0.7.0)\n", "Requirement already satisfied: wcwidth in /Users/qian/anaconda3/lib/python3.10/site-packages (from prompt-toolkit<3.1.0,>=3.0.30->ipython->execnb>=0.1.4->nbdev) (0.2.5)\n", "Requirement already satisfied: pure-eval in /Users/qian/anaconda3/lib/python3.10/site-packages (from stack-data->ipython->execnb>=0.1.4->nbdev) (0.2.2)\n", "Requirement already satisfied: executing in /Users/qian/anaconda3/lib/python3.10/site-packages (from stack-data->ipython->execnb>=0.1.4->nbdev) (0.8.3)\n", "Installing collected packages: astunparse, ghapi, execnb, nbdev\n", "Successfully installed astunparse-1.6.3 execnb-0.1.5 ghapi-1.0.4 nbdev-2.3.12\n" ] } ], "source": [ "!pip install nbdev" ] }, { "cell_type": "code", "execution_count": 39, "id": "393a99a6-f3c9-4b5f-916a-42e5d2960413", "metadata": {}, "outputs": [], "source": [ "from nbdev.export import nb_export" ] }, { "cell_type": "code", "execution_count": 42, "id": "3743349a-5092-4ba7-90cf-7ee39a30c920", "metadata": {}, "outputs": [], "source": [ "nb_export('app.ipynb')" ] }, { "cell_type": "code", "execution_count": 31, "id": "f098200d-9776-4707-b267-99f7f706b260", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[1m\u001b[94mnbdev_bump_version\u001b[22m\u001b[39m Increment version in settings.ini by one\n", "\u001b[1m\u001b[94mnbdev_changelog\u001b[22m\u001b[39m Create a CHANGELOG.md file from closed and labeled GitHub issues\n", "\u001b[1m\u001b[94mnbdev_clean\u001b[22m\u001b[39m Clean all notebooks in `fname` to avoid merge conflicts\n", "\u001b[1m\u001b[94mnbdev_conda\u001b[22m\u001b[39m Create a `meta.yaml` file ready to be built into a package, and optionally build and upload it\n", "\u001b[1m\u001b[94mnbdev_create_config\u001b[22m\u001b[39m Create a config file.\n", "\u001b[1m\u001b[94mnbdev_docs\u001b[22m\u001b[39m Create Quarto docs and README.md\n", "\u001b[1m\u001b[94mnbdev_export\u001b[22m\u001b[39m Export notebooks in `path` to Python modules\n", "\u001b[1m\u001b[94mnbdev_filter\u001b[22m\u001b[39m A notebook filter for Quarto\n", "\u001b[1m\u001b[94mnbdev_fix\u001b[22m\u001b[39m Create working notebook from conflicted notebook `nbname`\n", "\u001b[1m\u001b[94mnbdev_help\u001b[22m\u001b[39m Show help for all console scripts\n", "\u001b[1m\u001b[94mnbdev_install\u001b[22m\u001b[39m Install Quarto and the current library\n", "\u001b[1m\u001b[94mnbdev_install_hooks\u001b[22m\u001b[39m Install Jupyter and git hooks to automatically clean, trust, and fix merge conflicts in notebooks\n", "\u001b[1m\u001b[94mnbdev_install_quarto\u001b[22m\u001b[39m Install latest Quarto on macOS or Linux, prints instructions for Windows\n", "\u001b[1m\u001b[94mnbdev_merge\u001b[22m\u001b[39m Git merge driver for notebooks\n", "\u001b[1m\u001b[94mnbdev_migrate\u001b[22m\u001b[39m Convert all markdown and notebook files in `path` from v1 to v2\n", "\u001b[1m\u001b[94mnbdev_new\u001b[22m\u001b[39m Create an nbdev project.\n", "\u001b[1m\u001b[94mnbdev_prepare\u001b[22m\u001b[39m Export, test, and clean notebooks, and render README if needed\n", "\u001b[1m\u001b[94mnbdev_preview\u001b[22m\u001b[39m Preview docs locally\n", "\u001b[1m\u001b[94mnbdev_proc_nbs\u001b[22m\u001b[39m Process notebooks in `path` for docs rendering\n", "\u001b[1m\u001b[94mnbdev_pypi\u001b[22m\u001b[39m Create and upload Python package to PyPI\n", "\u001b[1m\u001b[94mnbdev_readme\u001b[22m\u001b[39m None\n", "\u001b[1m\u001b[94mnbdev_release_both\u001b[22m\u001b[39m Release both conda and PyPI packages\n", "\u001b[1m\u001b[94mnbdev_release_gh\u001b[22m\u001b[39m Calls `nbdev_changelog`, lets you edit the result, then pushes to git and calls `nbdev_release_git`\n", "\u001b[1m\u001b[94mnbdev_release_git\u001b[22m\u001b[39m Tag and create a release in GitHub for the current version\n", "\u001b[1m\u001b[94mnbdev_sidebar\u001b[22m\u001b[39m Create sidebar.yml\n", "\u001b[1m\u001b[94mnbdev_test\u001b[22m\u001b[39m Test in parallel notebooks matching `path`, passing along `flags`\n", "\u001b[1m\u001b[94mnbdev_trust\u001b[22m\u001b[39m Trust notebooks matching `fname`\n", "\u001b[1m\u001b[94mnbdev_update\u001b[22m\u001b[39m Propagate change in modules matching `fname` to notebooks that created them\n" ] } ], "source": [ "!nbdev_help" ] }, { "cell_type": "code", "execution_count": 32, "id": "ef09a6b9-8433-42c3-a338-7ca7d3f6e29d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Traceback (most recent call last):\n", " File \"/Users/qian/anaconda3/bin/nbdev_export\", line 8, in \n", " sys.exit(nbdev_export())\n", " File \"/Users/qian/anaconda3/lib/python3.10/site-packages/fastcore/script.py\", line 119, in _f\n", " return tfunc(**merge(args, args_from_prog(func, xtra)))\n", " File \"/Users/qian/anaconda3/lib/python3.10/site-packages/nbdev/doclinks.py\", line 140, in nbdev_export\n", " _build_modidx()\n", " File \"/Users/qian/anaconda3/lib/python3.10/site-packages/nbdev/doclinks.py\", line 98, in _build_modidx\n", " res['settings'] = {k:v for k,v in get_config().d.items()\n", " File \"/Users/qian/anaconda3/lib/python3.10/site-packages/nbdev/doclinks.py\", line 98, in \n", " res['settings'] = {k:v for k,v in get_config().d.items()\n", " File \"/Users/qian/anaconda3/lib/python3.10/_collections_abc.py\", line 911, in __iter__\n", " yield (key, self._mapping[key])\n", " File \"/Users/qian/anaconda3/lib/python3.10/configparser.py\", line 1259, in __getitem__\n", " return self._parser.get(self._name, key)\n", " File \"/Users/qian/anaconda3/lib/python3.10/configparser.py\", line 800, in get\n", " return self._interpolation.before_get(self, section, option, value,\n", " File \"/Users/qian/anaconda3/lib/python3.10/configparser.py\", line 395, in before_get\n", " self._interpolate_some(parser, option, L, value, section, defaults, 1)\n", " File \"/Users/qian/anaconda3/lib/python3.10/configparser.py\", line 434, in _interpolate_some\n", " raise InterpolationMissingOptionError(\n", "configparser.InterpolationMissingOptionError: 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'\n" ] } ], "source": [ "!nbdev_export" ] }, { "cell_type": "code", "execution_count": 38, "id": "b30e6a78-d3cf-4050-b01d-e0df91a53822", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "usage: nbdev_export [-h] [--path PATH] [--symlinks] [--file_glob FILE_GLOB]\n", " [--file_re FILE_RE] [--folder_re FOLDER_RE]\n", " [--skip_file_glob SKIP_FILE_GLOB]\n", " [--skip_file_re SKIP_FILE_RE]\n", " [--skip_folder_re SKIP_FOLDER_RE]\n", "\n", "Export notebooks in `path` to Python modules\n", "\n", "options:\n", " -h, --help show this help message and exit\n", " --path PATH Path or filename\n", " --symlinks Follow symlinks? (default: False)\n", " --file_glob FILE_GLOB Only include files matching glob (default:\n", " *.ipynb)\n", " --file_re FILE_RE Only include files matching regex\n", " --folder_re FOLDER_RE Only enter folders matching regex\n", " --skip_file_glob SKIP_FILE_GLOB Skip files matching glob\n", " --skip_file_re SKIP_FILE_RE Skip files matching regex (default: ^[_.])\n", " --skip_folder_re SKIP_FOLDER_RE Skip folders matching regex (default: ^[_.])\n" ] } ], "source": [ "!nbdev_export -h" ] }, { "cell_type": "code", "execution_count": null, "id": "73693586-4590-4694-942f-47eaeeadcca8", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.10.9" } }, "nbformat": 4, "nbformat_minor": 5 }