Tunisian Food Classifier (MobileNetV3-Small)
Classifies Tunisian dishes (couscous, brik, ojja, mloukhiya, lablabi, kafteji, merguez, …) from a meal photo. Trained as the second recognition engine of an Astrolab Group internship project — the first engine is nateraw/food (Food-101); this one covers the dishes Food-101 doesn't know.
Training data
Fine-tuned from ImageNet weights on bbox crops + full images built from three public CC-BY-4.0 Roboflow datasets: pfemrds/detection-tunisian-food-2025 · mariems/tunisian-food-seg · working-llaze/dataset-tn-annotated-exemples-2. Cross-dataset duplicates removed by hash; ingredient/drink classes excluded. Student-collected data — expect label noise; demo-grade model.
Usage
import torch
from torchvision import models, transforms
from huggingface_hub import hf_hub_download
ckpt = torch.load(hf_hub_download("mansourismatic/tunisian-food-classifier",
"tunisian_food_mnv3.pt"), map_location="cpu", weights_only=False)
model = models.mobilenet_v3_small()
model.classifier[3] = torch.nn.Linear(model.classifier[3].in_features, len(ckpt["classes"]))
model.load_state_dict(ckpt["state_dict"]); model.eval()
# preprocess: Resize(256) -> CenterCrop(224) -> ToTensor -> ImageNet-normalize
Validation metrics are in the training report of the source repo (docs/tunisian-model-report.md). Closed-vocabulary classifier — combine with an open-set policy (confidence thresholds) in production use.