File size: 5,705 Bytes
fdbd455
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5a95d7c
 
 
 
 
 
 
fdbd455
5a95d7c
610db13
fdbd455
 
 
 
 
 
 
6935b46
fdbd455
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2e75d36
 
fdbd455
 
 
 
 
1218853
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
import numpy as np
import gradio as gr
import requests
import json

def list_to_dict(data):
    results = {}

    for i in range(len(data)):
        # Access the i-th dictionary in the list using an integer index
        d = data[i]
        # Assign the value of the 'label' key to the 'score' value in the results dictionary
        results[d['label']] = d['score']

    # The results dictionary will now contain the label-score pairs from the data list
    return results

API_URL = "https://api-inference.huggingface.co/models/nateraw/food"
headers = {"Authorization": "Bearer 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"}

def query(filename):
    with open(filename, "rb") as f:
        data = f.read()
    response = requests.request("POST", API_URL, headers=headers, data=data)
    output = json.loads(response.content.decode("utf-8"))
    return list_to_dict(output),json.dumps(output, indent=2, sort_keys=True)

def get_nutrition_info(food_name):
    #Make request to Nutritionix API
    response = requests.get(
        "https://trackapi.nutritionix.com/v2/search/instant",
        params={"query": food_name},
        headers={
            "x-app-id": "63a710ef",
            "x-app-key": "3ddc7e3feda88e1cf6dd355fb26cb261"
        }
    )
    #Parse response and return relevant information
    data = response.json()
    response = data["branded"][0]["photo"]["thumb"]
    val = {
               "food_name": data["branded"][0]["food_name"],
               "calories": data["branded"][0]["nf_calories"],
               "serving_size": data["branded"][0]["serving_qty"],
               "serving_unit": data["branded"][0]["serving_unit"],
               #"images": data["branded"][0]["photo"]
           }
    # Open the image using PIL
    output = json.dumps(val, indent=2, sort_keys=True)
    return output,response

def volume_estimations(ali):
    return None

with gr.Blocks() as demo:
    gr.Markdown("Food-Classification-Calorie-Estimation and Volume-Estimation")
    with gr.Tab("Food Classification"):
        text_input = gr.Image(type="filepath",interactive=True,label="Upload the food Image and Zoom in to the item you want to get the calorie for")
        text_output = [gr.Label(num_top_classes=6),
                       gr.Textbox()
                       ]
        text_button = gr.Button("Food Classification")
    with gr.Tab("Food Calorie Estimation"):
        image_input = gr.Textbox(label="Please enter the name of the Food you want to get calorie")
        image_output = [gr.Textbox(),
                        gr.Image(type="filepath")
                        ]
        image_button = gr.Button("Estimate Calories!")
    with gr.Tab("Volume Estimation"):
        _image_input = gr.Textbox(label="Please Download the Photogrammetry File trained on APPLE AR KIT and follow the instruction mention below to generate the 3D Vortex of the object")
        _image_output = gr.Image()
        gr.Markdown("-----------------------------------------------------------------------------")
        gr.Markdown("Directory where HelloPhotogrammetry app Saved. Example:/Users/ali/Desktop/HelloPhotogrammetry")
        gr.Markdown("Directory where all the images are saved. Example:: ~/Desktop/Burger_Data_3")
        gr.Markdown("Directory where the usdz or obj file has to be saved.  Example: ~/Desktop/Burger_Data_3/Burger.usdz")
        gr.Markdown("File Quality that you want your 3D model to be. Example: --detail medium ")
        gr.Markdown("-----------------------------------------------------------------------------")
        gr.Markdown("/Users/ali/Desktop/HelloPhotogrammetry ~/Desktop/Burger_Data_3  ~/Desktop/Burger_Data_3/Burger.obj --detail medium")
        gr.Markdown("You can download the photogrammetry demo and files using this Google drive link")
        gr.Markdown("-----------------------------------------------------------------------------")
        gr.Markdown("https://drive.google.com/drive/folders/1QrL0Vhvw5GvIQ8fbHfb9EOsnOlPMmXLG?usp=share_link")
        gr.Markdown("-----------------------------------------------------------------------------")



        _image_button = gr.Button("Volume Calculation")
    with gr.Tab("Future Works"):
        gr.Markdown("Future work on Food Classification")
        gr.Markdown(
            "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")
        gr.Markdown("Future work on Volume Estimation")
        gr.Markdown(
        "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")
        gr.Markdown("Future work on Calorie Estimation")
        gr.Markdown(
    "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")
        gr.Markdown("https://github.com/Ali-Maq/Food-Classification-Volume-Estimation-and-Calorie-Estimation/blob/main/README.md")

    text_button.click(query, inputs=text_input, outputs=text_output,scroll_to_output=True,show_progress=True)
    image_button.click(get_nutrition_info, inputs=image_input, outputs=image_output,scroll_to_output=True,show_progress=True)
    #_image_button.click(get_nutrition_info, inputs=_image_input, outputs=_image_output)
    with gr.Accordion("Open for More!"):
        gr.Markdown("🍎 Designed and built by Ali Under the Guidance of Professor Dennis Shasha")
        gr.Markdown("Contact me at ali.quidwai@nyu.edu 😊")

demo.launch()