sunil18p31a0101 commited on
Commit
1d782a2
·
verified ·
1 Parent(s): 096da2a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -82
app.py CHANGED
@@ -1,26 +1,15 @@
1
  import gradio as gr
 
2
  import numpy as np
3
  import pandas as pd
4
  import cv2
5
- import joblib
6
- from skimage.color import rgb2hsv
7
- from skimage.measure import shannon_entropy
8
- from scipy.ndimage import generic_filter
9
-
10
- # Load the pre-trained SVR model, MinMaxScaler, and LabelEncoder from pickle files
11
- model_path = "svr_model.pkl" # Replace with the path to your pickle file
12
- scaler_path = "minmax_scaler.pkl" # Replace with the path to your MinMaxScaler pickle file
13
- encoder_path = "label_encoder.pkl" # Replace with the path to your LabelEncoder pickle file
14
-
15
- # Load the pickle files
16
- with open(model_path, 'rb') as f:
17
- svr_model = joblib.load(f)
18
 
19
- with open(scaler_path, 'rb') as f:
20
- scaler = joblib.load(f)
21
-
22
- with open(encoder_path, 'rb') as f:
23
- label_encoder = joblib.load(f)
24
 
25
  # Feature extraction function
26
  def extract_features(image):
@@ -32,79 +21,33 @@ def extract_features(image):
32
  meang = np.mean(image[:, :, 1])
33
  meanb = np.mean(image[:, :, 2])
34
 
35
- # Convert to HSI and compute HHR
36
- hsv_image = rgb2hsv(image)
37
- hue = hsv_image[:, :, 0]
38
- high_hue_pixels = np.sum(hue > 0.95)
39
- total_pixels = hue.size
40
- HHR = high_hue_pixels / total_pixels
41
-
42
- # Convert to Grayscale
43
- gray_image = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
44
-
45
- # Compute Entropy and Brightness
46
- Ent = shannon_entropy(gray_image)
47
- B = np.mean(gray_image)
48
-
49
- # Sliding window filters
50
- def g1_filter(window):
51
- return window[4] - np.min(window)
52
-
53
- def g2_filter(window):
54
- return np.max(window) - window[4]
55
-
56
- def g3_filter(window):
57
- return window[4] - np.mean(window)
58
-
59
- def g4_filter(window):
60
- return np.std(window)
61
-
62
- def g5_filter(window):
63
- return window[4]
64
-
65
- g1 = generic_filter(gray_image, g1_filter, size=3).mean()
66
- g2 = generic_filter(gray_image, g2_filter, size=3).mean()
67
- g3 = generic_filter(gray_image, g3_filter, size=3).mean()
68
- g4 = generic_filter(gray_image, g4_filter, size=3).mean()
69
- g5 = generic_filter(gray_image, g5_filter, size=3).mean()
70
 
71
  return {
72
  "meanr": meanr,
73
  "meang": meang,
74
  "meanb": meanb,
75
- "HHR": HHR,
76
- "Ent": Ent,
77
- "B": B,
78
- "g1": g1,
79
- "g2": g2,
80
- "g3": g3,
81
- "g4": g4,
82
- "g5": g5,
83
  }
84
 
85
  # Prediction function
86
  def predict(image, gender, age):
87
- # Extract image features
88
- features = extract_features(image)
89
-
90
- # Encode gender using LabelEncoder
91
- gender_encoded = label_encoder.transform([gender])[0] # Transform the gender to the correct encoded value
92
-
93
- # Add gender and age to the feature dictionary
94
- features["gender"] = gender_encoded
95
- features["age"] = age
96
-
97
- # Convert features to DataFrame
98
- features_df = pd.DataFrame([features])
99
 
100
- # Scale the features using MinMaxScaler
101
- features_scaled = scaler.transform(features_df)
 
102
 
103
- # Predict using the SVR model
104
- prediction = svr_model.predict(features_scaled)
 
105
 
106
- # Return the prediction (you can format this depending on the model output)
107
- return prediction[0]
108
 
109
  # Gradio Interface
110
  interface = gr.Interface(
@@ -114,10 +57,10 @@ interface = gr.Interface(
114
  gr.Dropdown(choices=["Male", "Female"], label="Gender"),
115
  gr.Slider(0, 100, step=1, label="Age"),
116
  ],
117
- outputs="number",
118
  title="Image-based Prediction App",
119
- description="Upload an image, enter your gender and age, and get predictions using the pre-trained SVR model."
120
  )
121
 
122
  # Launch the app
123
- interface.launch()
 
1
  import gradio as gr
2
+ import joblib
3
  import numpy as np
4
  import pandas as pd
5
  import cv2
6
+ from sklearn.preprocessing import MinMaxScaler, LabelEncoder
7
+ from PIL import Image
 
 
 
 
 
 
 
 
 
 
 
8
 
9
+ # Load SVR model and other pickled files
10
+ svr_model = joblib.load('svr_model.pkl')
11
+ scaler = joblib.load('scaler.pkl')
12
+ label_encoder = joblib.load('label_encoder.pkl')
 
13
 
14
  # Feature extraction function
15
  def extract_features(image):
 
21
  meang = np.mean(image[:, :, 1])
22
  meanb = np.mean(image[:, :, 2])
23
 
24
+ # Additional feature extraction logic here...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
 
26
  return {
27
  "meanr": meanr,
28
  "meang": meang,
29
  "meanb": meanb,
30
+ # Add more extracted features...
 
 
 
 
 
 
 
31
  }
32
 
33
  # Prediction function
34
  def predict(image, gender, age):
35
+ try:
36
+ # Extract image features
37
+ features = extract_features(image)
38
+ features["gender"] = label_encoder.transform([gender])[0] # Transform gender label
39
+ features["age"] = age
 
 
 
 
 
 
 
40
 
41
+ # Normalize features using MinMaxScaler
42
+ features_df = pd.DataFrame([features])
43
+ scaled_features = scaler.transform(features_df)
44
 
45
+ # Make prediction using the SVR model
46
+ prediction = svr_model.predict(scaled_features)
47
+ return prediction[0]
48
 
49
+ except Exception as e:
50
+ return f"Error: {str(e)}"
51
 
52
  # Gradio Interface
53
  interface = gr.Interface(
 
57
  gr.Dropdown(choices=["Male", "Female"], label="Gender"),
58
  gr.Slider(0, 100, step=1, label="Age"),
59
  ],
60
+ outputs="label",
61
  title="Image-based Prediction App",
62
+ description="Upload an image, enter your gender and age, and get predictions using the pre-trained model."
63
  )
64
 
65
  # Launch the app
66
+ interface.launch(share=True)