sunil18p31a0101 commited on
Commit
9643386
·
verified ·
1 Parent(s): 9cfd839

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +104 -0
app.py CHANGED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import h2o
3
+ import numpy as np
4
+ import pandas as pd
5
+ import cv2
6
+ from skimage.color import rgb2hsv
7
+ from skimage.measure import shannon_entropy
8
+ from scipy.ndimage import generic_filter
9
+
10
+ # Initialize H2O and load the saved model
11
+ h2o.init()
12
+ model_path = "" # Replace with your H2O model path
13
+ h2o_model = h2o.load_model(model_path)
14
+
15
+ # Feature extraction function
16
+ def extract_features(image):
17
+ image = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2BGR)
18
+ image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
19
+
20
+ # Extract RGB means
21
+ meanr = np.mean(image[:, :, 0])
22
+ meang = np.mean(image[:, :, 1])
23
+ meanb = np.mean(image[:, :, 2])
24
+
25
+ # Convert to HSI and compute HHR
26
+ hsv_image = rgb2hsv(image)
27
+ hue = hsv_image[:, :, 0]
28
+ high_hue_pixels = np.sum(hue > 0.95)
29
+ total_pixels = hue.size
30
+ HHR = high_hue_pixels / total_pixels
31
+
32
+ # Convert to Grayscale
33
+ gray_image = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
34
+
35
+ # Compute Entropy and Brightness
36
+ Ent = shannon_entropy(gray_image)
37
+ B = np.mean(gray_image)
38
+
39
+ # Sliding window filters
40
+ def g1_filter(window):
41
+ return window[4] - np.min(window)
42
+
43
+ def g2_filter(window):
44
+ return np.max(window) - window[4]
45
+
46
+ def g3_filter(window):
47
+ return window[4] - np.mean(window)
48
+
49
+ def g4_filter(window):
50
+ return np.std(window)
51
+
52
+ def g5_filter(window):
53
+ return window[4]
54
+
55
+ g1 = generic_filter(gray_image, g1_filter, size=3).mean()
56
+ g2 = generic_filter(gray_image, g2_filter, size=3).mean()
57
+ g3 = generic_filter(gray_image, g3_filter, size=3).mean()
58
+ g4 = generic_filter(gray_image, g4_filter, size=3).mean()
59
+ g5 = generic_filter(gray_image, g5_filter, size=3).mean()
60
+
61
+ return {
62
+ "meanr": meanr,
63
+ "meang": meang,
64
+ "meanb": meanb,
65
+ "HHR": HHR,
66
+ "Ent": Ent,
67
+ "B": B,
68
+ "g1": g1,
69
+ "g2": g2,
70
+ "g3": g3,
71
+ "g4": g4,
72
+ "g5": g5,
73
+ }
74
+
75
+ # Prediction function
76
+ def predict(image, gender, age):
77
+ # Extract image features
78
+ features = extract_features(image)
79
+ features["gender"] = gender
80
+ features["age"] = age
81
+
82
+ # Convert features to DataFrame
83
+ features_df = pd.DataFrame([features])
84
+ features_h2o = h2o.H2OFrame(features_df)
85
+
86
+ # Predict using the model
87
+ prediction = h2o_model.predict(features_h2o)
88
+ return prediction.as_data_frame().iloc[0, 0]
89
+
90
+ # Gradio Interface
91
+ interface = gr.Interface(
92
+ fn=predict,
93
+ inputs=[
94
+ gr.Image(label="Upload Image"),
95
+ gr.Dropdown(choices=["Male", "Female"], label="Gender"),
96
+ gr.Slider(0, 100, step=1, label="Age"),
97
+ ],
98
+ outputs="label",
99
+ title="Image-based Prediction App",
100
+ description="Upload an image, enter your gender and age, and get predictions using the pre-trained model."
101
+ )
102
+
103
+ # Launch the app
104
+ interface.launch()