Views
No views yet
Research artifact — do not use for medical, fitness, or individual assessment. Trained on celebrity images; under-predicts heavier subjects by 14-15 kg.
1git clone https://github.com/shubhodeepcx/weight-from-image && cd weight-from-image
2pip install -r requirements.txt
3huggingface-cli download arkodeep/celeb-fbi-weight-resnet50 --local-dir ckpts
4python -m src.predict --ckpt ckpts/hybrid_resnet50_best.pt --image photo.jpg --height-cm 175Linear(2048→256) → ReLU → Dropout(0.3) → Linear(256→1).FusionRegressor): CNN 2048-d penultimate features
concatenated with a small MLP over a 7-d anthropometric vector → shared head.pose_valid flag. Extracted with
MediaPipe PoseLandmarker (Tasks API, 33-point BlazePose). Normalising by
torso length makes them invariant to camera distance (a single image has no
absolute scale).alecccdd/celeb-fbi) — 7,208 full-body celebrity photos.weight (kg, target), height (cm, for BMI), gender, age;
missing values use a -1 sentinel and are dropped (units confirmed kg/cm in EDA).id checked across splits — no id shared. Residual
risk remains: a celebrity may appear under multiple ids, so subject-level
leakage cannot be fully excluded (documented limitation).| Model | MAE (kg) | RMSE (kg) | Pearson r | R² | BMI-band acc |
|---|---|---|---|---|---|
| A — CNN only | 8.11 | 12.51 | 0.635 | 0.402 | 0.626 |
| B — Anthropometric only (XGBoost) | 9.73 | 13.84 | 0.520 | 0.267 | 0.558 |
| A+B — late fusion | 8.35 | 12.22 | 0.657 | 0.429 | 0.614 |
| A+B — feature fusion | 8.01 | 12.49 | 0.641 | 0.403 | 0.624 |
| Band | MAE (kg) | n |
|---|---|---|
| underweight | 6.3 | 107 |
| normal | 6.1 | 381 |
| overweight | 14.1 | 66 |
| obese | 15.4 | 66 |
pip install -r requirements.txt*_best.pt, written to the Drive cache during
training) and the cached pose-feature parquets.notebooks/97_colab_eval.ipynb (or the equivalent src.eval calls) — it
regenerates the ablation table, BMI confusion matrices, error-by-group charts,
and the worst-k grid into reports/.