# LEAN & MEAN PLAN: DYNAMIC GATED FUSION & SMOOTH FOCAL LOSS ## 1. Triết lý (Philosophy) Thay vì thêm các lớp xử lý ảnh phức tạp, chúng ta tập trung vào việc tối ưu hóa cách model **kết hợp thông tin** (Fusion) và cách **trọng số hóa lỗi** (Loss Weighting). Mục tiêu là cô lập vấn đề gốc rễ khiến MAE của p08 bị kẹt. ## 2. Thay đổi cốt lõi (Core Changes) ### A. Dynamic Gated Fusion (Thay thế Concat/Shuffle) Cơ chế này cho phép model tự học cách điều tiết dòng thông tin: 1. **Input:** Đặc trưng Ảnh (App) và đặc trưng Hình học (Geo). 2. **Gate:** `gate = sigmoid(Linear(App + Geo))`. 3. **Output:** `fused = gate * App + (1 - gate) * Geo`. * **Mục tiêu:** Ép model phải sử dụng đặc trưng Ảnh (mí mắt, con ngươi) khi thông tin Hình học (landmarks) không đủ độ tin cậy hoặc bị anatomical bias (như p08). ### B. Smooth Focal Weighting (Thay thế Step Focal) Thay thế hàm bước `torch.where` bằng hàm Sigmoid liên tục để ổn định Gradient: * **Công thức:** `weight = 1.0 + gamma * sigmoid(error - tau)`. * **Lợi ích:** Tránh hiện tượng "giật" gradient khi lỗi dao động quanh ngưỡng 4.2°, giúp quá trình hội tụ mượt mà và sâu hơn. ## 3. Cấu hình Thử nghiệm (Experiment Setup) * **Model:** `LIPEV2StudentGated` (Cấu trúc tối giản, quay lại dùng GAP duy nhất để cô lập hiệu quả của Gate). * **Participants:** `p08`, `p09`. * **Learning Rate:** `5e-5`. * **Epochs:** `75`. * **CPU Optimization:** `num_workers=8`. ## 4. Kịch bản thực thi (Execution Roadmap) 1. Tạo file demo `src/train_gated_fusion_demo.py`. 2. Triển khai lớp `GatedFusion`. 3. Cập nhật hàm `GazeDistillationLoss` với cơ chế Smooth Weighting. 4. Chạy thử nghiệm cho `p08` và `p09` để so sánh trực tiếp với Hybrid V3.