SmartPlate / static /data /model_card.json
Aishrica's picture
initial commit
50ba6d4
Raw
History Blame Contribute Delete
13 kB
{
"model": {
"name": "indian_food_prediction",
"base_model": "google/vit-base-patch16-224-in21k",
"fine_tuning_checkpoint": "aishrica/indian_food_prediction",
"published_as": "aishrica/indian_food_prediction",
"architecture": "Vision Transformer (ViT-Base, patch 16, 224x224)",
"framework": "PyTorch + HuggingFace Transformers",
"trainable_params_millions": 85.86,
"weights_size_mb": 343,
"input": "RGB image -> 224x224, normalised -> tensor [3, 224, 224]",
"output": "80-class logits -> softmax probabilities (argmax = dish)"
},
"dataset": {
"source": "Kaggle - Indian Food Images Dataset",
"total_images": 4000,
"classes": 80,
"per_class": 50,
"train_images": 2400,
"test_images": 1600,
"split": "60 / 40 stratified, shuffled",
"balanced": true
},
"augmentations": [
"Resize 224x224",
"RandomRotation(90)",
"RandomAdjustSharpness(2)",
"RandomHorizontalFlip(0.5)",
"Normalize (ViT mean/std)"
],
"hyperparameters": {
"epochs": 20,
"learning_rate": "1e-6",
"train_batch_size": 64,
"eval_batch_size": 32,
"weight_decay": 0.02,
"warmup_steps": 50,
"optimizer_steps": 760,
"runtime_min": 31
},
"metrics": {
"accuracy": 0.7519,
"macro_f1": 0.7352,
"macro_precision": 0.7813,
"macro_recall": 0.7519,
"baseline_accuracy": 0.7494,
"test_loss": 3.1539
},
"pipeline": [
{
"step": "Dataset",
"detail": "4,000 photos - 80 dishes"
},
{
"step": "Preprocess",
"detail": "oversample - cast Image/ClassLabel"
},
{
"step": "Augment",
"detail": "resize - rotate - flip - sharpen - normalise"
},
{
"step": "ViT Encoder",
"detail": "ViT-Base patch16 - 85.9M params"
},
{
"step": "Classifier Head",
"detail": "80-class linear layer"
},
{
"step": "Prediction",
"detail": "top-3 dishes + confidence"
},
{
"step": "Calorie DB",
"detail": "label -> calories & category"
}
],
"limitations": [
"Confidence scores are poorly calibrated (softmax is very flat, top score ~0.04).",
"No separate held-out test set - the 40% split is used for both validation and test.",
"Marginal fine-tuning effect (74.9% -> 75.2%) due to a near-converged base and lr=1e-6.",
"Visually similar dishes (curries, milk-based sweets) are frequently confused.",
"Small dataset (50 images/class) limits real-world generalisation.",
"Single-dish assumption - no food segmentation or multi-item plate detection yet."
],
"per_class": [
{
"label": "adhirasam",
"precision": 0.9412,
"recall": 0.8,
"f1": 0.8649,
"support": 20
},
{
"label": "aloo_gobi",
"precision": 0.7857,
"recall": 0.55,
"f1": 0.6471,
"support": 20
},
{
"label": "aloo_matar",
"precision": 0.85,
"recall": 0.85,
"f1": 0.85,
"support": 20
},
{
"label": "aloo_methi",
"precision": 0.7407,
"recall": 1.0,
"f1": 0.8511,
"support": 20
},
{
"label": "aloo_shimla_mirch",
"precision": 0.7619,
"recall": 0.8,
"f1": 0.7805,
"support": 20
},
{
"label": "aloo_tikki",
"precision": 1.0,
"recall": 0.75,
"f1": 0.8571,
"support": 20
},
{
"label": "anarsa",
"precision": 1.0,
"recall": 0.7,
"f1": 0.8235,
"support": 20
},
{
"label": "ariselu",
"precision": 0.7692,
"recall": 1.0,
"f1": 0.8696,
"support": 20
},
{
"label": "bandar_laddu",
"precision": 0.8333,
"recall": 0.75,
"f1": 0.7895,
"support": 20
},
{
"label": "basundi",
"precision": 0.2254,
"recall": 0.8,
"f1": 0.3516,
"support": 20
},
{
"label": "bhatura",
"precision": 0.76,
"recall": 0.95,
"f1": 0.8444,
"support": 20
},
{
"label": "bhindi_masala",
"precision": 0.8636,
"recall": 0.95,
"f1": 0.9048,
"support": 20
},
{
"label": "biryani",
"precision": 0.8571,
"recall": 0.9,
"f1": 0.878,
"support": 20
},
{
"label": "boondi",
"precision": 0.9474,
"recall": 0.9,
"f1": 0.9231,
"support": 20
},
{
"label": "butter_chicken",
"precision": 0.4419,
"recall": 0.95,
"f1": 0.6032,
"support": 20
},
{
"label": "chak_hao_kheer",
"precision": 0.9474,
"recall": 0.9,
"f1": 0.9231,
"support": 20
},
{
"label": "cham_cham",
"precision": 1.0,
"recall": 0.4,
"f1": 0.5714,
"support": 20
},
{
"label": "chana_masala",
"precision": 0.7692,
"recall": 1.0,
"f1": 0.8696,
"support": 20
},
{
"label": "chapati",
"precision": 0.7407,
"recall": 1.0,
"f1": 0.8511,
"support": 20
},
{
"label": "chhena_kheeri",
"precision": 0.0,
"recall": 0.0,
"f1": 0.0,
"support": 20
},
{
"label": "chicken_razala",
"precision": 0.8,
"recall": 1.0,
"f1": 0.8889,
"support": 20
},
{
"label": "chicken_tikka",
"precision": 0.9091,
"recall": 0.5,
"f1": 0.6452,
"support": 20
},
{
"label": "chicken_tikka_masala",
"precision": 0.7273,
"recall": 0.4,
"f1": 0.5161,
"support": 20
},
{
"label": "chikki",
"precision": 0.7308,
"recall": 0.95,
"f1": 0.8261,
"support": 20
},
{
"label": "daal_baati_churma",
"precision": 0.6957,
"recall": 0.8,
"f1": 0.7442,
"support": 20
},
{
"label": "daal_puri",
"precision": 1.0,
"recall": 0.3,
"f1": 0.4615,
"support": 20
},
{
"label": "dal_makhani",
"precision": 0.8182,
"recall": 0.9,
"f1": 0.8571,
"support": 20
},
{
"label": "dal_tadka",
"precision": 0.6552,
"recall": 0.95,
"f1": 0.7755,
"support": 20
},
{
"label": "dharwad_pedha",
"precision": 1.0,
"recall": 0.8,
"f1": 0.8889,
"support": 20
},
{
"label": "doodhpak",
"precision": 0.6667,
"recall": 0.1,
"f1": 0.1739,
"support": 20
},
{
"label": "double_ka_meetha",
"precision": 0.7917,
"recall": 0.95,
"f1": 0.8636,
"support": 20
},
{
"label": "dum_aloo",
"precision": 0.8462,
"recall": 0.55,
"f1": 0.6667,
"support": 20
},
{
"label": "gajar_ka_halwa",
"precision": 0.8,
"recall": 1.0,
"f1": 0.8889,
"support": 20
},
{
"label": "gavvalu",
"precision": 0.8095,
"recall": 0.85,
"f1": 0.8293,
"support": 20
},
{
"label": "ghevar",
"precision": 1.0,
"recall": 0.8,
"f1": 0.8889,
"support": 20
},
{
"label": "gulab_jamun",
"precision": 0.5429,
"recall": 0.95,
"f1": 0.6909,
"support": 20
},
{
"label": "imarti",
"precision": 0.8333,
"recall": 1.0,
"f1": 0.9091,
"support": 20
},
{
"label": "jalebi",
"precision": 0.9474,
"recall": 0.9,
"f1": 0.9231,
"support": 20
},
{
"label": "kachori",
"precision": 0.6364,
"recall": 0.7,
"f1": 0.6667,
"support": 20
},
{
"label": "kadai_paneer",
"precision": 0.6923,
"recall": 0.9,
"f1": 0.7826,
"support": 20
},
{
"label": "kadhi_pakoda",
"precision": 0.85,
"recall": 0.85,
"f1": 0.85,
"support": 20
},
{
"label": "kajjikaya",
"precision": 0.9412,
"recall": 0.8,
"f1": 0.8649,
"support": 20
},
{
"label": "kakinada_khaja",
"precision": 0.8824,
"recall": 0.75,
"f1": 0.8108,
"support": 20
},
{
"label": "kalakand",
"precision": 0.7692,
"recall": 0.5,
"f1": 0.6061,
"support": 20
},
{
"label": "karela_bharta",
"precision": 1.0,
"recall": 0.2,
"f1": 0.3333,
"support": 20
},
{
"label": "kofta",
"precision": 0.9333,
"recall": 0.7,
"f1": 0.8,
"support": 20
},
{
"label": "kuzhi_paniyaram",
"precision": 0.6667,
"recall": 0.9,
"f1": 0.766,
"support": 20
},
{
"label": "lassi",
"precision": 0.8,
"recall": 1.0,
"f1": 0.8889,
"support": 20
},
{
"label": "ledikeni",
"precision": 0.5714,
"recall": 0.2,
"f1": 0.2963,
"support": 20
},
{
"label": "litti_chokha",
"precision": 1.0,
"recall": 0.8,
"f1": 0.8889,
"support": 20
},
{
"label": "lyangcha",
"precision": 0.8947,
"recall": 0.85,
"f1": 0.8718,
"support": 20
},
{
"label": "maach_jhol",
"precision": 0.9375,
"recall": 0.75,
"f1": 0.8333,
"support": 20
},
{
"label": "makki_di_roti_sarson_da_saag",
"precision": 1.0,
"recall": 0.85,
"f1": 0.9189,
"support": 20
},
{
"label": "malapua",
"precision": 1.0,
"recall": 0.7,
"f1": 0.8235,
"support": 20
},
{
"label": "misi_roti",
"precision": 0.8571,
"recall": 0.9,
"f1": 0.878,
"support": 20
},
{
"label": "misti_doi",
"precision": 0.6364,
"recall": 0.7,
"f1": 0.6667,
"support": 20
},
{
"label": "modak",
"precision": 0.7826,
"recall": 0.9,
"f1": 0.8372,
"support": 20
},
{
"label": "mysore_pak",
"precision": 0.7917,
"recall": 0.95,
"f1": 0.8636,
"support": 20
},
{
"label": "naan",
"precision": 0.9091,
"recall": 1.0,
"f1": 0.9524,
"support": 20
},
{
"label": "navrattan_korma",
"precision": 0.9286,
"recall": 0.65,
"f1": 0.7647,
"support": 20
},
{
"label": "palak_paneer",
"precision": 0.7917,
"recall": 0.95,
"f1": 0.8636,
"support": 20
},
{
"label": "paneer_butter_masala",
"precision": 0.6667,
"recall": 0.7,
"f1": 0.6829,
"support": 20
},
{
"label": "phirni",
"precision": 0.55,
"recall": 0.55,
"f1": 0.55,
"support": 20
},
{
"label": "pithe",
"precision": 1.0,
"recall": 0.25,
"f1": 0.4,
"support": 20
},
{
"label": "poha",
"precision": 0.6786,
"recall": 0.95,
"f1": 0.7917,
"support": 20
},
{
"label": "poornalu",
"precision": 0.9,
"recall": 0.9,
"f1": 0.9,
"support": 20
},
{
"label": "pootharekulu",
"precision": 0.8636,
"recall": 0.95,
"f1": 0.9048,
"support": 20
},
{
"label": "qubani_ka_meetha",
"precision": 1.0,
"recall": 0.65,
"f1": 0.7879,
"support": 20
},
{
"label": "rabri",
"precision": 0.0,
"recall": 0.0,
"f1": 0.0,
"support": 20
},
{
"label": "ras_malai",
"precision": 0.7083,
"recall": 0.85,
"f1": 0.7727,
"support": 20
},
{
"label": "rasgulla",
"precision": 0.5263,
"recall": 1.0,
"f1": 0.6897,
"support": 20
},
{
"label": "sandesh",
"precision": 0.6,
"recall": 0.15,
"f1": 0.24,
"support": 20
},
{
"label": "shankarpali",
"precision": 0.8333,
"recall": 1.0,
"f1": 0.9091,
"support": 20
},
{
"label": "sheer_korma",
"precision": 0.4643,
"recall": 0.65,
"f1": 0.5417,
"support": 20
},
{
"label": "sheera",
"precision": 0.8667,
"recall": 0.65,
"f1": 0.7429,
"support": 20
},
{
"label": "shrikhand",
"precision": 0.8,
"recall": 0.6,
"f1": 0.6857,
"support": 20
},
{
"label": "sohan_halwa",
"precision": 1.0,
"recall": 0.5,
"f1": 0.6667,
"support": 20
},
{
"label": "sohan_papdi",
"precision": 0.5556,
"recall": 1.0,
"f1": 0.7143,
"support": 20
},
{
"label": "sutar_feni",
"precision": 0.8571,
"recall": 0.9,
"f1": 0.878,
"support": 20
},
{
"label": "unni_appam",
"precision": 0.5556,
"recall": 0.75,
"f1": 0.6383,
"support": 20
}
]
}