Spaces:
Sleeping
Sleeping
| # import os | |
| from huggingface_hub import hf_hub_download | |
| from fastapi import FastAPI, UploadFile, File | |
| from tensorflow.keras.models import load_model | |
| from tensorflow.keras.preprocessing import image | |
| import numpy as np | |
| from .utils import process_large_image | |
| app = FastAPI() | |
| REPO_ID = "rasyadlubisdev/waste-classifier" | |
| FILENAME = "waste_classification_cnn_model_HybridModel_WS.h5" | |
| # current_dir = os.path.dirname(os.path.abspath(__file__)) | |
| # model_path = os.path.join(current_dir, "waste_classification_hybrid_model.h5") | |
| # hybrid_model = load_model(model_path) | |
| model_path = hf_hub_download(repo_id=REPO_ID, filename=FILENAME) | |
| hybrid_model = load_model(model_path) | |
| class_labels = ['Cardboard', 'Glass', 'Metal', 'Paper', 'Plastic', 'Textile Trash'] | |
| async def predict(file: UploadFile = File(...)): | |
| file_location = f"temp/{file.filename}" | |
| with open(file_location, "wb") as f: | |
| f.write(await file.read()) | |
| img = image.load_img(file_location, target_size=(128, 128)) | |
| img_array = image.img_to_array(img) / 255.0 | |
| img_array = np.expand_dims(img_array, axis=0) | |
| prediction = hybrid_model.predict(img_array) | |
| predicted_class = np.argmax(prediction) | |
| confidence = prediction[0][predicted_class] * 100 | |
| return { | |
| "predicted_class": class_labels[predicted_class], | |
| "confidence": f"{confidence:.2f}%" | |
| } | |
| async def predict_large(file: UploadFile = File(...)): | |
| file_location = f"temp/{file.filename}" | |
| with open(file_location, "wb") as f: | |
| f.write(await file.read()) | |
| patch_size = (128, 128) | |
| step_size = 64 | |
| results = process_large_image(file_location, hybrid_model, patch_size, step_size, class_labels) | |
| return {"results": results} |