A production-ready implementation of InvisPose that enables real-time, camera-free full-body tracking through walls using commodity WiFi mesh routers and CSI signals, with advanced analytics like fall detection and multi-person tracking.
Project Overview#
WiFi DensePose is a revolutionary computer vision alternative that captures and analyzes Channel State Information (CSI) from WiFi signals, combined with deep learning models to reconstruct dense human pose keypoints indoors. The system addresses privacy invasion and environmental limitations of traditional camera-based pose estimation systems.
Core Value: Leverage existing WiFi infrastructure (routers) to achieve sub-second (<50ms) multi-person tracking in non-line-of-sight, dark, or occluded environments. The project provides both Python and Rust implementations, with the latter achieving hundreds of times speed improvement, suitable for edge device deployment.
Core Features#
Sensing Capabilities#
- Camera-free Pose Estimation: Generate dense human poses using only WiFi CSI signals
- Real-time Processing: End-to-end latency <50ms, supports 30 FPS
- Multi-person Tracking: Track up to 10 individuals simultaneously with identity consistency
- Through-wall Sensing: 94.2% accuracy in non-line-of-sight environments (vs cameras)
Advanced Analytics#
- Fall Detection: 96.5% sensitivity, 94.1% specificity, with automatic alerts
- Activity Recognition: Identify specific actions (sitting, standing, walking, etc.)
- Occupancy Monitoring: Real-time counting of people and positions in zones
- Vital Sign Detection: Detect 4-60 BPM breathing rate and heartbeat (for rescue scenarios)
Enterprise Features#
- REST API & WebSocket: Standardized data interfaces and real-time streaming
- Authentication & Security: JWT auth, rate limiting, data encryption
- Environment Calibration: Automated tools to adapt to multipath effects in different spaces
- Hardware Abstraction: Compatible with Intel 5300/7260, Atheros, and other NICs plus commercial routers
Performance Metrics#
| Metric | Value |
|---|---|
| Pose Detection Accuracy | 94.2% |
| Person Tracking Accuracy | 91.8% |
| Average Processing Time | 45.2ms/frame |
| 95th Percentile Latency | 67ms |
| 99th Percentile Latency | 89ms |
| Max Concurrent Connections | 1000+ WebSocket |
| API Throughput | 10,000 requests/min |
Rust v2 Performance Optimization#
- CSI preprocessing speed: ~1000x faster
- Full pipeline speed: ~810x faster
- Memory usage reduced from ~500MB to ~100MB
- Binary size: ~10MB
- WASM deployment support
Application Scenarios#
Healthcare#
- Non-intrusive fall detection for nursing homes/home care
- Activity recognition and inactivity monitoring
- Privacy-preserving data processing
Smart Fitness#
- Home workout form correction and counting
- Pose analysis, form scoring, intensity metrics
Smart Home#
- Automation based on occupant position and behavior
- Occupancy monitoring and activity detection
Security#
- Personnel detection through walls/smoke
- Anomaly behavior detection
Disaster Rescue (WiFi-Mat Module)#
- Survivor detection under debris (breathing 4-60 BPM, heartbeat)
- 3D localization (depth up to 5 meters)
- START triage automatic classification
Installation & Quick Start#
Installation Methods#
# Using pip (recommended)
pip install wifi-densepose
# GPU acceleration version
pip install wifi-densepose[gpu]
# Development dependencies
pip install wifi-densepose[dev]
# Install from source
git clone https://github.com/ruvnet/wifi-densepose.git
cd wifi-densepose
pip install -r requirements.txt
pip install -e .
# Docker deployment
docker pull ruvnet/wifi-densepose:latest
docker run -p 8000:8000 ruvnet/wifi-densepose:latest
System Requirements#
- Python 3.8+
- OS: Linux (Ubuntu 18.04+), macOS (10.15+), Windows 10+
- Memory: Minimum 4GB RAM, recommended 8GB+
- Storage: 2GB available space
- Network: WiFi interface with CSI capability
- GPU: Optional but recommended (NVIDIA CUDA)
Quick Start Code#
from wifi_densepose import WiFiDensePose
# Initialize with default configuration
system = WiFiDensePose()
# Start pose estimation
system.start()
# Get latest pose data
poses = system.get_latest_poses()
print(f"Detected {len(poses)} people")
# Stop the system
system.stop()
Mock Mode (Development without Hardware)#
export MOCK_HARDWARE=true
export MOCK_POSE_DATA=true
pytest tests/ --mock-hardware
CLI Command Line Tool#
# Server management
wifi-densepose start # Start API server
wifi-densepose status # Check server status
wifi-densepose stop # Stop server
wifi-densepose version # Display version info
# Configuration management
wifi-densepose config show # Show current config
wifi-densepose config validate # Validate config file
wifi-densepose config init # Create default config
# Database management
wifi-densepose db init # Initialize database
wifi-densepose db migrate # Run migrations
wifi-densepose db status # Check database status
API Endpoints#
REST API#
GET /api/v1/pose/latest- Get latest pose dataGET /api/v1/pose/history- Get historical dataGET /api/v1/pose/zones/{zone_id}- Get zone-specific dataGET /api/v1/system/status- System health and statusPOST /api/v1/system/calibrate- Calibrate environmentGET /api/v1/analytics/summary- Analytics dashboard data
WebSocket Streams#
ws://localhost:8000/ws/pose/stream- Real-time pose dataws://localhost:8000/ws/analytics/events- Analytics events (falls, alerts)ws://localhost:8000/ws/system/status- System status updates
Key Configuration#
# Application settings
APP_NAME=WiFi-DensePose API
ENVIRONMENT=production
DEBUG=false
# Server settings
HOST=0.0.0.0
PORT=8000
WORKERS=4
# Security settings
SECRET_KEY=your-secure-secret-key-here
JWT_ALGORITHM=HS256
JWT_EXPIRE_HOURS=24
# Hardware settings
WIFI_INTERFACE=wlan0
CSI_BUFFER_SIZE=1000
HARDWARE_POLLING_INTERVAL=0.1
# Pose estimation settings
POSE_CONFIDENCE_THRESHOLD=0.7
POSE_PROCESSING_BATCH_SIZE=32
POSE_MAX_PERSONS=10
# Feature toggles
ENABLE_AUTHENTICATION=true
ENABLE_RATE_LIMITING=true
ENABLE_WEBSOCKETS=true
ENABLE_REAL_TIME_PROCESSING=true
System Architecture#
- WiFi Router (CSI Source) - Multiple routers as CSI data sources
- CSI Data Collector - Hardware interface to collect CSI data
- Signal Processor - Phase sanitization and noise filtering
- Neural Network Model - DensePose Head for pose estimation
- Person Tracker - Multi-object tracker maintaining person identity
- Output Layer - REST API / WebSocket / Analytics
Core Components#
- CSI Processor: Extract and process channel state information from WiFi signals
- Phase Sanitizer: Remove hardware-specific phase offsets and noise
- DensePose Neural Network: Convert CSI data to human pose keypoints
- Multi-Person Tracker: Maintain consistent person identity across frames
- Analytics Engine: Advanced analytics including fall detection and activity recognition
Hardware Support#
Recommended Routers#
- ASUS AX6000 (RT-AX88U) - Excellent CSI quality
- Netgear Nighthawk AX12 - High performance
- TP-Link Archer AX73 - Budget option
- Ubiquiti UniFi 6 Pro - Enterprise grade
CSI-Capable Devices#
- Intel WiFi cards (5300, 7260, 8260, 9260)
- Atheros AR9300 series
- Broadcom BCM4366 series
Physical Deployment Recommendations#
- Router height: 2-3 meters
- Device spacing: 5-10 meters
- Ensure antenna positioning for maximum signal diversity
Python SDK Example#
from wifi_densepose import WiFiDensePoseClient
# Initialize client
client = WiFiDensePoseClient(base_url="http://localhost:8000")
# Get latest poses (with confidence filtering)
poses = client.get_latest_poses(min_confidence=0.7)
print(f"Detected {len(poses)} people")
# Get zone occupancy
occupancy = client.get_zone_occupancy("living_room")
print(f"Living room occupancy: {occupancy.person_count}")
Testing & Quality#
- Unit tests (95% coverage)
- Integration tests
- End-to-end tests
- Performance tests
- Mock tests (development without hardware)
# Run tests
pytest --cov=wifi_densepose --cov-report=html
# Load testing
ab -n 10000 -c 100 http://localhost:8000/api/v1/pose/latest