Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -5,13 +5,14 @@ import numpy as np
|
|
5 |
import joblib
|
6 |
import google.generativeai as genai
|
7 |
import gradio as gr
|
8 |
-
from google.colab import drive
|
9 |
from datetime import datetime, timedelta
|
10 |
from tensorflow.keras.models import load_model
|
11 |
from tensorflow.keras.preprocessing import image as keras_image
|
12 |
from tensorflow.keras.applications.vgg16 import preprocess_input as vgg_preprocess
|
13 |
from tensorflow.keras.applications.xception import preprocess_input as xce_preprocess
|
14 |
from tensorflow.keras.losses import BinaryFocalCrossentropy
|
|
|
15 |
|
16 |
# --- CONFIGURATION ---
|
17 |
# Coordinates for a representative forest area in Pakistan
|
@@ -27,7 +28,10 @@ API_URL = (
|
|
27 |
)
|
28 |
|
29 |
# --- GEMINI SETUP ---
|
30 |
-
|
|
|
|
|
|
|
31 |
genai.configure(api_key=GOOGLE_API_KEY)
|
32 |
flash = genai.GenerativeModel('gemini-1.5-flash')
|
33 |
|
@@ -74,7 +78,7 @@ def detect_fire(img):
|
|
74 |
x = keras_image.img_to_array(img.resize((128,128)))[None]
|
75 |
x = vgg_preprocess(x)
|
76 |
prob = float(vgg_model.predict(x)[0][0])
|
77 |
-
return prob
|
78 |
|
79 |
|
80 |
def classify_severity(img):
|
@@ -84,7 +88,7 @@ def classify_severity(img):
|
|
84 |
rf_p = rf_model.predict(preds)[0]
|
85 |
xgb_p = xgb_model.predict(preds)[0]
|
86 |
ensemble = int(round((rf_p + xgb_p)/2))
|
87 |
-
return target_map.get(ensemble,
|
88 |
|
89 |
|
90 |
def fetch_weather_trend(lat, lon):
|
@@ -135,7 +139,7 @@ def pipeline(image):
|
|
135 |
img = Image.fromarray(image).convert('RGB')
|
136 |
fire, prob = detect_fire(img)
|
137 |
if not fire:
|
138 |
-
return f"No wildfire detected (prob={prob:.2f})", "N/A", "No wildfire detected. Stay alert
|
139 |
severity = classify_severity(img)
|
140 |
trend = fetch_weather_trend(*FOREST_COORDS['Pakistan Forest'])
|
141 |
recs = generate_recommendations(True, severity, trend)
|
|
|
5 |
import joblib
|
6 |
import google.generativeai as genai
|
7 |
import gradio as gr
|
8 |
+
from google.colab import drive
|
9 |
from datetime import datetime, timedelta
|
10 |
from tensorflow.keras.models import load_model
|
11 |
from tensorflow.keras.preprocessing import image as keras_image
|
12 |
from tensorflow.keras.applications.vgg16 import preprocess_input as vgg_preprocess
|
13 |
from tensorflow.keras.applications.xception import preprocess_input as xce_preprocess
|
14 |
from tensorflow.keras.losses import BinaryFocalCrossentropy
|
15 |
+
from PIL import Image
|
16 |
|
17 |
# --- CONFIGURATION ---
|
18 |
# Coordinates for a representative forest area in Pakistan
|
|
|
28 |
)
|
29 |
|
30 |
# --- GEMINI SETUP ---
|
31 |
+
# Retrieve API key from environment variable (set in Hugging Face Secrets)
|
32 |
+
GOOGLE_API_KEY = os.environ.get('GOOGLE_API_KEY')
|
33 |
+
if not GOOGLE_API_KEY:
|
34 |
+
raise ValueError("Missing GOOGLE_API_KEY environment variable")
|
35 |
genai.configure(api_key=GOOGLE_API_KEY)
|
36 |
flash = genai.GenerativeModel('gemini-1.5-flash')
|
37 |
|
|
|
78 |
x = keras_image.img_to_array(img.resize((128,128)))[None]
|
79 |
x = vgg_preprocess(x)
|
80 |
prob = float(vgg_model.predict(x)[0][0])
|
81 |
+
return prob>=0.5, prob
|
82 |
|
83 |
|
84 |
def classify_severity(img):
|
|
|
88 |
rf_p = rf_model.predict(preds)[0]
|
89 |
xgb_p = xgb_model.predict(preds)[0]
|
90 |
ensemble = int(round((rf_p + xgb_p)/2))
|
91 |
+
return target_map.get(ensemble,'moderate')
|
92 |
|
93 |
|
94 |
def fetch_weather_trend(lat, lon):
|
|
|
139 |
img = Image.fromarray(image).convert('RGB')
|
140 |
fire, prob = detect_fire(img)
|
141 |
if not fire:
|
142 |
+
return f"No wildfire detected (prob={prob:.2f})", "N/A", "**No wildfire detected. Stay alert.**"
|
143 |
severity = classify_severity(img)
|
144 |
trend = fetch_weather_trend(*FOREST_COORDS['Pakistan Forest'])
|
145 |
recs = generate_recommendations(True, severity, trend)
|