Spaces:
Runtime error
Runtime error
File size: 4,762 Bytes
8add151 |
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 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
import streamlit as st
import numpy as np
import time
import PIL
import PIL.Image as Image
from utils import make_pred_outside_india
from utils import getmodel_outside_india
from utils import getmodel_india
from utils import load_prepare_img
from utils import food_nofood_pred
import sys
from RecipeData import fetchRecipeData
IMG_SIZE = (224, 224)
model_V2 = 'efficientnet_b0.pt'
model_V1 = 'indian_efficientnet_b0.pt'
@st.cache()
def model_prediction(model_path, img_file, rescale,selected_location):
input_img, device = load_prepare_img(img_file)
if(selected_location=='Outside India'):
model = getmodel_outside_india(model_path)
prediction = make_pred_outside_india(input_img, model, device, selected_location)
elif(selected_location=='India'):
model = getmodel_india(model_path)
prediction = make_pred_outside_india(input_img, model, device, selected_location)
print(prediction)
sorceCode, recipe_data = fetchRecipeData(prediction)
return prediction, sorceCode, recipe_data
def main():
st.set_page_config(
page_title="SeeFood",
page_icon="🍔 Know Your Receipe",
layout="wide",
initial_sidebar_state="expanded"
)
st.title('SeeFood🍔')
st.write('Upload a food image and get the recipe for that food and other details of that food')
col1, col2 = st.columns(2)
with col1:
# image uploading button
uploaded_file = st.file_uploader("Choose a file")
selected_location = st.selectbox('Select loaction',('India', 'Outside India'), index=1)
if uploaded_file is not None:
display_img = uploaded_file.read()
uploaded_img = Image.open(uploaded_file)
col2.image(display_img, width=500)
predict = st.button('Get Recipe!')
if predict:
if uploaded_file is not None:
with st.spinner('getting image type'):
img_type=food_nofood_pred(uploaded_img)
print(img_type)
if(img_type=='food'):
with st.spinner('Please Wait 👩🍳'):
# setting model and rescalling
if selected_location == 'India':
pred_model = model_V1
pred_rescale = True
if selected_location == 'Outside India':
pred_model = model_V2
pred_rescale =True
# makeing prediction and fetching food recipe form api
food, source_code, recipe_data = model_prediction(pred_model, uploaded_img, pred_rescale,selected_location)
# asssigning caleoric breakdown data
percent_Protein = recipe_data['percentProtein']
percent_fat = recipe_data['percentFat']
percent_carbs = recipe_data['percentCarbs']
# food name message
col1.success(f"It's an {food}")
if source_code == 200:
# desplay food recipe
st.header(recipe_data['title']+" Recipe")
col3, col4 = st.columns(2)
with col3:
# Ingridents of recipie
st.subheader('Ingredients')
# st.info(recipe_data['ingridents'])
for i in recipe_data['ingridents']:
st.info(f"{i}")
# Inctuction for recipe
with col4:
st.subheader('Instructions')
st.info(recipe_data['instructions'])
# st.subheader('Caloric Breakdown')
'''
## Caloric Breakdown
'''
st.success(f'''
* Protien: {percent_Protein}%
* Fat: {percent_fat}%
* Carbohydrates: {percent_carbs}%
''')
else:
st.error('Something went wrong please try again :(')
elif(img_type=='not food'):
# Ingridents of recipie
st.warning('This is not food image Please try again!!')
else:
st.warning('Please Upload Image')
if __name__=='__main__':
main() |