Introduction
The world was introduced to Touch ID in 2013 and Face ID in 2017. We are designing a new device which doesn't use any of these but it still knows you. How? It is based on your body. Our product has 10,752 pressure sensors, which help us know who is using the bed.
Motivation
We saw that Apple has innovated Touch ID and Face ID which are now used by multiple other producers of same and similar industry. Soon Voice ID will also become common. But the problem with all of these is that you need to intervene every time you want to prove your identity to your device and this was partially avoided in mobile and laptop industries as your face will always be in the field of view of the camera.
Our goal and tasks are different, we don't want to intervene in their private time like sleep.
So we aspire to build a system that can draw a decision boundary between 2 people's body curves and pressure distribution. This is done by building a function that can map pressure to 0, 1 classes.
f : ℝ10752 → {0, 1}, x ↦ f(x)This is achieved by feature extraction over classical machine learning.
Approach
Our bed is integrated with 10,752 pressure sensors that span the whole area of the bed. Similar to how your camera captures the whole face when you are using your device, our bed captures the whole pressure distribution of your body. So when you sleep on the bed we know who is sleeping out of the registered users.
The pipeline would look like:
- Collect initial bed on-boarding process in which we collect 300 samples for Person 1 and Person 2 across each posture which would take 300 seconds.
- Extract 94 defined features that compress raw pressure information into meaningful quantities.
- Train a model that draws a boundary in the vector space using StandardScaler and PCA to reduce to 15 principal components.
- During usage, features are extracted once the person gets on to the bed and the model is inferenced. Based on that, decisions will be taken.
Experimentation
First of all, it is about extracting meaningful information from pressure data that can help separate people. Few intuitive features are weight, height and width but there is a huge problem with it, that is comfort. The more data integrity you want, you lose the comfort. If you have pressure sensors on the floor and the person is right on top of the pressure sensor there is no need for machine learning in it. We provide comfort with latex and foam, but this comes at a cost — the true pressure signal Ptrue(d) is convolved with the foam's impulse response h and corrupted by sensor noise η(d):
P_raw(d) = (P_true(d) ∗ h) + η(d) (1)
where h is a Gaussian kernel whose spread σ_h ∝ d, with d being the foam depth. The deeper the foam, the wider the dispersion and the more the body's true pressure footprint is smeared and noise is also a function of depth. You can't place sensors above the cushion due to physical constraints, so those features are never sufficient but they are few of the important features.
Each raw pressure frame of shape 112 × 96 is first normalised by dividing by 4096. Sensor outliers above the 99.5th percentile are replaced by nearest-neighbour interpolation using KDTrees for inferencing times below 7ms on Raspberry Pi 5, and the active body region of 112×48 columns is extracted by locating the widest pressure peak along the column axis. The raw signal-to-noise ratio of the data is 0.37 dB, directly reflecting this foam-induced distortion.
Other than that we have extracted other pressure features like sum of pressure over certain regions of the pressure sensors as a person's position along the length wouldn't vary much. Formally, the bed is partitioned into R = 7 anatomical regions {Ωr}Rr=1 (set of sensor coordinates belonging to each region and regions are divided based on blocks) and for each region we compute the regional pressure sum Gr and its fraction of total pressure Gr/F1. These regional features are combined with global statistics — total pressure F1, pressure centroid, aspect ratio, variance, and kurtosis also with other position invariant features like entropy, eccentricity and other gradient features — yield 94 handcrafted features per frame.
These features are sent to one of the simplest yet powerful and efficient classical machine learning models. This pipeline applies StandardScaler followed by PCA retaining 15 principal components, which together capture approximately 97% of the variance in the feature space (we are doing PCA rather than just taking 15 best is because we don't know which 15 features are good at differentiating given pair of users, so when features are extracted from the data collected from the on-boarding process we extract features and perform PCA). Before feature extraction, model training and inference, we apply image processing techniques to remove noise due to physical problems and pressure from unwanted places.
The best performing model — an ExtraTrees classifier with 200 trees and maximum depth 15 — was trained on 530 samples (300 from Person 1, 230 from Person 2) and evaluated on a held-out test set of 439 samples (198 from Person 1, 241 from Person 2) recorded in entirely separate sessions. A naive majority baseline on this data yields 55% accuracy; our model achieved 88%, a gain of 33 percentage points over the baseline. The full classification results are reported in Table 1.
| Precision | Recall | F1-score | Support | |
|---|---|---|---|---|
| Person 1 | 0.96 | 0.77 | 0.86 | 198 |
| Person 2 | 0.84 | 0.98 | 0.90 | 241 |
| Macro avg | 0.90 | 0.87 | 0.88 | 439 |
Table 1. Classification results on the held-out test set.
Notably, the model achieves high recall for Person 2 (0.98) despite Person 2 being the minority class in training (230 vs 300 samples), indicating the model is learning genuinely discriminative pressure features rather than defaulting to the majority class.
Limitations and Future Work
It is always a limitation of better accuracy and false positives when it comes to the field of machine learning. Other than that there are few others, most notably out-of-label data which is again an open problem in the field of machine learning. Our main problem is what if the user has a child, pet dog or any guests around. They will be recognized as maybe Person 1 or Person 2 based on the similarities.
Our next phase would be to devise a method that could separate children and pets from the actual users. This could be done by understanding the convex hull area and other features that explain these things but when it comes to guests it is a difficult problem which we want to solve not only with the use of confidence of the model but find a different way to do it.
Conclusion
Pressure ID will help us know who it is without intervening into their personal time, sleep time or movie time. To know who they are without disturbing them we need to get data of something they do without their conscious awareness, which is when they lie down on the bed. With 10,752 sensors, 94 engineered features, and 88% accuracy on held-out sessions, we do it today.
Pressure ID is a research project by Water Robotics. Cama is a physically adaptive sleep system with 10,752 pressure sensors and real-time identity inference. Both are built by Water Robotics.