WiFi-DensePose: Engineering Real-Time 3D Tracking Through Walls


WiFi-DensePose: Engineering Real-Time 3D Tracking Through Walls

ruvnet/wifi-densepose

2026-02-15

Imagine having the ability to "see" through walls or in pitch-black darkness without using a single camera. It sounds like science fiction, but by leveraging the CSI (Channel State Information) from standard WiFi signals, we can now map human poses in 3D.

Here is a breakdown of why this is a game-changer and how you can get your hands dirty with it.

From an engineering perspective, this isn't just a "cool trick." It solves three massive problems inherent in traditional computer vision

Privacy First
Unlike cameras, WiFi signals don't capture faces or identifying features. You get the "pose" without the "identity," which is a huge win for GDPR and privacy-sensitive apps.

Occlusion & Lighting
Cameras fail in the dark or when a wall is in the way. WiFi signals pass right through, making it perfect for security or elderly care.

Hardware Efficiency
It uses "commodity mesh routers." You don't need a $10,000 LiDAR sensor; you’re using the same signals that stream your Netflix movies.

To get this running, you’ll be dealing with a mix of signal processing and deep learning. The repository typically requires a Linux environment (Ubuntu is usually the safest bet) and hardware that supports CSI extraction (like Intel 5300 or certain TP-Link routers).

Python 3.8+

PyTorch (for the heavy lifting of the DensePose model)

CSI Extraction Tool
You'll need specific firmware to let your WiFi card "leak" the raw signal data.

# Clone the repo
git clone https://github.com/ruvnet/wifi-densepose.git
cd wifi-densepose

# Install dependencies
pip install -r requirements.txt

The "magic" happens when you convert raw WiFi amplitudes and phases into a tensor that a neural network can understand. Here’s a simplified conceptual example of how you might load the signal data and pass it through the model

import torch
from models.invispose import DensePoseEstimator

# 1. Initialize the model
# In a real scenario, you'd load pre-trained weights
model = DensePoseEstimator(pretrained=True)
model.eval()

def process_wifi_signal(csi_data):
    """
    csi_data: Raw Channel State Information from your router
    Returns: A 3D pose estimation
    """
    # Convert raw signal to a tensor (Pre-processing is key here!)
    # WiFi signals are complex numbers (amplitude and phase)
    signal_tensor = torch.from_numpy(csi_data).float().unsqueeze(0)
    
    with torch.no_grad():
        # Predict the UV coordinates (DensePose output)
        output = model(signal_tensor)
        
    return output

print("System ready for real-time tracking.")

Smart Homes
Automatically adjust lighting or heating based on where a person is sitting, even if they are under a blanket or in another room.

Healthcare
Detecting falls in bathrooms or bedrooms without infringing on the patient's privacy.

Gaming
True "room-scale" motion tracking without needing to wear sensors or be in the line of sight of a camera.

This project is a perfect example of Software-Defined Sensing. We are taking hardware meant for one thing (internet) and using software to turn it into a high-precision sensor.


ruvnet/wifi-densepose