putriemas commited on
Commit
ad474bc
·
verified ·
1 Parent(s): cdb2874

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +64 -0
app.py ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import tensorflow as tf
3
+ import numpy as np
4
+ from PIL import Image
5
+
6
+ # Load kedua model
7
+ spinach_model = tf.keras.models.load_model("exception.h5") # Model klasifikasi bayam
8
+ spad_model = tf.keras.models.load_model("spad_predictor.h5", compile=False) # Model prediksi SPAD
9
+
10
+ # Fungsi gabungan
11
+ def analyze_leaf(image):
12
+ try:
13
+ # Preprocessing
14
+ image_resized = image.resize((299, 299))
15
+ img_array = np.array(image_resized) / 255.0
16
+ img_array = np.expand_dims(img_array, axis=0)
17
+
18
+ # Deteksi bayam
19
+ pred_spinach = spinach_model.predict(img_array)[0][0]
20
+ is_spinach = pred_spinach > 0.5
21
+
22
+ # Hasil klasifikasi
23
+ classification = "✅ Bayam" if is_spinach else "❌ Bukan Bayam"
24
+ confidence = pred_spinach if is_spinach else 1 - pred_spinach
25
+ confidence_pct = f"{confidence * 100:.2f}%"
26
+
27
+ # Prediksi SPAD jika Bayam
28
+ spad_value = "-"
29
+ recommendation = ""
30
+ if is_spinach:
31
+
32
+ spad_value = round(float(spad_model.predict(img_array)[0][0]), 2)
33
+
34
+ # Rekomendasi perawatan berdasarkan nilai SPAD
35
+ if spad_value < 20:
36
+ recommendation = "❗ Perawatan: Bayam kekurangan klorofil. Diperlukan peningkatan pencahayaan atau pemupukan."
37
+ elif 20 <= spad_value < 40:
38
+ recommendation = "✅ Perawatan: Bayam dalam kondisi normal. Pastikan perawatan rutin."
39
+ else:
40
+ recommendation = "🌱 Perawatan: Bayam sehat dan kaya klorofil. Pastikan kelembapan dan suhu stabil."
41
+
42
+ return spad_value, classification, recommendation, image_resized
43
+
44
+ except Exception as e:
45
+ return str(e), "❌ Terjadi kesalahan", "", image
46
+
47
+
48
+ # Antarmuka Gradio
49
+ interface = gr.Interface(
50
+ fn=analyze_leaf,
51
+ inputs=gr.Image(type="pil", label="Upload Gambar Daun"),
52
+ outputs=[
53
+ gr.Number(label="Nilai SPAD (jika Bayam)"),
54
+ gr.Label(label="Status Diagnosis Daun Bayam"),
55
+ gr.Textbox(label="Rekomendasi Perawatan"),
56
+ ],
57
+ title="🌿 Deteksi Daun Bayam + Prediksi Nilai SPAD",
58
+ description="Aplikasi ini mendeteksi apakah gambar adalah bayam, dan jika ya, akan memprediksi nilai SPAD serta memberikan rekomendasi perawatan.",
59
+ theme="soft"
60
+ )
61
+
62
+ # Jalankan secara lokal
63
+ if __name__ == "__main__":
64
+ interface.launch()