# fusion
**Repository Path**: llxxjj_gitee/fusion
## Basic Information
- **Project Name**: fusion
- **Description**: 1111111111
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-01-12
- **Last Updated**: 2026-01-15
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 基于双流残差 U-Net 的自监督遥感图像全色锐化
本项目实现了一个 **自监督(Self-Supervised)** 的全色锐化(Pansharpening)深度学习框架。
项目采用了 **双流编码器 U-Net (Dual-Stream U-Net)** 架构,结合 **残差学习** 策略,并设计了包含 **拉普拉斯空间一致性** 和 **SAM 光谱一致性** 的混合损失函数,有效解决了传统方法中的光谱失真和纹理模糊问题。
## 🌟 核心特性
* **自监督训练范式**:无需人工标注或模拟的高分真值,直接使用原始 PAN 和 MS 图像对进行训练,解决了跨域泛化难题。
* **残差学习架构**:网络仅学习高频纹理残差,并将其叠加在原始 MS 上。这种设计极大地保留了原始光谱信息,**有效解决了光谱失真问题**。
* **物理一致性损失函数**:
* **空间损失**:基于 **拉普拉斯算子** 的二阶微分梯度损失,强迫融合图像的纹理强度与 PAN 高度一致。
* **光谱损失**:结合 **L1** 和 **SAM (光谱角映射)**,在下采样尺度上约束颜色和亮度,确保物理正确性。
* **全自动化流水线**:提供 `run_pipeline.py` 脚本,一键完成“训练 -> 自动定位最新模型 -> 推理 -> 可视化”,实现 MLOps 级别的实验管理。
* **工程化配置**:通过 `yaml` 文件统一管理数据、模型、优化器及推理参数,支持实验配置的自动备份与回溯。
* **高性能训练**:支持多 GPU 并行,针对 11-bit 遥感数据设计了固定数值归一化策略。
## 📁 目录结构
```text
.
├── configs/
│ └── base.yaml # 全局配置文件(控制训练、推理、数据路径等)
├── data/
│ ├── train/ # 训练数据
│ ├── real/ # 真实推理数据
│ └── test/ # 测试数据
├── output/ # 实验输出 (自动按时间戳生成文件夹)
├── src/
│ ├── dataset.py # 数据集加载 (支持内存缓存、数据增强、固定归一化)
│ ├── model.py # Dual-Stream Residual U-Net 模型定义
│ ├── loss.py # 自监督混合损失 (L1 + SAM + Laplacian)
│ ├── train.py # 训练主脚本
│ ├── inference.py # 推理与可视化脚本
│ └── config.py # 配置解析工具
├── run_pipeline.py # 一键自动化运行脚本
└── README.md # 项目说明文档
```
## 🛠️ 环境依赖
请确保你的环境安装了以下 Python 库:
```bash
pip install torch torchvision numpy rasterio matplotlib pyyaml tqdm
```
## 💾 数据准备
本项目训练数据无需 Ground Truth。请按以下格式准备数据:
1. **PAN 图像**:文件名以 `_pan.tif` 结尾。
2. **MS 图像**:文件名以 `_mul.tif` 结尾。
**推荐的文件结构:**
```text
data/
└── train/
├── scene01_pan.tif
├── scene01_mul.tif
├── scene02_pan.tif
└── ...
```
## 🚀 快速开始
### 1. 修改配置
打开 `configs/base.yaml`,根据你的数据情况修改关键参数:
* `fixed_max`: 归一化数值。如果数据是 11-bit,建议设为 `2047.0`。
* `train_dir`: 训练数据路径。
* `input_dir`: 推理输入路径。
### 2. 一键全流程运行(推荐)
该脚本会自动读取配置,开始训练,并在训练结束后自动寻找最新的模型对数据进行推理。
```bash
python run_pipeline.py
```
### 3. 单独训练
如果只想训练模型:
```bash
python src/train.py --config configs/base.yaml
```
*提示:设置 `verbose: False` 可关闭进度条,加速小批量数据的训练速度。*
### 4. 单独推理
如果已有训练好的模型,想对新数据进行推理:
```bash
# 方法 A: 手动指定模型路径
python src/inference.py --config configs/base.yaml --checkpoint output/xxxx/checkpoints/model_ep500.pth
# 方法 B: 使用配置文件中定义的路径
python src/inference.py --config configs/base.yaml
```
## 🧠 算法原理
### 模型结构
采用双流编码器(Dual Encoder),分别提取全色图像的空间特征和多光谱图像的光谱特征。在解码器阶段进行多尺度融合,最后通过 **残差连接** 输出:
$$ \text{Output} = \text{Input}_{MS} + \text{Net}(\text{PAN}, \text{Input}_{MS}) $$
### 损失函数
总损失由光谱损失和空间损失加权组成:
$$ L_{total} = L_{spectral} + \lambda_{spat} \cdot L_{spatial} $$
1. **光谱损失 (Spectral)**: 在下采样尺度(Scale=4)上计算 L1 距离和光谱角(SAM),确保融合图像退化后与原始 MS 一致。
2. **空间损失 (Spatial)**: 计算融合图像亮度分量的 **拉普拉斯 (Laplacian)** 二阶梯度,并强迫其逼近 PAN 的纹理梯度。
## 📊 实验结果
### 1. 可视化效果对比
| 场景 | 原始全色 (PAN) | 原始多光谱 (MS) | 本项目融合结果 (Fused) |
| :---: | :---: | :---: | :---: |
| **Scene 1**
(M0-1) |  |  |  |
| **Scene 2**
(M11-3) |  |  |  |
---
### 2. 空间权重参数分析
空间损失权重 $\lambda_{spat}$ 是平衡**光谱保真度**与**空间锐度**的关键参数。
* **$\lambda_{spat}=1.0$**:纹理较柔和,光谱保真度高,但细节提升有限。
* **$\lambda_{spat}=5.0$**:**(推荐)** 在色彩与纹理之间达到了最佳平衡,视觉效果最自然。
* **$\lambda_{spat}=10.0$**:纹理锐利,但有过度锐化的伪影和较大的光谱失真。
| 场景 | 原始输入 | $\lambda_{spat} = 1.0$ | $\lambda_{spat} = 5.0$ (Best) | $\lambda_{spat} = 10.0$ |
| :---: | :---: | :---: | :---: | :---: |
| **M0-1** | PAN
 |  | | |
| **M11-3** | MS
 | | | |
---
### 3. 定量指标评估 (Quantitative Evaluation)
#### 📉 测试数据集测试 (Wald Protocol)
在测试数据集上进行的有参考&无参考评估,Ground Truth 为原始多光谱图像。
| 指标 | 结果 | 最优方向 | 说明 |
| :--- | :---: | :---: | :--- |
| **CC** | **0.8656** | $\uparrow$ 1.0 | 相关系数,衡量光谱相似性 |
| **SAM** | **9.6806** | $\downarrow$ 0.0 | 光谱角映射,衡量光谱相似性 |
| **ERGAS** | **7.3476** | $\downarrow$ 0.0 | 全局相对光谱损失,衡量光谱失真度 |
| **SSIM** | **0.6523** | $\uparrow$ 1.0 | 结构相似度,衡量纹理与结构的一致性 |
| **QNR** | **0.7624** | $\uparrow$ 1.0 | 无参考综合质量指标 |
| **$D_{\lambda}$** | **0.0699** | $\downarrow$ 0.0 | QNR子项:无参考光谱评价指标 |
| **$D_s$** | **0.1814** | $\downarrow$ 0.0 | QNR子项:无参考空间评价指标 |
#### 🌍 真实分辨率测试
在真实分辨率数据上进行的无参考评估。
| 指标 | 结果 | 最优方向 | 说明 |
| :--- | :---: | :---: | :--- |
| **QNR** | **0.9629** | $\uparrow$ 1.0 | 综合评价指标,分数越高代表融合质量越好 |
| **$D_{\lambda}$** | **0.0120** | $\downarrow$ 0.0 | 光谱一致性较佳,几乎无颜色偏移 |
| **$D_s$** | **0.0254** | $\downarrow$ 0.0 | 空间细节注入准确,纹理损失极低 |