{ "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": 10, "id": "e39e2ed1", "metadata": {}, "outputs": [], "source": [ "#|default_exp app" ] }, { "cell_type": "code", "execution_count": 11, "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": 12, "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": 13, "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": 14, "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": 15, "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:7861\n", "\n", "To create a public link, set `share=True` in `launch()`.\n" ] }, { "data": { "text/plain": [ "(, 'http://127.0.0.1:7861/', None)" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "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": 16, "id": "300585db", "metadata": {}, "outputs": [], "source": [ "from nbdev.export import notebook2script" ] }, { "cell_type": "code", "execution_count": 17, "id": "72d6a182", "metadata": {}, "outputs": [], "source": [ "#from nbdev import get_config\n", "#get_config (cfg_name='settings.ini', path=None)\n", "#get_config (cfg_name='settings.ini')" ] }, { "cell_type": "code", "execution_count": 20, "id": "fad6e0cf", "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "notebook2script() got an unexpected keyword argument 'path'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", "Input \u001b[1;32mIn [20]\u001b[0m, in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[43mnotebook2script\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mNovaOrToast.ipynb\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpath\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mnone\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n", "\u001b[1;31mTypeError\u001b[0m: notebook2script() got an unexpected keyword argument 'path'" ] } ], "source": [ "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 }