Spaces:
Sleeping
Sleeping
File size: 1,062 Bytes
168a9d1 d2972dd 168a9d1 3e3d6f7 d2972dd 168a9d1 d2972dd 96a95c2 d2972dd | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | from flask import Flask, request, jsonify, send_from_directory
import io
import os
from PIL import Image
import numpy as np
import tensorflow as tf
app = Flask(__name__, static_folder='../frontend', static_url_path='')
model = tf.keras.models.load_model("backend/model.keras")
@app.route("/")
def index():
return send_from_directory(app.static_folder, "index.html")
@app.route("/predict", methods=["POST"])
def predict():
file = request.files.get("file")
if file is None:
return jsonify({"error": "No file uploaded"}), 400
try:
img = Image.open(io.BytesIO(file.read())).convert("RGB").resize((32, 32))
arr = np.array(img).astype("float32") / 255.0
arr = np.expand_dims(arr, axis=0)
preds = model.predict(arr)
top_idx = int(np.argmax(preds[0]))
result = {
"class": top_idx,
"confidence": float(preds[0][top_idx]),
}
return jsonify(result)
except Exception as e:
return jsonify({"error": f"Gagal memproses gambar: {str(e)}"}), 500 |