A computer-vision experiment, a mobile prototype, and a lesson in how easily a model can learn the wrong clue.
- Context
- University neural-networks project
- My contribution
- Model experiments, API and mobile integration, saliency-map analysis
- Models
- MobileNet · ResNet-50 · earlier multi-output CNN experiments
- Archive
- Report and saliency outputs recovered · source repository private
The finding that stayed with me
A ring became
an age shortcut.
The model’s attention gathered around an accessory rather than a meaningful biological signal.

The report records the ring as a prominent feature for the model’s “female” prediction and notes that the age saliency map also attended to rings, tending toward an older classification.
I remember the effect as roughly “ten years older”. That size was not reported, so I keep it as a recollection rather than a measured result.
Where it started
The 11K Hands dataset contained 11,076 palmar and dorsal hand images from 190 people. We explored whether convolutional networks could predict age, skin-colour categories and the dataset’s binary gender labels from those images.
For the age experiment, the report restricted the data from ages 18–75 to ages 18–30 while retaining roughly 99% of the images. The code and paper sometimes use “race” or “ethnicity” where the actual labels are skin-colour categories. Those terms are not interchangeable, and none of these predictions establish identity.
From experiment
to interface.
The project connected modelling, a mobile prototype and tools for questioning the output.
Model
MobileNet classifiers for the reported gender and skin-colour tasks, with ResNet-50 for continuous age prediction.
Connect
An API linked the model to an iOS / Android app prototype so a hand image could move through the full pipeline.
Inspect
Gradient saliency maps showed which pixels most influenced an output and exposed possible shortcuts.
What the numbers said
The headline classification scores looked encouraging. The context made them much less simple.
| Task | Model | Reported result | What matters |
|---|---|---|---|
| Gender label | MobileNet | 0.88 accuracy | Female F1 0.90; male F1 0.86. |
| Skin colour | MobileNet | 0.97 accuracy | The dataset was heavily concentrated in the “medium” category. |
| Age | ResNet-50 | MAE 1.203 years R² −0.2169 | The small average error sat beside a negative R², meaning the model did not beat a mean-value baseline. |
The negative R² is the most revealing result. A number that appears impressive in isolation can tell a very different story when another metric and the data distribution are considered.
The shortcut
was not unique.
Painted nails also became a strong visual cue for the model’s “female” label.

What the ring taught me
A plausible prediction can come from an implausible shortcut. A model may improve its score by learning correlations around jewellery, nail polish or a narrow age distribution rather than anything we intended it to learn.
Saliency maps do not prove causation, but they gave us a way to challenge the model. The useful question became less “is the output correct?” and more “what evidence is the system using, and would that evidence survive outside this dataset?”
Looking back critically
The lasting value of palmNet is the experience of building an image-to-interface pipeline and then interrogating what it had learned. It is not presented as a reliable or appropriate system for inferring personal characteristics from a photograph.
Dataset labels, representation, privacy and consent all matter. A convincing interface, a high aggregate accuracy or a bright attention map is not evidence that a demographic prediction is fair, valid or useful.
What is preserved in the project archive?
The recovered report documents the reported models, results and original saliency figures. The two surviving notebooks preserve a Keras multi-output experiment and a separate PyTorch MobileNetV3 age-group experiment; those notebook copies contain no saved training outputs.
The app screens and API implementation have not been recovered. The report and notebooks also represent different iterations of the project, so this page names which source supports each part rather than collapsing them into one architecture.