refactor: strided conv encoder with 80x60 input resolution

- CNNEncoder: stride=2 convs replace Conv2d+MaxPool2d pattern
- 3 layers (32,64,128) instead of 4 (32,64,128,256), GRU input 192
- DecodeSample resizes grayscale frames to 80x60 via INTER_AREA
- Model params: 227K (was 1.5M), input 80x60 (was 320x240)

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
2026-08-01 17:47:45 +08:00
parent a97b4da1ad
commit 479c2b1488
3 changed files with 25 additions and 16 deletions
+4 -4
View File
@@ -53,9 +53,9 @@ TEST_SCENES = [
@dataclass
class CNNConfig:
in_channels: int = 1
channels: tuple = (32, 64, 128, 256) # per-layer output channels
channels: tuple = (32, 64, 128) # per-layer output channels
kernel_size: int = 3
pool_size: int = 2
stride: int = 2 # strided conv replaces conv+pool
use_bn: bool = True
@@ -68,7 +68,7 @@ class PoseMLPConfig:
@dataclass
class GRUConfig:
input_size: int = 320 # CNN(256) + PoseMLP(64)
input_size: int = 192 # CNN(128) + PoseMLP(64)
hidden_size: int = 128
num_layers: int = 1
dropout: float = 0.0
@@ -104,7 +104,7 @@ class TrainConfig:
seed: int = 42
# Sliding window: stride=1 → full overlap, stride=seq_len → non-overlapping
sliding_window_stride: int = 1
sliding_window_stride: int = 64
# Event simulation
event_threshold: float = 0.1