{ "cells": [ { "cell_type": "markdown", "id": "fb0b148e", "metadata": {}, "source": [ "# This notebook is the .ipynb file for the model. \n", "The code has been commmented in order to explain various parts, including the unused commented out parts." ] }, { "cell_type": "code", "execution_count": 1, "id": "e39e2ed1", "metadata": {}, "outputs": [], "source": [ "#|default_exp app" ] }, { "cell_type": "code", "execution_count": 2, "id": "d671a893", "metadata": {}, "outputs": [], "source": [ "# The various ~| comments are needed to turn this into a .py file\n", "# The export comments specify to export said cell" ] }, { "cell_type": "code", "execution_count": 3, "id": "435a6f23", "metadata": {}, "outputs": [], "source": [ "# On my computer, I use Anaconda, where these packages are already installed, so there is no need to install them on the notebook\n", "# On HuggingFaceSpaces, these packages have been put into requirements.txt so that the website installs them\n", "# Therefore there is no need to install them \n", "\n", "#%pip install -q gradio\n", "#%pip install fastbook\n", "#%pip install -Uqq fastai" ] }, { "cell_type": "code", "execution_count": 4, "id": "a89a7628", "metadata": {}, "outputs": [], "source": [ "#|export\n", "# Importing neccesary modules\n", "import fastbook\n", "fastbook.setup_book()\n", "from fastbook import *\n", "from fastai.vision.widgets import *\n", "from fastai.vision.all import *\n", "import gradio as gr" ] }, { "cell_type": "code", "execution_count": 5, "id": "8c95d6bd", "metadata": {}, "outputs": [], "source": [ "# There was an error with the module Pillow, it was not updated and I attempted to update it within the notebook\n", "# This was not neccesary as I updated Pillow on my anaconda app and it fixed it.\n", "\n", "#!pip uninstall Pillow\n", "#!pip install Pillow" ] }, { "cell_type": "code", "execution_count": 6, "id": "fe4889a5", "metadata": {}, "outputs": [], "source": [ "# There was an error the first time I ran this code on the notebook: \"NotImplementedError: cannot instantiate 'PosixPath' on your system\"\n", "# this code fixed it, but as it is suited for windows,\n", "# this causes an error on HuggingSpaceFaces, which likely uses linux. \n", "# Strangely, simply commenting this code out does not cause the initial error on HuggingFaceSpaces and works for it\n", "\n", "import pathlib\n", "temp = pathlib.PosixPath\n", "pathlib.PosixPath = pathlib.WindowsPath" ] }, { "cell_type": "code", "execution_count": null, "id": "d1d0d596", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\Adnan\\anaconda3\\lib\\site-packages\\gradio\\inputs.py:256: UserWarning: Usage of gradio.inputs is deprecated, and will not be supported in the future, please import your component from gradio.components\n", " warnings.warn(\n", "C:\\Users\\Adnan\\anaconda3\\lib\\site-packages\\gradio\\deprecation.py:40: UserWarning: `optional` parameter is deprecated, and it has no effect\n", " warnings.warn(value)\n", "C:\\Users\\Adnan\\anaconda3\\lib\\site-packages\\gradio\\outputs.py:196: UserWarning: Usage of gradio.outputs is deprecated, and will not be supported in the future, please import your components from gradio.components\n", " warnings.warn(\n", "C:\\Users\\Adnan\\anaconda3\\lib\\site-packages\\gradio\\deprecation.py:40: UserWarning: The 'type' parameter has been deprecated. Use the Number component instead.\n", " warnings.warn(value)\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" ] } ], "source": [ "#|export\n", "learn_inf = load_learner('NovaOrToastModel.pkl') # Loading the model\n", "learn_inf.dls.vocab # Returns a list of the categories\n", "categories = learn_inf.dls.vocab\n", "\n", "# Gradio code:\n", "\n", "# Function for Gradio to use to classify images\n", "def classify_image(img):\n", " pred, idx, probs = learn_inf.predict(img)\n", " return dict(zip(categories, map(float,probs)))\n", "\n", "image = gr.inputs.Image(shape=(192,192)) \n", "label = gr.outputs.Label()\n", "examples = [\"ToastTest.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": null, "id": "300585db", "metadata": {}, "outputs": [], "source": [ "# Notebook2script simply turns the specified cells into a .py file for usage in HuggingFaceSpaces\n", "from nbdev.export import notebook2script\n", "\n", "# There were many problems getting notebook2script to work\n", "# The fix was to add a text document into the folder called 'settings.ini', for which I used the author's standard settings\n", "# which works\n", "\n", "notebook2script('NovaOrToast.ipynb')" ] } ], "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.9.12" } }, "nbformat": 4, "nbformat_minor": 5 }