| # Master Plan: LIPE V2 Gaze Estimation |
|
|
| ## 1. Project Objective |
| Deliver a production-grade, real-time gaze estimation system (LIPE V2) capable of $\ge 30$ FPS on integrated CPU/iGPU hardware with $< 4.2^\circ$ angular error. |
|
|
| ## 2. Technical Roadmap |
|
|
| ### Phase 1: Canonical Geometric Normalization & Dataset Preparation |
| * **Goal:** Extract pose-invariant patches and prepare training data in HDF5 format. |
| * **Tasks:** |
| 1. [x] Integrate **MediaPipe Face Mesh** (via Tasks API) for 478-landmark extraction (incl. Iris). |
| 2. [x] Implement **Unified Affine Transformation** in `src/utils/preprocess.py`. |
| 3. [~] **MPIIGaze HDF5 Streaming Pipeline (`src/data/preprocess_mpii.py`):** (IN PROGRESS - Background Execution) |
| * [x] Landmark Consistency: Use MediaPipe landmarks. |
| * [x] Mapping & Gaze Rotation: Align 3D labels with rotated patches. |
| * [x] Zero-Centering: Pose-relative geometric features. |
| * [ ] Serialization: Streaming to `data/processed/pXX.h5`. |
| 4. [x] **Quality Control & Verification:** |
| * [x] Visual verification script (`verify_processed.py`). |
| * [x] Verify affine stability and label alignment. |
| |
| ### Phase 2: Model Architecture Implementation |
| * **Goal:** Build the asymmetric dual-branch inference engine adaptable to multiple resolutions. |
| * **Tasks:** |
| 1. [x] **State A (Fine Branch):** Implement **Mini Conv-Embedder** with Valid Padding (p=0). |
| 2. [x] **State B (Coarse Branch):** Implement **Geometric MLP** with LayerNorm & Dropout. |
| 3. [x] **Switching Logic:** Implement **Residual Addition Fusion** for State A/B routing. |
| 4. [x] **HDF5 DataLoader:** Implement `GazeDataset` for efficient training. |
| 5. [x] **Architecture Verification:** Confirm < 0.12 GFLOPs and tensor shape stability. |
|
|
| ### Phase 3: Training & Knowledge Distillation (KD) |
| * **Goal:** Transfer deep features from a SOTA teacher to the LIPE V2 student. |
| * **Tasks:** |
| 1. [x] Set up the **Teacher Model (L2CS-Net)** with ResNet-50 weights. |
| 2. [x] Implement **Adaptive Wing Loss (AW Loss)** and **KD Loss** in `src/models/loss.py`. |
| 3. [~] **Distillation Pipeline:** Execute training (LOPO strategy). |
| * [x] Offline Label Caching script (`src/data/generate_teacher_labels.py`). |
| * [x] Training loop with Dynamic Weighting and WeightedRandomSampler (`src/train.py`). |
| * [~] Batch Label Generation (IN PROGRESS - Background). |
| 4. [ ] Validate against standard benchmarks (MPIIGaze). |
|
|
| ### Phase 4: Post-Processing & Hardware Optimization |
| * **Goal:** Ensure real-time stability and meet hardware resource constraints (RAM/Compute). |
| * **Tasks:** |
| 1. **Temporal Smoothing (Stabilization):** |
| * [ ] Implement **One Euro Filter ($1€ Filter$)** in `src/utils/filters.py` for adaptive jitter suppression. |
| * [ ] Tune $\beta$ (speed) and $d_{cutoff}$ parameters to balance prediction latency and visual smoothness. |
| 2. **Resource & Inference Optimization:** |
| * [ ] **Branch-Specific Logic:** Implement logic to freeze CNN weights and bypass Image I/O during State B ($t \pmod 3 \neq 0$) to hit $< 45$ MB RAM target. |
| * [ ] **Quantization:** Explore FP16 or INT8 Post-Training Quantization (PTQ) to reduce model size to $< 2$ MB and accelerate CPU inference. |
| * [x] **Inference Wrapper:** Build a high-level API to handle the dual-state switching transparently (`src/inference_pipeline.py`). |
| 3. **Benchmarking & Final Validation:** |
| * [x] **Metric Implementation:** Implement 3D Angular Error formula for scientific validation (`src/utils/metrics.py`). |
| * [x] **Hardware Profiling:** Measured 1.93 MFLOPs and ~0.8ms latency per frame (Verified). |
| * [ ] **Final Benchmark:** Run cross-subject evaluation on all 15 MPIIGaze folds and report final mean $\mathcal{E}_{angular}$. |
| 4. **Real-Time Demo Integration:** |
| * [x] Build `src/demo_live.py`: Multi-threaded Camera I/O + MediaPipe + LIPE V2 Student integration (Ready). |
|
|
| ## 3. Immediate Next Steps |
| 1. [x] Initialize project directory structure (`src/models`, `src/utils`, `data/`). |
| 2. [ ] Update `requirements.txt` with `scipy` and `h5py`. |
| 3. [ ] Implement the **HDF5 Preprocessing Pipeline** for MPIIGaze. |
| 4. [ ] Perform a **Random Sampling Validation** on the generated HDF5 files. |
| 5. [ ] Implement the Student Model (Mini Conv-Embedder). |
|
|
| --- |
|
|
| ## 5. Experimental Backlog (Ablation Studies) |
| *These experiments are queued to find the absolute optimal configuration after the baseline Phase 3 is completed.* |
|
|
| * **A-1: Input Resolution Study:** |
| * Compare **16x16** vs **8x8** patch sizes. |
| * Requires updating `src/data/preprocess_mpii.py` to generate parallel HDF5 versions (e.g., `pXX_v16.h5`). |
| * **A-2: Fusion Mechanism Benchmarking:** |
| * **Concatenation** vs **Residual Addition** vs **Gated Fusion**. |
| * Goal: Determine which method best preserves appearance tokens without bloating the MLP. |
| * **A-3: Hyperparameter Search (KD Tuning):** |
| * Test Distillation Temperature $T \in [1, 3, 5]$. |
| * Evaluate impact of $w_{KD}$ weighting on convergence speed. |
| * **A-4: Architecture Scaling:** |
| * Hidden layer scaling: Compare **128**, **256**, and **512** neurons in the Geometric MLP. |
| |
| ## 6. Phase 4: Post-Processing & Integration (Live Pipeline) |
| * **Status**: Initialized. |
| * **Objective**: Convert model predictions into a stable, high-frequency gaze stream. |
| * **Key Deliverables**: |
| * `src/inference_pipeline.py` with temporal filtering (One Dollar/EMA). |
| * State-switching logic (State A vs. State B). |
| * Hardware profiling report. |
|
|
| ## 7. Phase 5: Gold Standard Refinement (The Final Step) |
| * **Status**: Planning. |
| * **Objective**: Reach the absolute limit of accuracy (Target < 4.2°). |
| * **Key Deliverables**: |
| * **Feature Fusion**: Combining Appearance and Geometry. |
| * **Adaptive Wing Loss**: Deep convergence for low-resolution patches. |
| * **The "Slow and Steady" Run**: 15-subject LOPO with high patience. |
| * **Comparative Archiving**: Baseline vs. Refined performance analysis. |
|
|
| ## 8. Future Extensions (Proposal Research Only) |
| *These tasks are currently outside the primary implementation scope and serve as future optimization targets.* |
|
|
| * **Quantization-Aware Training (QAT) INT8:** |
| * Integrate fake quantization modules during Phase 3 training. |
| * Evaluate potential for further reducing inference latency on specific hardware (AVX-512/OpenVINO). |
| * Analyze impact on angular error $\mathcal{E}_{angular}$ under extreme bit-width reduction. |
| |