1Classification Report:
2 precision recall f1-score support
3
4 asure 0.9718 0.9503 0.9609 181
5 baklava 0.9589 0.9292 0.9438 452
6 biber_dolmasi 0.9505 0.9555 0.9530 382
7 borek 0.8770 0.8842 0.8806 613
8 cig_kofte 0.9051 0.9358 0.9202 265
9 enginar 0.9116 0.8753 0.8931 377
10 et_sote 0.7870 0.7688 0.7778 346
11 gozleme 0.9220 0.9420 0.9319 414
12 hamsi 0.9724 0.9763 0.9744 253
13hunkar_begendi 0.9583 0.9274 0.9426 248
14 icli_kofte 0.9261 0.9353 0.9307 402
15 ispanak 0.9567 0.9343 0.9454 213
16 izmir_kofte 0.8763 0.9239 0.8995 368
17 karniyarik 0.9538 0.8934 0.9226 347
18 kebap 0.9154 0.8584 0.8860 706
19 kisir 0.8919 0.9356 0.9132 388
20 kuru_fasulye 0.8799 0.9820 0.9281 388
21 lahmacun 0.9699 0.8703 0.9174 185
22 lokum 0.9220 0.9369 0.9294 555
23 manti 0.9569 0.9482 0.9525 328
24 mucver 0.8743 0.9201 0.8966 363
25 pirinc_pilavi 0.9110 0.9482 0.9292 367
26 simit 0.9629 0.9284 0.9453 391
27 taze_fasulye 0.8992 0.9253 0.9121 241
28 yaprak_sarma 0.9742 0.9544 0.9642 395
29
30 accuracy 0.9186 9168
31 macro avg 0.9234 0.9216 0.9220 9168
32 weighted avg 0.9194 0.9186 0.9186 9168
1"id2label": {
2 "0": "asure",
3 "1": "baklava",
4 "2": "biber_dolmasi",
5 "3": "borek",
6 "4": "cig_kofte",
7 "5": "enginar",
8 "6": "et_sote",
9 "7": "gozleme",
10 "8": "hamsi",
11 "9": "hunkar_begendi",
12 "10": "icli_kofte",
13 "11": "ispanak",
14 "12": "izmir_kofte",
15 "13": "karniyarik",
16 "14": "kebap",
17 "15": "kisir",
18 "16": "kuru_fasulye",
19 "17": "lahmacun",
20 "18": "lokum",
21 "19": "manti",
22 "20": "mucver",
23 "21": "pirinc_pilavi",
24 "22": "simit",
25 "23": "taze_fasulye",
26 "24": "yaprak_sarma"
27}
1import gradio as gr
2from transformers import AutoImageProcessor, SiglipForImageClassification
3from PIL import Image
4import torch
5
6model_name = "prithivMLmods/TurkishFoods-25" # Replace with your Hugging Face repo
7model = SiglipForImageClassification.from_pretrained(model_name)
8processor = AutoImageProcessor.from_pretrained(model_name)
9
10id2label = {
11 "0": "asure", "1": "baklava", "2": "biber_dolmasi", "3": "borek", "4": "cig_kofte",
12 "5": "enginar", "6": "et_sote", "7": "gozleme", "8": "hamsi", "9": "hunkar_begendi",
13 "10": "icli_kofte", "11": "ispanak", "12": "izmir_kofte", "13": "karniyarik", "14": "kebap",
14 "15": "kisir", "16": "kuru_fasulye", "17": "lahmacun", "18": "lokum", "19": "manti",
15 "20": "mucver", "21": "pirinc_pilavi", "22": "simit", "23": "taze_fasulye", "24": "yaprak_sarma"
16}
17
18def predict_food(image):
19 image = Image.fromarray(image).convert("RGB")
20 inputs = processor(images=image, return_tensors="pt")
21 with torch.no_grad():
22 logits = model(**inputs).logits
23 probs = torch.nn.functional.softmax(logits, dim=1).squeeze().tolist()
24 return {id2label[str(i)]: round(probs[i], 3) for i in range(len(probs))}
25
26iface = gr.Interface(
27 fn=predict_food,
28 inputs=gr.Image(type="numpy"),
29 outputs=gr.Label(num_top_classes=5, label="Top Turkish Foods"),
30 title="TurkishFoods-25 Classifier",
31 description="Upload a food image to identify one of 25 Turkish dishes."
32)
33
34if __name__ == "__main__":
35 iface.launch()