HashamUllah's picture
Create app.py
7c80fe0 verified
raw
history blame
1.33 kB
from flask import Flask, request, jsonify
import tensorflow as tf
import numpy as np
from PIL import Image
import io
import json
app = Flask(__name__)
# Load the TensorFlow model
model = tf.keras.models.load_model('./plant_disease_detection_saved_model')
# Load categories
with open('./categories.json') as f:
categories = json.load(f)
def preprocess_image(image):
# Convert the image to a NumPy array
image = Image.open(io.BytesIO(image))
image = image.resize((224, 224)) # Adjust size as needed
image_array = np.array(image) / 255.0 # Normalize to [0, 1]
image_array = np.expand_dims(image_array, axis=0) # Add batch dimension
return image_array
@app.route('/predict', methods=['POST'])
def predict():
if 'image' not in request.files:
return jsonify({'error': 'No image provided'}), 400
image = request.files['image'].read()
image_array = preprocess_image(image)
# Make prediction
predictions = model.predict(image_array)
predicted_class = np.argmax(predictions, axis=1)[0]
# Map to category names
predicted_label = categories.get(str(predicted_class), 'Unknown')
return jsonify({'class': predicted_label, 'confidence': float(predictions[0][predicted_class])})
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8080, debug=True)