SpecSure:高光谱图像分类系统


欢迎在我的 GitHub 查看更多项目与代码实现。

一、项目背景与初衷

SpecSure(澜瞳) 是我和几位非常好(超级优秀)的朋友们一起完成的项目。这是一个支持从高光谱数据预处理模型分类与指标评估的全流程遥感分析系统。

做这个系统的初衷很直接:海洋是我们学校的研究大方向,海岸带作为陆海交互区域,地物复杂。高光谱数据虽然包含了极高维度的光谱信息,但存在噪声敏感、样本标注成本昂贵的问题。目前很多传统的分析工具体量庞大且自动化程度有限。

因此,我们想构建一个轻量级、Web 化、高度集成的系统,打通从原始数据 .mat / .hdr 读取,到最终输出分类伪彩色图、混淆矩阵的完整闭环。

图:项目背景与高光谱数据痛点

图 1:项目背景与高光谱数据痛点(左侧为 RGB 对比,右侧为光谱曲线)


二、系统功能与整体架构

SpecSure 的核心定位是提供一套即插即用的在线分析管线。系统主要分为数据管理、预处理(PCA/平滑/剔除噪声)、模型训练与推理、可视化评估(OA/AA/Kappa 及混淆矩阵)四大模块。

图:系统五大核心步骤展示

图 2:系统的核心功能管线与操作流

架构设计上,系统采用了标准的前后端分离模式。由于底层涉及大量的矩阵运算和深度学习模型,后端选用了 Python FastAPI,前端通过 HTTP/JSON 以及轮询机制与后端进行通信。

为了防止长时间的模型训练阻塞 Web 服务,我在后端引入了异步任务队列机制,利用 Pydantic 严格校验前端传入的模型超参数,封装好数据后交由子进程运行核心算法层。

图:SpecSure 总体架构图

图 3:前后端交互与核心算法层总体架构图


三、核心算法层

为了适应不同数据量和维度的场景,系统底层实现了两套不同的分类模型并作为对照组:深度学习模型(CNN)传统机器学习模型(SVM)

1. 基于 PyTorch 的 HybridSN (混合 CNN)

高光谱数据本质上是一个 3D 的数据立方体(宽 × 高 × 波段数)。普通的 2D CNN 会丢失光谱维度的连续特征,而纯 3D CNN 参数量又过于庞大。因此,系统实现了 HybridSN(混合 3D+2D CNN)网络。

执行管线如下:

  1. 预处理:对原始高光谱数据执行 PCA 降维,提取主要光谱特征。
  2. 样本切块:使用滑动窗口将整图切割为 3D 立方体样本。
  3. 模型训练:输入混合网络,先通过 3D 卷积提取空间-光谱联合特征,再通过 2D 卷积进一步提取空间抽象特征,最后由全连接层输出分类结果。
  4. 整图推理:训练完成后,对全图进行滑窗推理,生成整图的预测结果,并输出混淆矩阵与可视化图像。

图:CNN 总体设计管线

图 4:HybridSN 的数据处理与输出管线

图:HybridSN 混合卷积网络详细结构

图 5:HybridSN 混合卷积网络详细结构

2. 基线模型:核 SVM

深度模型在小样本数据集上极易出现过拟合。在遥感领域,高维、小样本恰恰是支持向量机的优势场景。因此,系统内置了核 SVM 作为经典的 Baseline。

执行管线如下:

  1. 提取所有 Ground Truth (GT) > 0 的有效标注像元。
  2. 将数据展平为一维向量,并进行标准化。
  3. 进行 PCA 降维(保留关键信息的同时降低计算复杂度)。
  4. 引入 RBF 核函数处理非线性特征,训练出最大间隔分类器。
  5. 将测试集的预测结果 reshape 回 $H \times W$ 的原始图像尺寸,生成可视化图。

图:SVM 模型训练与可视化流程

图 6:SVM 模型的执行管线

图:高维小样本下的 SVM 优势与核函数原理

图 7:SVM 核心原理与核函数


四、后端

在这个过程中,我主要负责了后端的接口设计与系统对接。

1. 目录规范与产物管理
为了让前端能准确拉取训练结果,我制定了统一的目录结构和产物命名规范。每次训练结束后,算法层必须按标准输出 7 张可视化图像、2 份指标报告以及对应的模型权重,并统一存放在 visualizations/reports/ 目录下。

图:后端架构规范与基础目录设计

图 8:后端 FastAPI 架构与模型目录规划

2. 接口设计与异步训练
schemas.py 中,利用 Pydantic 定义了严格的数据模型。以前端发起的 CNN 训练请求为例,接口需要接收 test_ratio(划分比例)、window_size(滑窗大小)、pca_components(降维数)、lr(学习率)等参数。

接收请求后,FastAPI 通过子进程或后台任务唤起训练脚本,前端则通过轮询接口获取当前训练日志和进度,避免了请求超时。

3. 云端部署
服务最终通过 PyCharm SSH 直连部署到了阿里云服务器,利用公网 IP 提供稳定的 API 接口支持。

图: schemas 定义与云端服务器对接部署

图 9:Schemas 验证定义与云端部署流程


五、前端集成与数据可视化

由于后端输出了高度标准化的数据,前端部分的对接逻辑变得非常清晰。前端在接收到后端的评估指标与图像路径后,渲染出了直观的可视化面板。

系统最终能够在一页内呈现:

  • 损失函数(Loss)与准确率(Accuracy)的动态曲线图。
  • 真实的分类伪彩色图与 Ground Truth 的对比三联图。
  • 基于 OA(总体精度)、AA(平均精度)与 Kappa 系数生成的雷达图与混淆矩阵。

图:前端多主题架构、UI 集成与数据可视化流程

图 10:前端 UI 集成与最终的数据可视化呈现


六、项目进度回顾与总结

从初期需求分析到基础架构搭建,再到前后端联调与模型接入,整个项目周期排期非常紧凑。在开发末期,通过跟踪燃尽图(,我们如期完成了所有功能的交付测试。

图:Week 9 - Week 14 实际进度曲线

图 11:项目实际进度曲线

图:冲刺阶段项目工作量燃尽图

图 12:核心开发阶段的燃尽图


Author: linda1729
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source linda1729 !
评论
  TOC