ferroscan / app.py
ecodigitus's picture
Update app.py
f226ba1 verified
Raw
History Blame Contribute Delete
1.25 kB
import gradio as gr, numpy as np, json, tensorflow as tf
from tensorflow.keras.applications.mobilenet_v2 import preprocess_input
import os
# Load model - try local first, then HF Hub
MODEL_PATH = "corrosion_classifier.keras"
CLASSES_PATH = "classes.json"
M = tf.keras.models.load_model(MODEL_PATH, compile=False)
CLASSES = json.load(open(CLASSES_PATH))
SZ = M.input_shape[1]
def predict(img):
if img is None:
return {}, "Unggah foto permukaan logam."
x = tf.image.resize(tf.cast(img, tf.float32), [SZ, SZ])[None]
p = M.predict(x, verbose=0)[0]
conf = {CLASSES[i]: float(p[i]) for i in range(len(CLASSES))}
top = CLASSES[int(p.argmax())]
note = "Triase/pra-skrining - BUKAN pengganti NDT."
return conf, f"Prediksi: {top} - {note}"
demo = gr.Interface(
fn=predict,
inputs=gr.Image(type="numpy", label="Foto permukaan"),
outputs=[
gr.Label(num_top_classes=3, label="Klasifikasi korosi"),
gr.Textbox(label="Catatan")
],
title="FerroScan — Klasifikasi Korosi",
description="MobileNetV2 + Transfer Learning. Triase visual, bukan pengganti NDT.",
examples=[]
)
if __name__ == "__main__":
demo.launch()