feat(feature-compressor): add DINOv2 feature extraction and compression pipeline

This commit is contained in:
2026-01-31 10:33:37 +08:00
parent f9a359fc28
commit 1454647aa6
22 changed files with 1486 additions and 16 deletions

View File

View File

@@ -0,0 +1,20 @@
from enum import Enum
from pathlib import Path
from typing import Dict
import yaml
class Config(Enum):
FEATURE_COMPRESSOR = "feature_compressor.yaml"
def get_config_dir() -> Path:
return Path(__file__).parent
def get_default_config(config_type: Config) -> Dict[Unknown, Unknown]:
config_path = get_config_dir() / config_type.value
with open(config_path) as f:
return yaml.safe_load(f)

View File

@@ -0,0 +1,21 @@
model:
name: "facebook/dinov2-large"
compression_dim: 256
pooling_type: "attention" # attention-based Top-K
top_k_ratio: 0.5 # Keep 50% of tokens
hidden_ratio: 2.0 # MLP hidden = compression_dim * 2
dropout_rate: 0.1
use_residual: true
device: "auto" # auto-detect GPU
visualization:
plot_theme: "plotly_white"
color_scale: "viridis"
point_size: 8
fig_width: 900
fig_height: 600
output:
directory: "./outputs"
html_self_contained: true
png_scale: 2 # 2x resolution for PNG