Spaces:
Runtime error
Runtime error
File size: 1,695 Bytes
300b4bf |
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 |
import streamlit as st
from PIL import Image
import pandas as pd
from transformers import pipeline
st.set_page_config(page_title="WebKalorier")
st.title("🍽️ WebKalorier – Kalorieestimering via Billede")
@st.cache_resource(show_spinner=False)
def get_classifier():
return pipeline("image-classification", model="eslamxm/vit-base-food101")
classifier = get_classifier()
# Load calorie data
df = pd.read_csv("kaloriedata.csv")
food_list = df["navn"].tolist()
uploaded_file = st.file_uploader("Upload et billede af din mad", type=["jpg","jpeg","png"])
if uploaded_file:
image = Image.open(uploaded_file).convert("RGB")
st.image(image, caption="Analyserer...", use_column_width=True)
with st.spinner("Klassificerer billede..."):
results = classifier(image, top_k=3)
# Display top result
top = results[0]
label = top["label"]
score = top["score"]
st.markdown(f"**Modelgæt:** {label} ({score*100:.1f}% sikkerhed)")
if score < 0.7:
chosen = st.selectbox("Modellen er usikker – vælg fødevare manuelt:", food_list)
else:
# Fuzzy matching could be added via utils/matcher.py
chosen = label.replace('_', ' ').lower()
gram = st.number_input(f"Hvor mange gram {chosen}?", min_value=1, max_value=2000, value=100)
kcal_per_100g = float(df.loc[df['navn']==chosen, 'kcal_pr_100g'].squeeze()) if chosen in df['navn'].values else 0
kcal = gram * kcal_per_100g / 100
st.markdown("### Analyse af måltid")
st.write(f"- {gram} g **{chosen}** = {kcal:.1f} kcal")
feedback = st.text_input("Har du feedback eller rettelse?")
if st.button("Send feedback"):
st.success("Tak for din feedback!") |