File size: 1,135 Bytes
8275409
9e427ef
6e2976c
8275409
 
6e2976c
 
8275409
9e427ef
 
8275409
 
6e2976c
8275409
6e2976c
8275409
6e2976c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
---
title: FacialKeypointDetectionCNN
emoji: πŸ™‚
colorFrom: red
colorTo: red
sdk: streamlit
app_file: src/streamlit_app.py
pinned: false
short_description: 'Predict facial keypoints from an uploaded face image '
license: mit
---

# πŸ™‚ Facial Keypoints Detection (CNN)

This app predicts **facial keypoints** (eyes, eyebrows, nose, mouth) from a face image.

## What this project does
- Input: face image (grayscale or RGB)
- Output: 30 values (x/y coordinates for 15 facial keypoints)
- The app overlays keypoints on a **96Γ—96** image and shows the coordinates in a table.

## Files in this repo
- `app.py` β†’ Streamlit app
- `final_keypoints_cnn.keras` β†’ trained Keras model
- `target_cols.json` β†’ output column names (order of the 30 targets)
- `preprocess_config.json` β†’ preprocessing settings (image size, normalization)

## How to run locally
```bash
pip install -r requirements.txt
streamlit run app.py
Preprocessing (same as training)
Convert to grayscale

Resize to 96Γ—96

Normalize pixels: x / 255.0

Model predicts normalized coordinates

Convert back to pixel space: y = y * 48 + 48

Clip to valid range: [0, 96]