Spaces:
Build error
Build error
Update app.py
Browse files
app.py
CHANGED
|
@@ -3,13 +3,14 @@ import torchvision.transforms as transforms
|
|
| 3 |
import torchvision.models as models
|
| 4 |
from PIL import Image
|
| 5 |
import json
|
|
|
|
| 6 |
|
| 7 |
# Load the model with updated weights parameter
|
| 8 |
model = models.resnet50(weights=models.ResNet50_Weights.DEFAULT)
|
| 9 |
model.eval() # Set model to evaluation mode
|
| 10 |
|
| 11 |
# Load the model's custom state_dict
|
| 12 |
-
model_path = '
|
| 13 |
try:
|
| 14 |
state_dict = torch.load(model_path, map_location=torch.device('cpu'))
|
| 15 |
model.load_state_dict(state_dict)
|
|
@@ -29,13 +30,13 @@ preprocess = transforms.Compose([
|
|
| 29 |
])
|
| 30 |
|
| 31 |
# Load labels
|
| 32 |
-
with open("
|
| 33 |
labels = json.load(f)
|
| 34 |
|
| 35 |
# Function to predict image class
|
| 36 |
-
def predict(
|
| 37 |
-
#
|
| 38 |
-
input_image =
|
| 39 |
|
| 40 |
# Preprocess the image
|
| 41 |
input_tensor = preprocess(input_image)
|
|
@@ -54,9 +55,16 @@ def predict(image_path):
|
|
| 54 |
_, predicted_idx = torch.max(output, 1)
|
| 55 |
predicted_class = labels[str(predicted_idx.item())]
|
| 56 |
|
| 57 |
-
return predicted_class
|
| 58 |
|
| 59 |
-
#
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3 |
import torchvision.models as models
|
| 4 |
from PIL import Image
|
| 5 |
import json
|
| 6 |
+
import gradio as gr
|
| 7 |
|
| 8 |
# Load the model with updated weights parameter
|
| 9 |
model = models.resnet50(weights=models.ResNet50_Weights.DEFAULT)
|
| 10 |
model.eval() # Set model to evaluation mode
|
| 11 |
|
| 12 |
# Load the model's custom state_dict
|
| 13 |
+
model_path = 'food_classification_model.pth'
|
| 14 |
try:
|
| 15 |
state_dict = torch.load(model_path, map_location=torch.device('cpu'))
|
| 16 |
model.load_state_dict(state_dict)
|
|
|
|
| 30 |
])
|
| 31 |
|
| 32 |
# Load labels
|
| 33 |
+
with open("config.json") as f:
|
| 34 |
labels = json.load(f)
|
| 35 |
|
| 36 |
# Function to predict image class
|
| 37 |
+
def predict(image):
|
| 38 |
+
# Convert the uploaded file to a PIL image
|
| 39 |
+
input_image = image.convert("RGB")
|
| 40 |
|
| 41 |
# Preprocess the image
|
| 42 |
input_tensor = preprocess(input_image)
|
|
|
|
| 55 |
_, predicted_idx = torch.max(output, 1)
|
| 56 |
predicted_class = labels[str(predicted_idx.item())]
|
| 57 |
|
| 58 |
+
return f"Predicted class: {predicted_class}"
|
| 59 |
|
| 60 |
+
# Set up the Gradio interface
|
| 61 |
+
iface = gr.Interface(
|
| 62 |
+
fn=predict,
|
| 63 |
+
inputs=gr.inputs.Image(type="pil"),
|
| 64 |
+
outputs="text",
|
| 65 |
+
title="Food Classification Model",
|
| 66 |
+
description="Upload an image of food to classify it."
|
| 67 |
+
)
|
| 68 |
+
|
| 69 |
+
# Launch the Gradio app
|
| 70 |
+
iface.launch()
|