{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Bird Classifier App:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Note: you may need to restart the kernel to use updated packages.\n", "Note: you may need to restart the kernel to use updated packages.\n" ] } ], "source": [ "%pip install fastai --q\n", "%pip install gradio --q\n", "\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "#|default_exp app" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "#|export\n", "from fastai.vision.all import *\n", "import gradio as gr \n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "PILImage mode=RGB size=192x144" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "im = PILImage.create('cactus_wren.jpg')\n", "im.thumbnail((192, 192))\n", "im" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "#|export\n", "from contextlib import contextmanager\n", "import pathlib\n", "\n", "@contextmanager\n", "def set_posix_windows():\n", " posix_backup = pathlib.PosixPath\n", " try:\n", " pathlib.PosixPath = pathlib.WindowsPath\n", " yield\n", " finally:\n", " pathlib.PosixPath = posix_backup\n", " " ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "#|export\n", "\n", "#Exporting our model file:\n", "\n", "\n", "EXPORT_PATH = pathlib.Path('model.pkl')\n", "\n", "with set_posix_windows():\n", " learn = load_learner(EXPORT_PATH)" ] }, { "cell_type": "code", "execution_count": 7, "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": [ "CPU times: total: 500 ms\n", "Wall time: 369 ms\n" ] }, { "data": { "text/plain": [ "('CACTUS WREN',\n", " tensor(4),\n", " tensor([3.6549e-07, 1.6152e-04, 7.1560e-10, 2.8352e-09, 9.9983e-01, 7.8673e-08,\n", " 7.6682e-09, 7.4943e-09, 5.8849e-10, 2.5682e-06, 3.0625e-06, 9.9420e-08,\n", " 3.6045e-08, 3.1295e-09, 6.2309e-09, 5.3801e-06, 4.7214e-09, 2.1328e-09,\n", " 6.4662e-09, 1.3778e-09]))" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%time\n", "learn.predict(im)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "- Now we build our function for the gradio app.
\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['BALTIMORE ORIOLE', 'BAR-TAILED GODWIT', 'BLACK SWAN', 'BLUE HERON', 'CACTUS WREN', 'EASTERN TOWEE', 'EURASIAN MAGPIE', 'GOLDEN CHLOROPHONIA', 'HOODED MERGANSER', 'LILAC ROLLER', 'MALACHITE KINGFISHER', 'MIKADO PHEASANT', 'MOURNING DOVE', 'PEREGRINE FALCON', 'RAZORBILL', 'RING-BILLED GULL', 'TREE SWALLOW', 'TRUMPTER SWAN', 'TURKEY VULTURE', 'WHITE CHEEKED TURACO']\n" ] } ], "source": [ "#|export\n", "\n", "'''categories = ('EASTERN TOWEE',\n", " 'RING-BILLED GULL',\n", " 'LILAC ROLLER',\n", " 'CACTUS WREN',\n", " 'MALACHITE KINGFISHER',\n", " 'EURASIAN MAGPIE',\n", " 'TRUMPTER SWAN',\n", " 'HOODED MERGANSER',\n", " 'RAZORBILL',\n", " 'TREE SWALLOW',\n", " 'MOURNING DOVE',\n", " 'TURKEY VULTURE',\n", " 'PEREGRINE FALCON',\n", " 'BAR-TAILED GODWIT',\n", " 'BLACK SWAN',\n", " 'BALTIMORE ORIOLE',\n", " 'BLUE HERON',\n", " 'MIKADO PHEASANT',\n", " 'WHITE CHEEKED TURACO',\n", " 'GOLDEN CHLOROPHONIA')'''\n", "\n", "categories = learn.dls.vocab\n", "print(categories)\n", "\n", "\n", "def classify_images(image):\n", " pred, idx, probs = learn.predict(image)\n", " return dict(zip(categories, map(float, probs)))" ] }, { "cell_type": "code", "execution_count": 9, "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": [ "{'BALTIMORE ORIOLE': 3.654949409792607e-07,\n", " 'BAR-TAILED GODWIT': 0.00016151898307725787,\n", " 'BLACK SWAN': 7.155978587469747e-10,\n", " 'BLUE HERON': 2.835236712073197e-09,\n", " 'CACTUS WREN': 0.999826967716217,\n", " 'EASTERN TOWEE': 7.867291884622318e-08,\n", " 'EURASIAN MAGPIE': 7.668218948708727e-09,\n", " 'GOLDEN CHLOROPHONIA': 7.494300291455147e-09,\n", " 'HOODED MERGANSER': 5.884899234587238e-10,\n", " 'LILAC ROLLER': 2.5681899842311395e-06,\n", " 'MALACHITE KINGFISHER': 3.0625467388745164e-06,\n", " 'MIKADO PHEASANT': 9.942002066054556e-08,\n", " 'MOURNING DOVE': 3.6045406659468426e-08,\n", " 'PEREGRINE FALCON': 3.1295401825559566e-09,\n", " 'RAZORBILL': 6.230936655526875e-09,\n", " 'RING-BILLED GULL': 5.380146831157617e-06,\n", " 'TREE SWALLOW': 4.7214059328837266e-09,\n", " 'TRUMPTER SWAN': 2.1328343535742533e-09,\n", " 'TURKEY VULTURE': 6.4661613841110466e-09,\n", " 'WHITE CHEEKED TURACO': 1.3778179708268112e-09}" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "classify_images(im)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\acer\\AppData\\Local\\Temp\\ipykernel_9712\\216552177.py:6: GradioDeprecationWarning: Usage of gradio.inputs is deprecated, and will not be supported in the future, please import your component from gradio.components\n", " inp_img = gr.inputs.Image(shape=(192, 192))\n", "C:\\Users\\acer\\AppData\\Local\\Temp\\ipykernel_9712\\216552177.py:6: GradioDeprecationWarning: `optional` parameter is deprecated, and it has no effect\n", " inp_img = gr.inputs.Image(shape=(192, 192))\n", "C:\\Users\\acer\\AppData\\Local\\Temp\\ipykernel_9712\\216552177.py:7: GradioDeprecationWarning: Usage of gradio.outputs is deprecated, and will not be supported in the future, please import your components from gradio.components\n", " labels = gr.outputs.Label()\n", "C:\\Users\\acer\\AppData\\Local\\Temp\\ipykernel_9712\\216552177.py:7: GradioUnusedKwargWarning: You have unused kwarg parameters in Label, please remove them: {'type': 'auto'}\n", " labels = gr.outputs.Label()\n" ] }, { "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": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#|export\n", "\n", "# Building the gradio application interface:\n", "\n", "\n", "inp_img = gr.inputs.Image(shape=(192, 192))\n", "labels = gr.outputs.Label()\n", "example_img = [ 'baltimore_oriole.jpg', 'bar_tailed_godwit.jpg',\n", " 'black_swan.jpg', 'blue_heron.jpg', 'cactus_wren.jpg', 'eastern_towee.jpg', 'golden_chlorophonia.jpg',\n", " 'lilac_roller.jpg', 'malachite_kingfisher.jpg', 'mikado_pheasant.jpg', 'mourning_dove.jpg',\n", " 'peregine_falcon.jpg', 'razorbill.jpg', 'ring_billed_gull.jpg', \n", " 'tree_swallow.jpg', 'trumpter_swan.jpg', 'white_cheeked_turaco.jpg']\n", "\n", "\n", "intf = gr.Interface(fn=classify_images, inputs=inp_img, outputs=labels, examples=example_img)\n", "intf.launch(inline=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Exporting the notebook to a python script:\n" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [], "source": [ "from nbdev.export import nb_export" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [], "source": [ "nb_export('app.ipynb', 'app.py')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.8.8rc1" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }