原创项目合集 基于深度学习的高光谱图像增强系统

基于深度学习的高光谱图像增强系统

一、项目简介

本项目面向高光谱图像去噪增强任务,基于 ICVL 31 波段高光谱 .mat 数据和 HSTNet 模型,完成数据读取、噪声合成、模型训练、测试评估、单图推理和 PyQt6 桌面端可视化展示。

二、数据集

基于深度学习的高光谱图像增强系统项目截图1

本项目使用 ICVL 高光谱图像数据集的 .mat 版本数据。ICVL 数据集由 Ben-Gurion University 的 ICVL 实验室采集,常用于高光谱图像重建、去噪、增强和光谱分析等任务。

项目中的高光谱图像增强任务不依赖人工标注框或分类标签,而是以干净高光谱图像作为监督目标,通过代码动态添加高斯噪声,构造“噪声高光谱图像 -> 干净高光谱图像”的监督学习样本。

统计项数值
当前本地 .mat 文件数10 个
训练集8 个
验证集1 个
测试集1 个
单个样本维度[31, 1392, 1300]
光谱波段数31 个
光谱范围400nm-700nm
波段间隔10nm
默认数据目录data/icvl_mat/

数据读取后统一转换为:

[31, H, W]

其中 31 表示从 400nm 到 700nm 的 31 个光谱波段,HW 表示图像高度和宽度。程序会自动识别 .mat 文件中的 cuberadimgdata 等常见字段,并将数据归一化到 [0, 1]

数据处理流程如下:

扫描 data/icvl_mat/
    ↓
按文件名稳定排序
    ↓
80% / 10% / 10% 划分训练、验证、测试数据
    ↓
读取 .mat 并统一为 [31,H,W]
    ↓
训练阶段随机裁剪 64×64 patch
    ↓
动态添加高斯噪声
    ↓
构造 noisy -> clean 训练样本

三、模型架构

项目使用 HSTNet 完成高光谱图像去噪增强。模型输入为噪声高光谱图像,输出为增强后的干净高光谱图像。

噪声高光谱图像 [B,31,H,W]
    ↓
增加 3D 卷积输入维度
    ↓
3D Conv 特征提取头
    ↓
HSTBlock × 4
    ├── 局部空间-光谱特征模块
    └── 谱向 Transformer 注意力模块
    ↓
3D Conv 噪声预测尾部
    ↓
输入图像 - 预测噪声
    ↓
增强结果 [B,31,H,W]

核心模块说明:

模块作用
3D Conv Head将输入高光谱立方体映射到高维特征空间
局部空间-光谱特征模块使用 3D 卷积提取空间邻域和光谱邻域上下文
谱向 Transformer 模块沿 31 个光谱波段建模长距离光谱相关性
残差噪声预测预测噪声分量,再用输入减去预测噪声得到增强结果
输出裁剪将增强结果限制在 [0, 1] 范围内

本项目的优化点主要体现在三个方面:

优化层面具体做法解决问题
结构优化结合 3D 卷积和谱向 Transformer同时恢复空间纹理和光谱一致性
训练策略随机裁剪 patch,并使用 10/255-50/255 盲高斯噪声训练提高不同噪声强度下的泛化能力
推理部署支持分块推理、CPU 兜底和中文路径安全权重读写适配普通本地电脑和 Windows 中文路径

四、训练过程

训练入口为:

python train.py

也可以通过统一入口启动:

python main.py train

完整训练流程如下:

  1. 读取 data/icvl_mat/ 下的 .mat 文件。
  2. 按文件名排序后划分训练集、验证集和测试集。
  3. 将高光谱数据统一转换为 [31,H,W],并归一化到 [0,1]
  4. 训练阶段随机裁剪 patch,并动态添加随机高斯噪声。
  5. HSTNet 前向推理,输出增强后的高光谱图像。
  6. 使用 L1 Loss 计算增强结果与干净图像之间的误差。
  7. 使用 AdamW 优化器更新模型参数。
  8. 每轮在 25/25550/255 两种固定噪声强度下进行验证。
  9. 保存最后一轮权重 last_hstnet.pth
  10. 按验证集平均 PSNR 保存最优权重 best_hstnet.pth
  11. 生成训练日志、指标表格和曲线图。

训练产物默认保存在:

outputs/train/

五、训练参数

默认训练参数如下:

参数默认值说明
data_dirdata/icvl_matICVL .mat 数据目录
save_diroutputs/train训练产物保存目录
epochs20训练轮数
batch_size2训练批大小
patch_size64随机裁剪 patch 大小
samples_per_image16每张训练图每轮采样次数
lr1e-4学习率
weight_decay1e-4AdamW 权重衰减
base_channels32HSTNet 基础通道数
num_blocks4HSTBlock 数量
heads4谱向注意力头数
num_workers0DataLoader 线程数

测试与推理参数如下:

参数默认值说明
weightsoutputs/train/checkpoints/best_hstnet.pth默认测试权重
tile_size128分块推理尺寸
overlap16分块重叠像素
sigma25单图推理时合成噪声强度,单位为 /255
limit0测试样本数量限制,0 表示全部测试

六、训练指标

本项目已完成一组 20 轮训练。训练使用 CUDA 设备,训练集 8 张、验证集 1 张。主要指标包括:

指标含义趋势
LossL1 重建损失越低越好
PSNR峰值信噪比越高越好
SSIM结构相似性越高越好
SAM光谱角制图越低越好

第 1 轮和第 20 轮指标对比如下:

指标第 1 轮第 20 轮变化
Train Loss0.1557290.021444下降 0.134285
Val Loss0.1218870.021654下降 0.100233
PSNR2517.27 dB31.42 dB提升 14.15 dB
PSNR5016.78 dB29.82 dB提升 13.04 dB
平均 SSIM0.09630.7327提升 0.6364
平均 SAM48.488.38下降 40.10

验证集平均 PSNR 最优模型出现在第 13 轮,对应权重为:

outputs/train/checkpoints/best_hstnet.pth
指标数值
Epoch13
Train Loss0.025301
Val Loss0.020027
PSNR2533.49 dB
PSNR5029.48 dB
平均 PSNR31.48 dB
平均 SSIM0.7649
平均 SAM7.11

使用 best_hstnet.pth 在测试集上评估的结果如下:

噪声强度噪声 PSNR去噪 PSNRPSNR 提升噪声 SSIM去噪 SSIMSSIM 提升噪声 SAM去噪 SAMSAM 下降
25/25521.4531.9710.520.15330.67400.520734.4821.8812.60
50/25515.9629.9714.020.05050.61130.560842.4315.8926.54

七、可视化图说明

训练曲线保存在:

outputs/train/plots/
文件横轴纵轴说明
all_metrics.pngEpochLoss、PSNR、SSIM、SAM综合展示训练和验证指标变化
loss_curve.pngEpochLoss展示训练损失和验证损失变化
psnr_curve.pngEpochPSNR展示 sigma25、sigma50 和平均 PSNR
ssim_curve.pngEpochSSIM展示 sigma25、sigma50 和平均 SSIM
sam_curve.pngEpochSAM展示 sigma25、sigma50 和平均 SAM
lr_curve.pngEpochLearning Rate展示学习率变化

测试评估图保存在:

outputs/test/plots/
文件说明
test_psnr.png不同噪声强度下噪声图像与增强结果的 PSNR 对比
test_ssim.png不同噪声强度下噪声图像与增强结果的 SSIM 对比
test_sam.png不同噪声强度下噪声图像与增强结果的 SAM 对比
test_improvement.pngPSNR、SSIM、SAM 改善幅度柱状图

PyQt6 系统中的“指标展示”页面会读取训练和测试图像文件,并在桌面端界面中展示。

八、系统功能

模块功能说明
登录 / 注册支持本地账号注册和登录,用户信息保存到 data/system/users.json
首页总览展示模型状态、运行设备、数据数量、历史记录和最近检测摘要
单图增强选择单个 .mat 文件,添加噪声并调用 HSTNet 输出增强结果和指标
批量增强选择包含 .mat 文件的目录,批量生成增强 .mat 和伪彩色预览图
测试评估在 GUI 内执行测试集评估,输出测试指标和结果文件
光谱分析对指定像素位置绘制 31 个波段的光谱响应曲线
波段可视化支持单波段灰度显示和伪彩色 RGB 合成显示
历史记录保存检测时间、用户、文件名、模型、噪声强度和指标结果
指标展示读取训练和测试过程生成的 .png 指标图
模型管理查看默认权重、选择本地权重、加载模型并查看运行设备

系统默认权重路径为:

outputs/train/checkpoints/best_hstnet.pth

GUI 中普通 .jpg/.png/.bmp 图片只用于界面预览,模型实际处理对象为 31 波段 .mat 高光谱数据。

基于深度学习的高光谱图像增强系统项目截图1 基于深度学习的高光谱图像增强系统项目截图2 基于深度学习的高光谱图像增强系统项目截图3 基于深度学习的高光谱图像增强系统项目截图4 基于深度学习的高光谱图像增强系统项目截图5 基于深度学习的高光谱图像增强系统项目截图6 基于深度学习的高光谱图像增强系统项目截图7 基于深度学习的高光谱图像增强系统项目截图8 基于深度学习的高光谱图像增强系统项目截图9

九、技术栈

类别技术
开发语言Python 3.9
深度学习框架PyTorch
模型结构HSTNet、3D CNN、Transformer
GUI 框架PyQt6
数据格式MATLAB .mat
数据读取scipy、h5py
数值计算numpy
图表绘制matplotlib
数据下载huggingface_hub、requests
数据持久化JSON、CSV

十、项目结构

c269/
├── app/
│   ├── data/               # ICVL 数据读取、划分和下载
│   ├── infer/              # HSTNet 推理封装
│   ├── models/             # HSTNet 模型结构
│   ├── test/               # 测试集评估与结果导出
│   ├── train/              # 训练、验证、日志和指标图生成
│   ├── ui/                 # PyQt6 桌面端界面
│   └── utils/              # 指标、噪声、可视化、设备和权重读写工具
├── data/
│   ├── icvl_mat/           # ICVL .mat 数据目录
│   └── system/             # GUI 用户信息和历史记录
├── outputs/
│   ├── train/              # 训练权重、日志和指标图
│   ├── test/               # 测试评估日志、图表和样本结果
│   ├── infer/              # 命令行推理输出目录
│   ├── gui_batch/          # GUI 批量增强输出目录
│   ├── gui_test/           # GUI 测试评估输出目录
│   └── gui_exports/        # GUI 手动导出结果
├── download_icvl.py        # ICVL 数据独立下载入口
├── main.py                 # 训练、测试、推理、GUI 统一入口
├── requirements.txt        # 项目依赖
├── test.py                 # 独立测试入口
└── train.py                # 独立训练入口

十一、启动教程

1. 环境准备

推荐使用 Python 3.9。进入项目根目录后安装依赖:

cd <项目根目录>
pip install -r requirements.txt

2. 数据集准备

方式一:独立下载 ICVL .mat 数据。

python download_icvl.py --endpoint https://hf-mirror.com --max-files 10

方式二:训练前自动下载。

python train.py --download-icvl --hf-endpoint https://hf-mirror.com --max-download-files 10

方式三:手动下载 .mat 文件,并放入:

data/icvl_mat/

3. 模型训练

使用默认参数训练:

python train.py

指定常用训练参数:

python train.py --epochs 20 --batch-size 2 --patch-size 64 --samples-per-image 16

训练完成后会生成:

outputs/train/checkpoints/best_hstnet.pth
outputs/train/checkpoints/last_hstnet.pth
outputs/train/logs/train_log.csv
outputs/train/plots/

4. 测试评估

python test.py --weights outputs/train/checkpoints/best_hstnet.pth

测试结果默认保存到:

outputs/test/

5. 单图推理

python main.py infer --input data/icvl_mat/xxx.mat --weights outputs/train/checkpoints/best_hstnet.pth

指定输出文件:

python main.py infer --input data/icvl_mat/xxx.mat --weights outputs/train/checkpoints/best_hstnet.pth --output outputs/infer/result.mat --preview outputs/infer/result.png --sigma 25

6. 启动桌面系统

python main.py gui

首次进入系统时需要注册账号。账号信息和历史记录保存在本地:

data/system/users.json
data/system/history.json

7. 推荐运行顺序

python download_icvl.py --endpoint https://hf-mirror.com --max-files 10
python train.py --epochs 20 --batch-size 2 --patch-size 64
python test.py --weights outputs/train/checkpoints/best_hstnet.pth
python main.py gui

如果已经存在数据和权重,可以直接启动系统:

python main.py gui

本项目为个人原创,结构清晰,功能完整,适合课程设计、毕业设计和个人学习使用。如需购买项目成品或定制化需求可以联系作者。

微信二维码
Jay 微信二维码