# LIPE V2 Student Model: Refinement & Contingency Plan ## 1. CNN Bottleneck: Valid Padding Strategy * **Primary Plan:** Use `padding=0` for all Conv layers. * Input: (1, 8, 8) * Conv1 (k3, p0): -> (16, 6, 6) * Conv2 (k3, p0): -> (32, 4, 4) * Conv3 (k3, p0): -> (64, 2, 2) * GAP: -> (64,) * **Contingency:** If FLOPs are still high, implement **Depthwise Separable Convolutions** for layers 2 and 3. ## 2. Fusion Logic: Asymmetric Routing * **Primary Plan (Residual Addition):** * Geometric MLP output dim = 256 (matches total Appearance tokens). * `if State A: Combined = Appearance + Geometry` * `if State B: Combined = Geometry` * *Note:* This requires `nn.Linear` in Geometry branch to output 256. * **Contingency (EMA Caching):** * Maintain a 384-dim Concatenated vector. * `if State B: Use Appearance_tokens from t-1 (cached/EMA)` to avoid shape mismatch and zero-multiplication overhead. ## 3. Geometric Stability: LayerNorm Integration * **Primary Plan:** Replace `Dropout(0.1)` with `nn.LayerNorm(256)` after the first hidden layer of the Geometric branch. * **Contingency:** If CPU latency increases, switch to `nn.utils.weight_norm` on Linear layers to stabilize gradients without explicit normalization steps. ## 4. Summary of Architecture Changes | Component | From (Old Spec) | To (Refined Spec) | | :--- | :--- | :--- | | **CNN Padding** | `p=1` (Same) | `p=0` (Valid) | | **Fusion Mode** | `Concatenation(384)` | `Residual Addition(256)` | | **Regularization** | `Dropout(0.1)` | `LayerNorm + Dropout(0.05)` |