{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#|default_exp app \n", "\n", "# This notebook uses nbdev (https://github.com/fastai/nbdev/) to use these \n", "# special comments starting with `#|` and create the `app.py` output." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Tree leaf classifier" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#|export\n", "from fastai.vision.all import *\n", "import gradio" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#|export\n", "learn = load_learner('model.pkl')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "im = PILImage.create('images/ash.jpg')\n", "im.thumbnail((224, 224))\n", "im" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%time learn.predict(im)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "learn.dls.vocab" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#|export\n", "\n", "categories = ('ash', 'chestnut', 'ginkgo biloba', 'silver maple', 'willow oak')\n", "\n", "def classify_image(img):\n", " pred, idx, probs = learn.predict(img)\n", " # Change each probability to a float, since Gradio doesn't support Tensors or NumPy\n", " return dict(zip(categories, map(float, probs)))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "classify_image(im)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "# gradio interface" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#|export\n", "image = gradio.Image(shape=(192, 192))\n", "label = gradio.Label()\n", "examples = ['images/ash.jpg', 'images/chestnut.jpg', 'images/ginkgo_biloba.jpg',\n", " 'images/silver_maple.jpg', 'images/willow_oak.jpg']\n", "# More useful args\n", "title = \"Tree leaf classifier demo\"\n", "description = \"A tree leaf classifier demo, trained on images downloaded from DuckDuckGo. Created as a demo of HuggingFace Spaces and Gradio.\"\n", "article = \"

From this blog post: Machine Learning quick start by Brian Sigafoos

\"\n", "interpretation = 'default'\n", "\n", "interface = gradio.Interface(fn=classify_image, inputs=image, outputs=label,\n", " examples=examples, title=title, description=description,\n", " article=article, interpretation=interpretation)\n", "interface.launch(inline=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# export" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from nbdev.export import nb_export\n", "\n", "nb_export('app.ipynb', './')\n", "print('Export successful')" ] }, { "cell_type": "code", "execution_count": null, "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.6" }, "vscode": { "interpreter": { "hash": "eff2759d08249ab8aebc36f9602f3021ae9774f8f0203a4a83a5ad2ff4836f90" } } }, "nbformat": 4, "nbformat_minor": 2 }