Clemenz88 commited on
Commit
34733a7
·
verified ·
1 Parent(s): a669caa

Upload 2 files

Browse files
Files changed (2) hide show
  1. app.py +50 -0
  2. utils/matcher.py +12 -0
app.py ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ import streamlit as st
3
+ from PIL import Image
4
+ from transformers import AutoImageProcessor, AutoModelForImageClassification
5
+ import torch
6
+ import requests
7
+ from utils.matcher import oversaet_fuzzy
8
+
9
+ @st.cache_resource
10
+ def load_model():
11
+ processor = AutoImageProcessor.from_pretrained("timm/food101-vit-base-patch16-224")
12
+ model = AutoModelForImageClassification.from_pretrained("timm/food101-vit-base-patch16-224")
13
+ return processor, model
14
+
15
+ processor, model = load_model()
16
+
17
+ st.title("Kalorieestimat og Fødevareklassificering")
18
+ uploaded_file = st.file_uploader("Upload et billede", type=["jpg", "jpeg", "png"])
19
+ confidence_threshold = 0.7
20
+
21
+ if uploaded_file is not None:
22
+ image = Image.open(uploaded_file).convert("RGB")
23
+ st.image(image, caption="Uploadet billede", use_column_width=True)
24
+
25
+ inputs = processor(images=image, return_tensors="pt")
26
+ with torch.no_grad():
27
+ outputs = model(**inputs)
28
+ logits = outputs.logits
29
+ predicted_class_idx = logits.argmax(-1).item()
30
+ confidence = torch.softmax(logits, dim=-1)[0][predicted_class_idx].item()
31
+
32
+ label = model.config.id2label[predicted_class_idx]
33
+ label_dk = oversaet_fuzzy(label)
34
+
35
+ st.markdown(f"**Modelgæt:** {label} ({confidence*100:.1f}%)")
36
+ st.markdown(f"**Oversat (fuzzy):** {label_dk}")
37
+
38
+ if confidence < confidence_threshold:
39
+ manual = st.selectbox("Modellen er usikker – vælg manuelt fødevaretype:", options=["æg", "kartofler", "smør", "broccoli"])
40
+ st.markdown(f"**Manuelt valg:** {manual}")
41
+
42
+ feedback = st.text_input("Har du feedback eller en mere præcis betegnelse?")
43
+ if feedback:
44
+ st.success("Tak for din feedback!")
45
+
46
+ st.subheader("Eksempel på fødevareanalyse:")
47
+ st.markdown("- 100 g æg
48
+ - 200 g kartofler
49
+ - 50 g smør
50
+ - 25 g broccoli")
utils/matcher.py ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ def oversaet_fuzzy(label):
3
+ oversaettelser = {
4
+ "mashed_potato": "kartoffelmos",
5
+ "omelette": "æg",
6
+ "broccoli": "broccoli",
7
+ "butter": "smør",
8
+ "french_fries": "pommes frites",
9
+ "pizza": "pizza",
10
+ "sushi": "sushi"
11
+ }
12
+ return oversaettelser.get(label.lower(), f"(ukendt: {label})")