comvis_backend / model.py
thomatomb's picture
Deploy Pneumonia Detection API
7a9582d
Raw
History Blame Contribute Delete
1.04 kB
from huggingface_hub import hf_hub_download
import tensorflow as tf
import numpy as np
import os
models = {}
HF_REPO = "almer1426/comvis26-project-model"
def load_models():
for name in ["densenet121_best.keras", "vgg16_best.keras"]:
path = hf_hub_download(repo_id=HF_REPO, filename=name)
models[name.replace("_best.keras", "")] = tf.keras.models.load_model(path)
print("Models loaded.")
def predict(image_array: np.ndarray, model_name: str = "densenet121") -> dict:
model = models.get(model_name)
if model is None:
raise ValueError(f"Model '{model_name}' not found.")
raw_output = model.predict(image_array, verbose=0) # shape: (1, 1)
confidence = float(raw_output[0][0])
# Model output: sigmoid → nilai mendekati 1 = PNEUMONIA, mendekati 0 = NORMAL
label = "PNEUMONIA" if confidence >= 0.5 else "NORMAL"
confidence_score = confidence if label == "PNEUMONIA" else 1 - confidence
return {
"label": label,
"confidence": round(confidence_score, 4)
}