Spaces:
Runtime error
Runtime error
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 [email protected] π") | |
demo.launch() |