
Client
Orbis Health
Duration
2 Weeks
Year
2026
AI Posture Detection from a Ceiling Camera
Orbis Health moved from having no usable training data at all to a lightweight, real-time posture detection system that reliably distinguishes standing, sitting, and lying down from directly overhead, without wires or wearable sensors on the patient.
Challenges
Almost No Data to Learn From
No Labeled Training Data
Only one video of one person in one room was available. No manual labels existed to train a standard classifier
Extreme Data Scarcity
A single video source meant any model trained directly on it would overfit to one person and one bed setup
Unusual Camera Geometry
Straight-down ceiling view breaks standard pose-estimation and off-the-shelf posture models built for eye-level photos
Class Imbalance
Real patient behavior skewed the data heavily toward “lying down,” under-representing standing and sitting
Poor Generalization Risk
Early models confused “lying down” with “sitting” when tested on a different person in the same room
Edge Deployment Constraints
The final system had to run in real time on a low-power Jetson Orin device, ruling out large, slow models
Solution
A Three-Part Pipeline Built for Data Scarcity
The team designed a pipeline that automatically labeled the raw video, trained a lightweight classifier on top of an existing detector, and deliberately sourced a second dataset that matched the camera's viewing angle rather than simply adding more data.
Automatic Data Labeling
Detects and crops the person in each frame, then uses a weighted, agreement-checked ensemble of zero-shot vision-language models to label posture, discarding any frame that isn't confidently and consistently classified
Automatic Data Labeling
Detects and crops the person in each frame, then uses a weighted, agreement-checked ensemble of zero-shot vision-language models to label posture, discarding any frame that isn't confidently and consistently classified
Lightweight Posture Classifier
Reuses YOLO's internal learned features instead of retraining from scratch; only a small trainable head is fit to the three posture classes, avoiding overfitting on a small dataset
Lightweight Posture Classifier
Reuses YOLO's internal learned features instead of retraining from scratch; only a small trainable head is fit to the three posture classes, avoiding overfitting on a small dataset
Targeted Data Augmentation
Squeezes additional variety out of a small training set, while deliberately excluding rotation, since the camera angle itself carries the signal that separates lying from sitting
Targeted Data Augmentation
Squeezes additional variety out of a small training set, while deliberately excluding rotation, since the camera angle itself carries the signal that separates lying from sitting
Angle-Matched Domain Generalization
Adds real variety across 5 people and 5 rooms filmed from a similar overhead-style angle, after a mismatched public dataset made results worse instead of better
Angle-Matched Domain Generalization
Adds real variety across 5 people and 5 rooms filmed from a similar overhead-style angle, after a mismatched public dataset made results worse instead of better
Real-Time Edge Inference
Runs the full detect–extract–classify pipeline in ~30ms per frame (~27–28 FPS), fast enough for live clinical monitoring on-device
Real-Time Edge Inference
Runs the full detect–extract–classify pipeline in ~30ms per frame (~27–28 FPS), fast enough for live clinical monitoring on-device
Transformation
Before vs. After
No labels, no way to train a classifier
Automated ensemble labeling pipeline (610 clean, verified images)
Single-person, single-room training data
Domain-generalized dataset via angle-matched FallDataset
Confidently wrong zero-shot models used blindly
Multi-model agreement checks reject unreliable labels
Fine-tuning the full backbone hurt performance
Frozen backbone + small trainable head, tuned for small data
Eye-level datasets added, accuracy dropped sharply
Camera-angle-matched dataset added, accuracy jumped
Vision-language models too slow for live use
Lightweight classifier runs in real time on Jetson Orin
Results
The Numbers Speak
Final accuracy after domain generalization
Clean, auto-labeled training images
Per-frame inference time (~27–28 FPS)
Posture classes reliably distinguished
Technology
Stack at a Glance
Person Detection & Feature Extraction
YOLO (frozen backbone)
Zero-Shot Labeling
MetaCLIP 2 + OpenCLIP Ensemble
Posture Classification
Custom 2-Layer Trainable Head
Domain Generalization
FallDataset (angle-matched transfer data)
Data Augmentation
Flip, Color Jitter, Crop, Blur, Random Erasing
Deployment Target
NVIDIA Jetson Orin (on-device, real-time inference)
Outcome
What Our Client Gained
Our client moved from having no usable training data at all to a lightweight, real-time posture detection system that reliably distinguishes standing, sitting, and lying down from directly overhead, without wires or wearable sensors on the patient. By solving the data problem with careful automatic labeling, targeted augmentation, and angle-matched domain generalization instead of simply chasing more data, the team delivered a model accurate and fast enough to run live on low-power edge hardware, ready for real clinical deployment.
Discover More
AI-Accelerated Engineering with Real-World Impact.
We help businesses move faster, work smarter, and scale with confidence. Whether you're looking to automate operations, build AI-powered products, or modernise your data infrastructure, we'll map the fastest path to value.
© Technovate Global, All rights reserved.