127 lines
2.8 KiB
Python
127 lines
2.8 KiB
Python
"""SOFIA v7.1 — student model for cross-view geo-localization (CVGL).
|
||
|
||
Architecture:
|
||
stem → stage1 (StripDCN-lite) → stage2 (StripMixConv)
|
||
→ stage3 (MambaVision MV5) → stage4 (MambaVision MV1)
|
||
→ 1×1 neck → asymmetric Sat/UAV heads
|
||
|
||
Key novel components:
|
||
- StripDCN-lite: Strip DW with adaptive offset on one axis
|
||
- MambaVision MV5: Mamba ∥ MHSA ∥ Strip 3-way parallel
|
||
- CircularHarmonicPool: formally SO(2)-invariant UAV head
|
||
- AltitudeFiLM: telemetry-aware conditioning
|
||
|
||
Presets (see config.py):
|
||
- SOFIA-M (~500 M params, 500 MB INT8) — default
|
||
- SOFIA-L (~1 B params, 1 GB INT8) — max scale
|
||
- SOFIA-Tiny (~5 M) — reference from original v7.1 spec
|
||
|
||
Quick start:
|
||
from sofia_v71 import build_sofia
|
||
model = build_sofia("M")
|
||
out = model(sat=sat_tensor, uav=uav_tensor, altitude=alt_tensor)
|
||
g_sat, g_uav = out["g_sat"], out["g_uav"]
|
||
|
||
See README.md and HYP_SOFIA_v7_UltraDeep_дизайн.md for full design rationale.
|
||
"""
|
||
|
||
from .config import (
|
||
SOFIAConfig,
|
||
sofia_l_config,
|
||
sofia_m_config,
|
||
sofia_tiny_config,
|
||
DEFAULT_CONFIG,
|
||
)
|
||
from .model import (
|
||
SOFIAv71,
|
||
build_sofia,
|
||
Backbone,
|
||
Stem,
|
||
UltraLiteNeck,
|
||
SatHead,
|
||
UAVHead,
|
||
RingAuxHead,
|
||
)
|
||
from .layers import (
|
||
GGeM,
|
||
CircularHarmonicPool,
|
||
AltitudeFiLM,
|
||
TextFiLM,
|
||
RoPE2D,
|
||
SqueezeExcite,
|
||
LayerNorm2d,
|
||
)
|
||
from .blocks import (
|
||
StripDCNLiteBlock,
|
||
StripMixConvBlock,
|
||
SimpleMambaBlock,
|
||
Mamba2Block,
|
||
EfficientVMambaBlock,
|
||
MambaVisionBlock,
|
||
EVSSBridge,
|
||
Downsample,
|
||
build_mamba_block,
|
||
is_mamba_ssm_available,
|
||
is_mamba2_available,
|
||
)
|
||
from .quant import (
|
||
# DCN-M2
|
||
OffsetClampSTE,
|
||
offset_clamp_ste,
|
||
# k-scaled
|
||
KScaledFakeQuant,
|
||
KScaledMamba2Block,
|
||
# model-wide helpers
|
||
start_calibration,
|
||
finalize_calibration,
|
||
set_quant_enabled,
|
||
)
|
||
|
||
__version__ = "0.1.0"
|
||
__all__ = [
|
||
# Config
|
||
"SOFIAConfig",
|
||
"sofia_m_config",
|
||
"sofia_l_config",
|
||
"sofia_tiny_config",
|
||
"DEFAULT_CONFIG",
|
||
# Top-level
|
||
"SOFIAv71",
|
||
"build_sofia",
|
||
# Model parts
|
||
"Backbone",
|
||
"Stem",
|
||
"UltraLiteNeck",
|
||
"SatHead",
|
||
"UAVHead",
|
||
"RingAuxHead",
|
||
# Layers
|
||
"GGeM",
|
||
"CircularHarmonicPool",
|
||
"AltitudeFiLM",
|
||
"TextFiLM",
|
||
"RoPE2D",
|
||
"SqueezeExcite",
|
||
"LayerNorm2d",
|
||
# Blocks
|
||
"StripDCNLiteBlock",
|
||
"StripMixConvBlock",
|
||
"SimpleMambaBlock",
|
||
"Mamba2Block",
|
||
"EfficientVMambaBlock",
|
||
"MambaVisionBlock",
|
||
"EVSSBridge",
|
||
"Downsample",
|
||
"build_mamba_block",
|
||
"is_mamba_ssm_available",
|
||
"is_mamba2_available",
|
||
# Quantization
|
||
"OffsetClampSTE",
|
||
"offset_clamp_ste",
|
||
"KScaledFakeQuant",
|
||
"KScaledMamba2Block",
|
||
"start_calibration",
|
||
"finalize_calibration",
|
||
"set_quant_enabled",
|
||
]
|