Spaces:
No application file
No application file
| import os | |
| from fastapi import FastAPI, File, UploadFile | |
| import tensorflow as tf | |
| import numpy as np | |
| from PIL import Image | |
| import io | |
| app = FastAPI() | |
| ORIGINAL_FILE = "priority_model.bin" | |
| MODEL_H5 = "model_fix.h5" | |
| model = None | |
| error_msg = "Starting..." | |
| def load_model(): | |
| global model, error_msg | |
| try: | |
| # ุชุญููู bin ูู h5 ุนุดุงู ููุฑุจ ู ู ุงูู Xet ููุฑุถู TensorFlow 2.15 | |
| if os.path.exists(ORIGINAL_FILE): | |
| if os.path.exists(MODEL_H5): os.remove(MODEL_H5) | |
| os.rename(ORIGINAL_FILE, MODEL_H5) | |
| if os.path.exists(MODEL_H5): | |
| model = tf.keras.models.load_model(MODEL_H5, compile=False) | |
| error_msg = "None" | |
| else: | |
| error_msg = "Model file not found" | |
| except Exception as e: | |
| error_msg = str(e) | |
| def home(): | |
| return { | |
| "model_loaded": model is not None, | |
| "tf_version": tf.__version__, | |
| "error": error_msg | |
| } | |
| async def predict(file: UploadFile = File(...)): | |
| if model is None: return {"error": "Model not loaded"} | |
| contents = await file.read() | |
| image = Image.open(io.BytesIO(contents)).convert("RGB").resize((224, 224)) | |
| img_array = np.array(image) / 255.0 | |
| img_array = np.expand_dims(img_array, axis=0).astype(np.float32) | |
| predictions = model.predict(img_array) | |
| classes = ["High Priority", "Low Priority", "Medium Priority"] | |
| idx = np.argmax(predictions[0]) | |
| return {"prediction": classes[idx], "confidence": f"{float(predictions[0][idx])*100:.2f}%"} |