Spaces:
Runtime error
Runtime error
Add bias correction for age predictions - Model was over-predicting ages due to aggressive sample weighting - Apply correction formula to return realistic ages - Show both corrected and raw predictions for transparency
Browse files
app.py
CHANGED
|
@@ -80,10 +80,27 @@ def predict_age(image: Image.Image):
|
|
| 80 |
else:
|
| 81 |
pred = float(pred)
|
| 82 |
|
| 83 |
-
#
|
| 84 |
-
|
| 85 |
raw_output = float(pred)
|
| 86 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 87 |
return predicted_age, raw_output
|
| 88 |
|
| 89 |
|
|
@@ -91,12 +108,12 @@ demo = gr.Interface(
|
|
| 91 |
fn=predict_age,
|
| 92 |
inputs=gr.Image(type='pil', label='Face image (crop to face for best results)'),
|
| 93 |
outputs=[
|
| 94 |
-
gr.Number(label='Predicted age (years)'),
|
| 95 |
-
gr.Number(label='Raw model output')
|
| 96 |
],
|
| 97 |
examples=[],
|
| 98 |
-
title='UTKFace Age Estimator',
|
| 99 |
-
description='Upload a cropped face image and the model will predict age in years.
|
| 100 |
)
|
| 101 |
|
| 102 |
if __name__ == '__main__':
|
|
|
|
| 80 |
else:
|
| 81 |
pred = float(pred)
|
| 82 |
|
| 83 |
+
# Apply bias correction - model is trained with aggressive sample weighting
|
| 84 |
+
# that causes it to predict too old ages consistently
|
| 85 |
raw_output = float(pred)
|
| 86 |
|
| 87 |
+
# Bias correction based on dataset analysis
|
| 88 |
+
if 50 <= pred <= 65:
|
| 89 |
+
# Model heavily biased toward 50-60 range, correct aggressively
|
| 90 |
+
corrected_age = pred * 0.6 - 10
|
| 91 |
+
elif pred > 65:
|
| 92 |
+
# Very old predictions, moderate correction
|
| 93 |
+
corrected_age = pred * 0.7 - 5
|
| 94 |
+
else:
|
| 95 |
+
# Already in reasonable range
|
| 96 |
+
corrected_age = pred
|
| 97 |
+
|
| 98 |
+
# Ensure reasonable bounds
|
| 99 |
+
corrected_age = max(1, min(100, corrected_age))
|
| 100 |
+
|
| 101 |
+
# Return two separate values to match the two gr.Number outputs
|
| 102 |
+
predicted_age = round(corrected_age, 1)
|
| 103 |
+
|
| 104 |
return predicted_age, raw_output
|
| 105 |
|
| 106 |
|
|
|
|
| 108 |
fn=predict_age,
|
| 109 |
inputs=gr.Image(type='pil', label='Face image (crop to face for best results)'),
|
| 110 |
outputs=[
|
| 111 |
+
gr.Number(label='Predicted age (years) - Bias Corrected'),
|
| 112 |
+
gr.Number(label='Raw model output (before correction)')
|
| 113 |
],
|
| 114 |
examples=[],
|
| 115 |
+
title='UTKFace Age Estimator - With Bias Correction',
|
| 116 |
+
description='Upload a cropped face image and the model will predict age in years. The model has been trained with sample weighting that causes age bias, so bias correction is applied to the final prediction. The raw output shows the uncorrected model prediction.'
|
| 117 |
)
|
| 118 |
|
| 119 |
if __name__ == '__main__':
|