{ "cells": [ { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import numpy as np\n", "import gradio as gr\n", "import requests\n", "import json" ] }, { "cell_type": "code", "execution_count": 20, "outputs": [], "source": [ "def list_to_dict(data):\n", " results = {}\n", "\n", " for i in range(len(data)):\n", " # Access the i-th dictionary in the list using an integer index\n", " d = data[i]\n", " # Assign the value of the 'label' key to the 'score' value in the results dictionary\n", " results[d['label']] = d['score']\n", "\n", " # The results dictionary will now contain the label-score pairs from the data list\n", " return results" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 21, "outputs": [], "source": [ "\n", "\n", "API_URL = \"https://api-inference.huggingface.co/models/nateraw/food\"\n", "headers = {\"Authorization\": \"Bearer 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\"}\n", "\n", "def query(filename):\n", " with open(filename, \"rb\") as f:\n", " data = f.read()\n", " response = requests.request(\"POST\", API_URL, headers=headers, data=data)\n", " output = json.loads(response.content.decode(\"utf-8\"))\n", " return list_to_dict(output),json.dumps(output, indent=2, sort_keys=True)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 27, "outputs": [], "source": [ "def get_nutrition_info(food_name):\n", " #Make request to Nutritionix API\n", " response = requests.get(\n", " \"https://trackapi.nutritionix.com/v2/search/instant\",\n", " params={\"query\": food_name},\n", " headers={\n", " \"x-app-id\": \"63a710ef\",\n", " \"x-app-key\": \"3ddc7e3feda88e1cf6dd355fb26cb261\"\n", " }\n", " )\n", " #Parse response and return relevant information\n", " data = response.json()\n", " response = data[\"branded\"][0][\"photo\"][\"thumb\"]\n", "\n", " # Open the image using PIL\n", "\n", " return {\n", " \"food_name\": data[\"branded\"][0][\"food_name\"],\n", " \"calories\": data[\"branded\"][0][\"nf_calories\"],\n", " \"serving_size\": data[\"branded\"][0][\"serving_qty\"],\n", " \"serving_unit\": data[\"branded\"][0][\"serving_unit\"],\n", " #\"images\": data[\"branded\"][0][\"photo\"]\n", " },response" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 28, "outputs": [ { "data": { "text/plain": "({'food_name': 'Hamburger',\n 'calories': 340,\n 'serving_size': 1,\n 'serving_unit': 'sandwich'},\n 'https://d2eawub7utcl6.cloudfront.net/images/nix-apple-grey.png')" }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "get_nutrition_info(\"Hamburger\")" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 22, "outputs": [], "source": [], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 22, "outputs": [], "source": [], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Running on local URL: http://127.0.0.1:7869\n", "Running on public URL: https://f7f1e48778aede65.gradio.app\n", "\n", "This share link expires in 72 hours. For free permanent hosting and GPU upgrades (NEW!), check out Spaces: https://huggingface.co/spaces\n" ] }, { "data": { "text/plain": "", "text/html": "
" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "with gr.Blocks() as demo:\n", " gr.Markdown(\"Food-Classification-Calorie-Estimation and Volume-Estimation\")\n", " with gr.Tab(\"Food Classification\"):\n", " text_input = gr.Image(type=\"filepath\")\n", " text_output = [gr.Label(num_top_classes=6),\n", " gr.Textbox()\n", " ]\n", " text_button = gr.Button(\"Food Classification\")\n", " with gr.Tab(\"Food Calorie Estimation\"):\n", " image_input = gr.Textbox(label=\"Please enter the name of the Food you want to get calorie\")\n", " image_output = [gr.Textbox(),\n", " gr.Image(type=\"filepath\")\n", " ]\n", " image_button = gr.Button(\"Estimate Calories!\")\n", " with gr.Tab(\"Volume Estimation\"):\n", " _image_input = gr.Textbox(label=\"Please enter the name of the Food you want to get calorie\")\n", " _image_output = [gr.Textbox(),\n", " gr.Image()\n", " ]\n", " _image_button = gr.Button(\"Volume Calculation\")\n", " with gr.Tab(\"Future Works\"):\n", " gr.Markdown(\"Future work on Food Classification\")\n", " gr.Markdown(\n", " \"Currently the Model is trained on food-101 Dataset, which has 100 classes, In the future iteration of the project we would like to train the model on UNIMIB Dataset with 256 Food Classes\")\n", " gr.Markdown(\"Future work on Volume Estimation\")\n", " gr.Markdown(\n", " \"The volume model has been trained on Apple AR Toolkit and thus can be executred only on Apple devices ie a iOS platform, In futur we would like to train the volume model such that it is Platform independent\")\n", " gr.Markdown(\"Future work on Calorie Estimation\")\n", " gr.Markdown(\n", " \"The Calorie Estimation currently relies on Nutritionix API , In Future Iteration we would like to build our own Custom Database of Major Food Product across New York Restaurent\")\n", " gr.Markdown(\"https://github.com/Ali-Maq/Food-Classification-Volume-Estimation-and-Calorie-Estimation/blob/main/README.md\")\n", "\n", " text_button.click(query, inputs=text_input, outputs=text_output)\n", " image_button.click(get_nutrition_info, inputs=image_input, outputs=image_output)\n", " _image_button.click(get_nutrition_info, inputs=_image_input, outputs=_image_output)\n", " with gr.Accordion(\"Open for More!\"):\n", " gr.Markdown(\"🍎 Designed and built by Ali Under the Guidance of Professor Dennis Shasha\")\n", " gr.Markdown(\"Contact me at ali.quidwai@nyu.edu 😊\")\n", "\n", "demo.launch(share=True, debug=True)" ], "metadata": { "collapsed": false, "pycharm": { "is_executing": true } } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "import numpy as np\n", "import gradio as gr\n", "\n", "def flip_text(x):\n", " return x[::-1]\n", "\n", "def flip_image(x):\n", " return np.fliplr(x)\n", "\n", "with gr.Blocks() as demo:\n", " gr.Markdown(\"Flip text or image files using this demo.\")\n", " with gr.Tab(\"Flip Text\"):\n", " text_input = gr.Textbox()\n", " text_output = gr.Textbox()\n", " text_button = gr.Button(\"Flip\")\n", " with gr.Tab(\"Flip Image\"):\n", " with gr.Row():\n", " image_input = gr.Image()\n", " image_output = gr.Image()\n", " image_button = gr.Button(\"Flip\")\n", "\n", " with gr.Accordion(\"Open for More!\"):\n", " gr.Markdown(\"Look at me...\")\n", "\n", " text_button.click(get_nutrition_info, inputs=text_input, outputs=text_output)\n", " image_button.click(query, inputs=image_input, outputs=image_output)\n", "\n", "demo.launch()" ], "metadata": { "collapsed": false, "pycharm": { "is_executing": true } } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [], "metadata": { "collapsed": false } } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.6" } }, "nbformat": 4, "nbformat_minor": 0 }