A fine-tuned EfficientNet-B0 model for classifying food images into 8 categories. Trained using a two-stage transfer learning approach with ImageNet pre-trained weights.
1import tensorflow as tf
2import numpy as np
3from PIL import Image
4
5# Load model
6model = tf.keras.models.load_model(
7 "BestModelEfficientNetLite.keras",
8 custom_objects={"preprocess_input": tf.keras.applications.efficientnet.preprocess_input},
9)
10
11# Predict
12img = Image.open("food.jpg").resize((224, 224))
13x = np.expand_dims(np.array(img), axis=0).astype("float32")
14probs = model.predict(x)[0]
15
16classes = ["Baked Potato", "Burger", "Crispy Chicken", "Donut", "Fries", "Hot Dog", "Pizza", "Sandwich"]
17print(f"Predicted: {classes[np.argmax(probs)]} ({probs.max():.1%})")
1import numpy as np
2from PIL import Image
3import tflite_runtime.interpreter as tflite
4
5interpreter = tflite.Interpreter(model_path="tflite/model.tflite")
6interpreter.allocate_tensors()
7
8img = np.array(Image.open("food.jpg").resize((224, 224)), dtype=np.float32)
9img = np.expand_dims(img, axis=0)
10
11interpreter.set_tensor(interpreter.get_input_details()[0]['index'], img)
12interpreter.invoke()
13output = interpreter.get_tensor(interpreter.get_output_details()[0]['index'])
1import * as tf from '@tensorflow/tfjs';
2
3const model = await tf.loadGraphModel('tfjs/model.json');
4const img = tf.browser.fromPixels(imageElement).resizeBilinear([224, 224]).expandDims(0).toFloat();
5const predictions = model.predict(img);
6const classIndex = predictions.argMax(-1).dataSync()[0];