{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "dcad9070", "metadata": {}, "outputs": [], "source": [ "#|default_exp app" ] }, { "cell_type": "code", "execution_count": 3, "id": "b0d51b0e", "metadata": {}, "outputs": [], "source": [ "#|export\n", "from fastai.vision.all import *\n", "import gradio as gr" ] }, { "cell_type": "code", "execution_count": 4, "id": "0253652f", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "PILImage mode=RGB size=192x128" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "im = PILImage.create('cover_drive2.jpg')\n", "im.thumbnail((192,192))\n", "im" ] }, { "cell_type": "code", "execution_count": 39, "id": "41e52ca1", "metadata": {}, "outputs": [], "source": [ "# def search_images(term, max_images=30):\n", "# url = 'https://duckduckgo.com/'\n", "# res = urlread(url,data={'q':term})\n", "# searchObj = re.search(r'vqd=([\\d-]+)\\&', res)\n", "# requestUrl = url + 'i.js'\n", "# params = dict(l='us-en', o='json', q=term, vqd=searchObj.group(1), f=',,,', p='1', v7exp='a')\n", "# urls,data = set(),{'next':1}\n", "# while len(urls)\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-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n", " background: #F44336;\n", " }\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "{'off side': 0.9999692440032959, 'on side': 3.070634920732118e-05}" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "classify_image(im)" ] }, { "cell_type": "code", "execution_count": 8, "id": "2789ad64", "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": [ "(,\n", " 'http://127.0.0.1:7860/',\n", " None)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "name": "stderr", "output_type": "stream", "text": [ "ERROR: Exception in ASGI application\n", "Traceback (most recent call last):\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/responses.py\", line 318, in __call__\n", " stat_result = await anyio.to_thread.run_sync(os.stat, self.path)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/anyio/to_thread.py\", line 31, in run_sync\n", " return await get_asynclib().run_sync_in_worker_thread(\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/anyio/_backends/_asyncio.py\", line 937, in run_sync_in_worker_thread\n", " return await future\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/anyio/_backends/_asyncio.py\", line 867, in run\n", " result = context.run(func, *args)\n", "FileNotFoundError: [Errno 2] No such file or directory: '/mnt/z/Documents1/Repositories/onside_offside_shot_detector/lateral_raise.jpg'\n", "\n", "During handling of the above exception, another exception occurred:\n", "\n", "Traceback (most recent call last):\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/uvicorn/protocols/http/h11_impl.py\", line 366, in run_asgi\n", " result = await app(self.scope, self.receive, self.send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/uvicorn/middleware/proxy_headers.py\", line 75, in __call__\n", " return await self.app(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/fastapi/applications.py\", line 269, in __call__\n", " await super().__call__(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/applications.py\", line 124, in __call__\n", " await self.middleware_stack(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/middleware/errors.py\", line 184, in __call__\n", " raise exc\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/middleware/errors.py\", line 162, in __call__\n", " await self.app(scope, receive, _send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/middleware/cors.py\", line 84, in __call__\n", " await self.app(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/exceptions.py\", line 93, in __call__\n", " raise exc\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/exceptions.py\", line 82, in __call__\n", " await self.app(scope, receive, sender)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/fastapi/middleware/asyncexitstack.py\", line 21, in __call__\n", " raise e\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/fastapi/middleware/asyncexitstack.py\", line 18, in __call__\n", " await self.app(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/routing.py\", line 670, in __call__\n", " await route.handle(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/routing.py\", line 266, in handle\n", " await self.app(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/routing.py\", line 68, in app\n", " await response(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/responses.py\", line 321, in __call__\n", " raise RuntimeError(f\"File at path {self.path} does not exist.\")\n", "RuntimeError: File at path /mnt/z/Documents1/Repositories/onside_offside_shot_detector/lateral_raise.jpg does not exist.\n", "ERROR: Exception in ASGI application\n", "Traceback (most recent call last):\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/responses.py\", line 318, in __call__\n", " stat_result = await anyio.to_thread.run_sync(os.stat, self.path)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/anyio/to_thread.py\", line 31, in run_sync\n", " return await get_asynclib().run_sync_in_worker_thread(\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/anyio/_backends/_asyncio.py\", line 937, in run_sync_in_worker_thread\n", " return await future\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/anyio/_backends/_asyncio.py\", line 867, in run\n", " result = context.run(func, *args)\n", "FileNotFoundError: [Errno 2] No such file or directory: '/mnt/z/Documents1/Repositories/onside_offside_shot_detector/deadlift.jpg'\n", "\n", "During handling of the above exception, another exception occurred:\n", "\n", "Traceback (most recent call last):\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/uvicorn/protocols/http/h11_impl.py\", line 366, in run_asgi\n", " result = await app(self.scope, self.receive, self.send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/uvicorn/middleware/proxy_headers.py\", line 75, in __call__\n", " return await self.app(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/fastapi/applications.py\", line 269, in __call__\n", " await super().__call__(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/applications.py\", line 124, in __call__\n", " await self.middleware_stack(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/middleware/errors.py\", line 184, in __call__\n", " raise exc\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/middleware/errors.py\", line 162, in __call__\n", " await self.app(scope, receive, _send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/middleware/cors.py\", line 84, in __call__\n", " await self.app(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/exceptions.py\", line 93, in __call__\n", " raise exc\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/exceptions.py\", line 82, in __call__\n", " await self.app(scope, receive, sender)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/fastapi/middleware/asyncexitstack.py\", line 21, in __call__\n", " raise e\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/fastapi/middleware/asyncexitstack.py\", line 18, in __call__\n", " await self.app(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/routing.py\", line 670, in __call__\n", " await route.handle(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/routing.py\", line 266, in handle\n", " await self.app(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/routing.py\", line 68, in app\n", " await response(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/responses.py\", line 321, in __call__\n", " raise RuntimeError(f\"File at path {self.path} does not exist.\")\n", "RuntimeError: File at path /mnt/z/Documents1/Repositories/onside_offside_shot_detector/deadlift.jpg does not exist.\n", "ERROR: Exception in ASGI application\n", "Traceback (most recent call last):\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/responses.py\", line 318, in __call__\n", " stat_result = await anyio.to_thread.run_sync(os.stat, self.path)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/anyio/to_thread.py\", line 31, in run_sync\n", " return await get_asynclib().run_sync_in_worker_thread(\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/anyio/_backends/_asyncio.py\", line 937, in run_sync_in_worker_thread\n", " return await future\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/anyio/_backends/_asyncio.py\", line 867, in run\n", " result = context.run(func, *args)\n", "FileNotFoundError: [Errno 2] No such file or directory: '/mnt/z/Documents1/Repositories/onside_offside_shot_detector/bench_press.jpg'\n", "\n", "During handling of the above exception, another exception occurred:\n", "\n", "Traceback (most recent call last):\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/uvicorn/protocols/http/h11_impl.py\", line 366, in run_asgi\n", " result = await app(self.scope, self.receive, self.send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/uvicorn/middleware/proxy_headers.py\", line 75, in __call__\n", " return await self.app(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/fastapi/applications.py\", line 269, in __call__\n", " await super().__call__(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/applications.py\", line 124, in __call__\n", " await self.middleware_stack(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/middleware/errors.py\", line 184, in __call__\n", " raise exc\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/middleware/errors.py\", line 162, in __call__\n", " await self.app(scope, receive, _send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/middleware/cors.py\", line 84, in __call__\n", " await self.app(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/exceptions.py\", line 93, in __call__\n", " raise exc\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/exceptions.py\", line 82, in __call__\n", " await self.app(scope, receive, sender)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/fastapi/middleware/asyncexitstack.py\", line 21, in __call__\n", " raise e\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/fastapi/middleware/asyncexitstack.py\", line 18, in __call__\n", " await self.app(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/routing.py\", line 670, in __call__\n", " await route.handle(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/routing.py\", line 266, in handle\n", " await self.app(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/routing.py\", line 68, in app\n", " await response(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/responses.py\", line 321, in __call__\n", " raise RuntimeError(f\"File at path {self.path} does not exist.\")\n", "RuntimeError: File at path /mnt/z/Documents1/Repositories/onside_offside_shot_detector/bench_press.jpg does not exist.\n" ] }, { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "ERROR: Exception in ASGI application\n", "Traceback (most recent call last):\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/responses.py\", line 318, in __call__\n", " stat_result = await anyio.to_thread.run_sync(os.stat, self.path)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/anyio/to_thread.py\", line 31, in run_sync\n", " return await get_asynclib().run_sync_in_worker_thread(\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/anyio/_backends/_asyncio.py\", line 937, in run_sync_in_worker_thread\n", " return await future\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/anyio/_backends/_asyncio.py\", line 867, in run\n", " result = context.run(func, *args)\n", "FileNotFoundError: [Errno 2] No such file or directory: '/mnt/z/Documents1/Repositories/onside_offside_shot_detector/bench_press.jpg'\n", "\n", "During handling of the above exception, another exception occurred:\n", "\n", "Traceback (most recent call last):\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/uvicorn/protocols/http/h11_impl.py\", line 366, in run_asgi\n", " result = await app(self.scope, self.receive, self.send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/uvicorn/middleware/proxy_headers.py\", line 75, in __call__\n", " return await self.app(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/fastapi/applications.py\", line 269, in __call__\n", " await super().__call__(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/applications.py\", line 124, in __call__\n", " await self.middleware_stack(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/middleware/errors.py\", line 184, in __call__\n", " raise exc\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/middleware/errors.py\", line 162, in __call__\n", " await self.app(scope, receive, _send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/middleware/cors.py\", line 84, in __call__\n", " await self.app(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/exceptions.py\", line 93, in __call__\n", " raise exc\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/exceptions.py\", line 82, in __call__\n", " await self.app(scope, receive, sender)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/fastapi/middleware/asyncexitstack.py\", line 21, in __call__\n", " raise e\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/fastapi/middleware/asyncexitstack.py\", line 18, in __call__\n", " await self.app(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/routing.py\", line 670, in __call__\n", " await route.handle(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/routing.py\", line 266, in handle\n", " await self.app(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/routing.py\", line 68, in app\n", " await response(scope, receive, send)\n", " File \"/home/zac-ubuntu-wsl/mambaforge/lib/python3.9/site-packages/starlette/responses.py\", line 321, in __call__\n", " raise RuntimeError(f\"File at path {self.path} does not exist.\")\n", "RuntimeError: File at path /mnt/z/Documents1/Repositories/onside_offside_shot_detector/bench_press.jpg does not exist.\n" ] }, { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#|export\n", "image = gr.inputs.Image(shape=(192,192))\n", "label = gr.outputs.Label()\n", "examples = ['cover_drive1.jpg', 'leg_glance2.jpg', 'sweep2.jpg']]\n", "\n", "intf = gr.Interface(fn=classify_image, inputs=image, outputs=label, examples=examples)\n", "intf.launch(inline=False)" ] }, { "cell_type": "code", "execution_count": 8, "id": "06dd273a", "metadata": {}, "outputs": [], "source": [ "#pip install nbdev\n", "from nbdev.export import notebook2script" ] }, { "cell_type": "code", "execution_count": 18, "id": "fe3628e5", "metadata": {}, "outputs": [], "source": [ "notebook2script('app.pynb')" ] }, { "cell_type": "code", "execution_count": null, "id": "3d84efa6", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "interpreter": { "hash": "1cc00754fef6b3add70ae5c9c7fbd78954fc8b6bbb919f91eaedfd0a199a67e5" }, "kernelspec": { "display_name": "Python 3.9.10 ('base')", "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.12" } }, "nbformat": 4, "nbformat_minor": 5 }