feat: Complete Rust port of WiFi-DensePose with modular crates
Major changes: - Organized Python v1 implementation into v1/ subdirectory - Created Rust workspace with 9 modular crates: - wifi-densepose-core: Core types, traits, errors - wifi-densepose-signal: CSI processing, phase sanitization, FFT - wifi-densepose-nn: Neural network inference (ONNX/Candle/tch) - wifi-densepose-api: Axum-based REST/WebSocket API - wifi-densepose-db: SQLx database layer - wifi-densepose-config: Configuration management - wifi-densepose-hardware: Hardware abstraction - wifi-densepose-wasm: WebAssembly bindings - wifi-densepose-cli: Command-line interface Documentation: - ADR-001: Workspace structure - ADR-002: Signal processing library selection - ADR-003: Neural network inference strategy - DDD domain model with bounded contexts Testing: - 69 tests passing across all crates - Signal processing: 45 tests - Neural networks: 21 tests - Core: 3 doc tests Performance targets: - 10x faster CSI processing (~0.5ms vs ~5ms) - 5x lower memory usage (~100MB vs ~500MB) - WASM support for browser deployment
This commit is contained in:
507
v1/docs/implementation-plan.md
Normal file
507
v1/docs/implementation-plan.md
Normal file
@@ -0,0 +1,507 @@
|
||||
# WiFi-DensePose Full Implementation Plan
|
||||
|
||||
## Executive Summary
|
||||
|
||||
This document outlines a comprehensive plan to fully implement WiFi-based pose detection functionality in the WiFi-DensePose system. Based on the system review, while the architecture and infrastructure are professionally implemented, the core WiFi CSI processing and machine learning components require complete implementation.
|
||||
|
||||
## Current System Assessment
|
||||
|
||||
### ✅ Existing Infrastructure (90%+ Complete)
|
||||
- **API Framework**: FastAPI with REST endpoints and WebSocket streaming
|
||||
- **Database Layer**: SQLAlchemy models, migrations, PostgreSQL/SQLite support
|
||||
- **Configuration Management**: Environment variables, settings, logging
|
||||
- **Service Architecture**: Orchestration, health checks, metrics collection
|
||||
- **Deployment Infrastructure**: Docker, Kubernetes, monitoring configurations
|
||||
|
||||
### ❌ Missing Core Functionality (0-40% Complete)
|
||||
- **WiFi CSI Data Collection**: Hardware interface implementation
|
||||
- **Signal Processing Pipeline**: Real-time CSI processing algorithms
|
||||
- **Machine Learning Models**: Trained DensePose models and inference
|
||||
- **Domain Adaptation**: CSI-to-visual feature translation
|
||||
- **Real-time Processing**: Integration of all components
|
||||
|
||||
## Implementation Strategy
|
||||
|
||||
### Phase-Based Approach
|
||||
|
||||
The implementation will follow a 4-phase approach to minimize risk and ensure systematic progress:
|
||||
|
||||
1. **Phase 1: Hardware Foundation** (4-6 weeks)
|
||||
2. **Phase 2: Signal Processing Pipeline** (6-8 weeks)
|
||||
3. **Phase 3: Machine Learning Integration** (8-12 weeks)
|
||||
4. **Phase 4: Optimization & Production** (4-6 weeks)
|
||||
|
||||
## Hardware Requirements Analysis
|
||||
|
||||
### Supported CSI Hardware Platforms
|
||||
|
||||
Based on 2024 research, the following hardware platforms support CSI extraction:
|
||||
|
||||
#### Primary Recommendation: ESP32 Series
|
||||
- **ESP32/ESP32-S2/ESP32-C3/ESP32-S3/ESP32-C6**: All support CSI extraction
|
||||
- **Advantages**:
|
||||
- Dual-core 240MHz CPU with AI instruction sets
|
||||
- Neural network support for edge processing
|
||||
- BLE support for device scanning
|
||||
- Low cost and widely available
|
||||
- Active community and documentation
|
||||
|
||||
#### Secondary Options:
|
||||
- **NXP 88w8987 Module**: SDIO 3.0 interface, requires SDK 2.15+
|
||||
- **Atheros-based Routers**: With modified OpenWRT firmware
|
||||
- **Intel WiFi Cards**: With CSI tool support (Linux driver modifications)
|
||||
|
||||
#### Commercial Router Integration:
|
||||
- **TP-Link WR842ND**: With special OpenWRT firmware containing recvCSI/sendData functions
|
||||
- **Custom Router Deployment**: Modified firmware for CSI data extraction
|
||||
|
||||
## Detailed Implementation Plan
|
||||
|
||||
### Phase 1: Hardware Foundation (4-6 weeks)
|
||||
|
||||
#### Week 1-2: Hardware Setup and CSI Extraction
|
||||
**Objective**: Establish reliable CSI data collection from WiFi hardware
|
||||
|
||||
**Tasks**:
|
||||
1. **Hardware Procurement and Setup**
|
||||
- Deploy ESP32 development boards as CSI receivers
|
||||
- Configure routers with CSI-enabled firmware
|
||||
- Set up test environment with controlled RF conditions
|
||||
|
||||
2. **CSI Data Collection Implementation**
|
||||
- Implement `src/hardware/csi_extractor.py`:
|
||||
- ESP32 CSI data parsing (amplitude, phase, subcarrier data)
|
||||
- Router communication protocols (SSH, SNMP, custom APIs)
|
||||
- Real-time data streaming over WiFi/Ethernet
|
||||
- Replace mock data generation with actual CSI parsing
|
||||
- Implement CSI data validation and error handling
|
||||
|
||||
3. **Router Interface Development**
|
||||
- Complete `src/hardware/router_interface.py`:
|
||||
- SSH connection management for router control
|
||||
- CSI data request/response protocols
|
||||
- Router health monitoring and status reporting
|
||||
- Implement `src/core/router_interface.py`:
|
||||
- Real CSI data collection replacing mock implementation
|
||||
- Multi-router support for spatial diversity
|
||||
- Data synchronization across multiple sources
|
||||
|
||||
**Deliverables**:
|
||||
- Functional CSI data extraction from ESP32 devices
|
||||
- Router communication interface with actual hardware
|
||||
- Real-time CSI data streaming to processing pipeline
|
||||
- Hardware configuration documentation
|
||||
|
||||
#### Week 3-4: Signal Processing Foundation
|
||||
**Objective**: Implement basic CSI preprocessing and validation
|
||||
|
||||
**Tasks**:
|
||||
1. **CSI Data Preprocessing**
|
||||
- Enhance `src/core/phase_sanitizer.py`:
|
||||
- Advanced phase unwrapping algorithms
|
||||
- Phase noise filtering specific to WiFi CSI
|
||||
- Temporal phase consistency correction
|
||||
|
||||
2. **Signal Quality Assessment**
|
||||
- Implement CSI signal quality metrics
|
||||
- Signal-to-noise ratio estimation
|
||||
- Subcarrier validity checking
|
||||
- Environmental noise characterization
|
||||
|
||||
3. **Data Validation Pipeline**
|
||||
- CSI data integrity checks
|
||||
- Temporal consistency validation
|
||||
- Multi-antenna correlation analysis
|
||||
- Real-time data quality monitoring
|
||||
|
||||
**Deliverables**:
|
||||
- Clean, validated CSI data streams
|
||||
- Signal quality assessment metrics
|
||||
- Preprocessing pipeline for ML consumption
|
||||
- Data quality monitoring dashboard
|
||||
|
||||
### Phase 2: Signal Processing Pipeline (6-8 weeks)
|
||||
|
||||
#### Week 5-8: Advanced Signal Processing
|
||||
**Objective**: Develop sophisticated CSI processing for human detection
|
||||
|
||||
**Tasks**:
|
||||
1. **Human Detection Algorithms**
|
||||
- Implement `src/core/csi_processor.py`:
|
||||
- Doppler shift analysis for motion detection
|
||||
- Amplitude variation patterns for human presence
|
||||
- Multi-path analysis for spatial localization
|
||||
- Temporal filtering for noise reduction
|
||||
|
||||
2. **Feature Extraction**
|
||||
- CSI amplitude and phase feature extraction
|
||||
- Statistical features (mean, variance, correlation)
|
||||
- Frequency domain analysis (FFT, spectrograms)
|
||||
- Spatial correlation between antenna pairs
|
||||
|
||||
3. **Environmental Calibration**
|
||||
- Background noise characterization
|
||||
- Static environment profiling
|
||||
- Dynamic calibration for environmental changes
|
||||
- Multi-zone detection algorithms
|
||||
|
||||
**Deliverables**:
|
||||
- Real-time human detection from CSI data
|
||||
- Feature extraction pipeline for ML models
|
||||
- Environmental calibration system
|
||||
- Performance metrics and validation
|
||||
|
||||
#### Week 9-12: Real-time Processing Integration
|
||||
**Objective**: Integrate signal processing with existing system architecture
|
||||
|
||||
**Tasks**:
|
||||
1. **Service Integration**
|
||||
- Update `src/services/pose_service.py`:
|
||||
- Remove mock data generation
|
||||
- Integrate real CSI processing pipeline
|
||||
- Implement real-time pose estimation workflow
|
||||
|
||||
2. **Streaming Pipeline**
|
||||
- Real-time CSI data streaming architecture
|
||||
- Buffer management for temporal processing
|
||||
- Low-latency processing optimizations
|
||||
- Data synchronization across multiple sensors
|
||||
|
||||
3. **Performance Optimization**
|
||||
- Multi-threading for parallel processing
|
||||
- GPU acceleration where applicable
|
||||
- Memory optimization for real-time constraints
|
||||
- Latency optimization for interactive applications
|
||||
|
||||
**Deliverables**:
|
||||
- Integrated real-time processing pipeline
|
||||
- Optimized performance for production deployment
|
||||
- Real-time CSI-to-pose data flow
|
||||
- System performance benchmarks
|
||||
|
||||
### Phase 3: Machine Learning Integration (8-12 weeks)
|
||||
|
||||
#### Week 13-16: Model Training Infrastructure
|
||||
**Objective**: Develop training pipeline for WiFi-to-pose domain adaptation
|
||||
|
||||
**Tasks**:
|
||||
1. **Data Collection and Annotation**
|
||||
- Synchronized CSI and video data collection
|
||||
- Human pose annotation using computer vision
|
||||
- Multi-person scenario data collection
|
||||
- Diverse environment data gathering
|
||||
|
||||
2. **Domain Adaptation Framework**
|
||||
- Complete `src/models/modality_translation.py`:
|
||||
- Load pre-trained visual DensePose models
|
||||
- Implement CSI-to-visual feature mapping
|
||||
- Domain adversarial training setup
|
||||
- Transfer learning optimization
|
||||
|
||||
3. **Training Pipeline**
|
||||
- Model training scripts and configuration
|
||||
- Data preprocessing for training
|
||||
- Loss function design for domain adaptation
|
||||
- Training monitoring and validation
|
||||
|
||||
**Deliverables**:
|
||||
- Annotated CSI-pose dataset
|
||||
- Domain adaptation training framework
|
||||
- Initial trained models for testing
|
||||
- Training pipeline documentation
|
||||
|
||||
#### Week 17-20: DensePose Integration
|
||||
**Objective**: Integrate trained models with inference pipeline
|
||||
|
||||
**Tasks**:
|
||||
1. **Model Loading and Inference**
|
||||
- Complete `src/models/densepose_head.py`:
|
||||
- Load trained DensePose models
|
||||
- GPU acceleration for inference
|
||||
- Batch processing optimization
|
||||
- Real-time inference pipeline
|
||||
|
||||
2. **Pose Estimation Pipeline**
|
||||
- CSI → Visual features → Pose estimation workflow
|
||||
- Temporal smoothing for consistent poses
|
||||
- Multi-person pose tracking
|
||||
- Confidence scoring and validation
|
||||
|
||||
3. **Output Processing**
|
||||
- Pose keypoint extraction and formatting
|
||||
- Coordinate system transformation
|
||||
- Output validation and filtering
|
||||
- API integration for real-time streaming
|
||||
|
||||
**Deliverables**:
|
||||
- Functional pose estimation from CSI data
|
||||
- Real-time inference pipeline
|
||||
- Validated pose estimation accuracy
|
||||
- API integration for pose streaming
|
||||
|
||||
#### Week 21-24: Model Optimization and Validation
|
||||
**Objective**: Optimize models for production deployment
|
||||
|
||||
**Tasks**:
|
||||
1. **Model Optimization**
|
||||
- Model quantization for edge deployment
|
||||
- Architecture optimization for latency
|
||||
- Memory usage optimization
|
||||
- Model ensembling for improved accuracy
|
||||
|
||||
2. **Validation and Testing**
|
||||
- Comprehensive accuracy testing
|
||||
- Cross-environment validation
|
||||
- Multi-person scenario testing
|
||||
- Long-term stability testing
|
||||
|
||||
3. **Performance Benchmarking**
|
||||
- Latency benchmarking
|
||||
- Accuracy metrics vs. visual methods
|
||||
- Resource usage profiling
|
||||
- Scalability testing
|
||||
|
||||
**Deliverables**:
|
||||
- Production-ready models
|
||||
- Comprehensive validation results
|
||||
- Performance benchmarks
|
||||
- Deployment optimization guide
|
||||
|
||||
### Phase 4: Optimization & Production (4-6 weeks)
|
||||
|
||||
#### Week 25-26: System Integration and Testing
|
||||
**Objective**: Complete end-to-end system integration
|
||||
|
||||
**Tasks**:
|
||||
1. **Full System Integration**
|
||||
- Integration testing of all components
|
||||
- End-to-end workflow validation
|
||||
- Error handling and recovery testing
|
||||
- System reliability testing
|
||||
|
||||
2. **API Completion**
|
||||
- Remove all mock implementations
|
||||
- Complete authentication system
|
||||
- Real-time streaming optimization
|
||||
- API documentation updates
|
||||
|
||||
3. **Database Integration**
|
||||
- Pose data persistence implementation
|
||||
- Historical data analysis features
|
||||
- Data retention and archival policies
|
||||
- Performance optimization
|
||||
|
||||
**Deliverables**:
|
||||
- Fully integrated system
|
||||
- Complete API implementation
|
||||
- Database integration for pose storage
|
||||
- System reliability validation
|
||||
|
||||
#### Week 27-28: Production Deployment and Monitoring
|
||||
**Objective**: Prepare system for production deployment
|
||||
|
||||
**Tasks**:
|
||||
1. **Production Optimization**
|
||||
- Docker container optimization
|
||||
- Kubernetes deployment refinement
|
||||
- Monitoring and alerting setup
|
||||
- Backup and disaster recovery
|
||||
|
||||
2. **Documentation and Training**
|
||||
- Deployment guide updates
|
||||
- User manual completion
|
||||
- API documentation finalization
|
||||
- Training materials for operators
|
||||
|
||||
3. **Performance Monitoring**
|
||||
- Production monitoring setup
|
||||
- Performance metrics collection
|
||||
- Automated testing pipeline
|
||||
- Continuous integration setup
|
||||
|
||||
**Deliverables**:
|
||||
- Production-ready deployment
|
||||
- Complete documentation
|
||||
- Monitoring and alerting system
|
||||
- Continuous integration pipeline
|
||||
|
||||
## Technical Requirements
|
||||
|
||||
### Hardware Requirements
|
||||
|
||||
#### CSI Collection Hardware
|
||||
- **ESP32 Development Boards**: 2-4 units for spatial diversity
|
||||
- **Router with CSI Support**: TP-Link WR842ND with OpenWRT firmware
|
||||
- **Network Infrastructure**: Gigabit Ethernet for data transmission
|
||||
- **Optional**: NXP 88w8987 modules for advanced CSI features
|
||||
|
||||
#### Computing Infrastructure
|
||||
- **CPU**: Multi-core processor for real-time processing
|
||||
- **GPU**: NVIDIA GPU with CUDA support for ML inference
|
||||
- **Memory**: Minimum 16GB RAM for model loading and processing
|
||||
- **Storage**: SSD storage for model and data caching
|
||||
|
||||
### Software Dependencies
|
||||
|
||||
#### New Dependencies to Add
|
||||
```python
|
||||
# CSI Processing and Signal Analysis
|
||||
"scapy>=2.5.0", # Packet capture and analysis
|
||||
"pyserial>=3.5", # Serial communication with ESP32
|
||||
"paho-mqtt>=1.6.0", # MQTT for ESP32 communication
|
||||
|
||||
# Advanced Signal Processing
|
||||
"librosa>=0.10.0", # Audio/signal processing algorithms
|
||||
"scipy.fftpack>=1.11.0", # FFT operations
|
||||
"statsmodels>=0.14.0", # Statistical analysis
|
||||
|
||||
# Computer Vision and DensePose
|
||||
"detectron2>=0.6", # Facebook's DensePose implementation
|
||||
"fvcore>=0.1.5", # Required for Detectron2
|
||||
"iopath>=0.1.9", # I/O operations for models
|
||||
|
||||
# Model Training and Optimization
|
||||
"wandb>=0.15.0", # Experiment tracking
|
||||
"tensorboard>=2.13.0", # Training visualization
|
||||
"pytorch-lightning>=2.0", # Training framework
|
||||
"torchmetrics>=1.0.0", # Model evaluation metrics
|
||||
|
||||
# Hardware Integration
|
||||
"pyftdi>=0.54.0", # USB-to-serial communication
|
||||
"hidapi>=0.13.0", # HID device communication
|
||||
```
|
||||
|
||||
### Data Requirements
|
||||
|
||||
#### Training Data Collection
|
||||
- **Synchronized CSI-Video Dataset**: 100+ hours of paired data
|
||||
- **Multi-Environment Data**: Indoor, outdoor, various room types
|
||||
- **Multi-Person Scenarios**: 1-5 people simultaneously
|
||||
- **Activity Diversity**: Walking, sitting, standing, gestures
|
||||
- **Temporal Annotations**: Frame-by-frame pose annotations
|
||||
|
||||
#### Validation Requirements
|
||||
- **Cross-Environment Testing**: Different locations and setups
|
||||
- **Real-time Performance**: <100ms end-to-end latency
|
||||
- **Accuracy Benchmarks**: Comparable to visual pose estimation
|
||||
- **Robustness Testing**: Various interference conditions
|
||||
|
||||
## Risk Assessment and Mitigation
|
||||
|
||||
### High-Risk Items
|
||||
|
||||
#### 1. CSI Data Quality and Consistency
|
||||
**Risk**: Inconsistent or noisy CSI data affecting model performance
|
||||
**Mitigation**:
|
||||
- Implement robust signal preprocessing and filtering
|
||||
- Multiple hardware validation setups
|
||||
- Environmental calibration procedures
|
||||
- Fallback to degraded operation modes
|
||||
|
||||
#### 2. Domain Adaptation Complexity
|
||||
**Risk**: Difficulty in translating CSI features to visual domain
|
||||
**Mitigation**:
|
||||
- Start with simple pose detection before full DensePose
|
||||
- Use adversarial training techniques
|
||||
- Implement progressive training approach
|
||||
- Maintain fallback to simpler detection methods
|
||||
|
||||
#### 3. Real-time Performance Requirements
|
||||
**Risk**: System unable to meet real-time latency requirements
|
||||
**Mitigation**:
|
||||
- Profile and optimize processing pipeline early
|
||||
- Implement GPU acceleration where possible
|
||||
- Use model quantization and optimization techniques
|
||||
- Design modular pipeline for selective processing
|
||||
|
||||
#### 4. Hardware Compatibility and Availability
|
||||
**Risk**: CSI-capable hardware may be limited or inconsistent
|
||||
**Mitigation**:
|
||||
- Support multiple hardware platforms (ESP32, NXP, Atheros)
|
||||
- Implement hardware abstraction layer
|
||||
- Maintain simulation mode for development
|
||||
- Document hardware procurement and setup procedures
|
||||
|
||||
### Medium-Risk Items
|
||||
|
||||
#### 1. Model Training Convergence
|
||||
**Risk**: Domain adaptation models may not converge effectively
|
||||
**Solution**: Implement multiple training strategies and model architectures
|
||||
|
||||
#### 2. Multi-Person Detection Complexity
|
||||
**Risk**: Challenges in detecting multiple people simultaneously
|
||||
**Solution**: Start with single-person detection, gradually expand capability
|
||||
|
||||
#### 3. Environmental Interference
|
||||
**Risk**: Other WiFi devices and RF interference affecting performance
|
||||
**Solution**: Implement adaptive filtering and interference rejection
|
||||
|
||||
## Success Metrics
|
||||
|
||||
### Technical Metrics
|
||||
|
||||
#### Pose Estimation Accuracy
|
||||
- **Single Person**: >90% keypoint detection accuracy
|
||||
- **Multiple People**: >80% accuracy for 2-3 people
|
||||
- **Temporal Consistency**: <5% frame-to-frame jitter
|
||||
|
||||
#### Performance Metrics
|
||||
- **Latency**: <100ms end-to-end processing time
|
||||
- **Throughput**: >20 FPS pose estimation rate
|
||||
- **Resource Usage**: <4GB RAM, <50% CPU utilization
|
||||
|
||||
#### System Reliability
|
||||
- **Uptime**: >99% system availability
|
||||
- **Data Quality**: <1% CSI data loss rate
|
||||
- **Error Recovery**: <5 second recovery from failures
|
||||
|
||||
### Functional Metrics
|
||||
|
||||
#### API Completeness
|
||||
- Remove all mock implementations (100% completion)
|
||||
- Real-time streaming functionality
|
||||
- Authentication and authorization
|
||||
- Database persistence for poses
|
||||
|
||||
#### Hardware Integration
|
||||
- Support for multiple CSI hardware platforms
|
||||
- Robust router communication protocols
|
||||
- Environmental calibration procedures
|
||||
- Multi-zone detection capabilities
|
||||
|
||||
## Timeline Summary
|
||||
|
||||
| Phase | Duration | Key Deliverables |
|
||||
|-------|----------|------------------|
|
||||
| **Phase 1: Hardware Foundation** | 4-6 weeks | CSI data collection, router interface, signal preprocessing |
|
||||
| **Phase 2: Signal Processing** | 6-8 weeks | Human detection algorithms, real-time processing pipeline |
|
||||
| **Phase 3: ML Integration** | 8-12 weeks | Domain adaptation, DensePose models, pose estimation |
|
||||
| **Phase 4: Production** | 4-6 weeks | System integration, optimization, deployment |
|
||||
| **Total Project Duration** | **22-32 weeks** | **Fully functional WiFi-based pose detection system** |
|
||||
|
||||
## Resource Requirements
|
||||
|
||||
### Team Structure
|
||||
- **Hardware Engineer**: CSI hardware setup and optimization
|
||||
- **Signal Processing Engineer**: CSI algorithms and preprocessing
|
||||
- **ML Engineer**: Model training and domain adaptation
|
||||
- **Software Engineer**: System integration and API development
|
||||
- **DevOps Engineer**: Deployment and monitoring setup
|
||||
|
||||
### Budget Considerations
|
||||
- **Hardware**: $2,000-5,000 (ESP32 boards, routers, computing hardware)
|
||||
- **Cloud Resources**: $1,000-3,000/month for training and deployment
|
||||
- **Software Licenses**: Primarily open-source, minimal licensing costs
|
||||
- **Development Time**: 22-32 weeks of engineering effort
|
||||
|
||||
## Conclusion
|
||||
|
||||
This implementation plan provides a structured approach to building a fully functional WiFi-based pose detection system. The phase-based approach minimizes risk while ensuring systematic progress toward the goal. The existing architecture provides an excellent foundation, requiring focused effort on CSI processing, machine learning integration, and hardware interfaces.
|
||||
|
||||
Success depends on:
|
||||
1. **Reliable CSI data collection** from appropriate hardware
|
||||
2. **Effective domain adaptation** between WiFi and visual domains
|
||||
3. **Real-time processing optimization** for production deployment
|
||||
4. **Comprehensive testing and validation** across diverse environments
|
||||
|
||||
The plan balances technical ambition with practical constraints, providing clear milestones and deliverables for each phase of development.
|
||||
Reference in New Issue
Block a user