SpecSure Alpha 冲刺小结(Alpha 2/3)
项目名:SpecSure(澜瞳)
小组名:BlueArray(潮霸)
本周是 Alpha 阶段的第二次冲刺,重点从“能跑起来”逐步过渡到“更工程化、更接近真实 Web 系统”——前端开始定稿 UI 风格,后端完成 CNN 训练任务调度与异步执行,CNN / SVM 模型也在往“可被系统直接调用”的方向上收敛。
一、项目与团队基本信息
- 团队 ID:01
- 组长博客:https://blog.linda1729.com/columns/specsure/
- Github 仓库:https://github.com/linda1729/SpecSure
小组分工:
- 前端:於佳杰
- 后端 & 组长:刘芳宇
- CNN 模型:陈怡冰
- SVM 模型:邓林
Alpha 阶段目标(整体):
在既有选题与准备工作的基础上,完成可运行的 Alpha 原型,包括:
- 需求确认与数据流程梳理
- CNN / SVM 模型初版
- 后端接口设计与实现
- 前端页面与交互原型
前期文档(选题、分工、准备工作、预期功能等)都已整理在仓库 dos/w9/ 和 dos/w10/ 中,这里不再逐一展开。
二、本轮冲刺整体概况
从系统视角来看,这一轮 Alpha 2/3 主要做了几件事:
- 前端:
- 定下统一的浅色简约风格
- 完成主页与可视化 Demo 的静态原型
- 和后端确认了核心 API 的参数与返回格式
- 后端 & 组长:
- 接入 CNN 模型训练与推理
- 实现训练任务的异步调度与状态查询
- 统一接口前缀、整理配置与文档,开始“减技术债”
- CNN 模型:
- 在功能完整的基础上做了一轮结构重构
- 拆成 API / Model / Train / Utils / Reports 等模块
- 准备小规模数据与对接文档,方便后端和前端接入
- SVM 模型:
- 模型 baseline 跑通,并加入可视化与 FastAPI 接口
- 能够输出多种结果图和指标,支持前端展示
- 进入调参与性能对比阶段
下面按模块具体展开。
三、模块进展
1. 前端进展(於佳杰)
已完成:
- 需求确认与风格定调
- 在“深色星空版”和“浅色简约版”两个 Demo 中做了对比后,团队决定采用 浅色(白色)简约风格,优先保证图表和高光谱可视化的可读性。
- 确认前端需要覆盖的功能模块:
- Data Import:上传
.hsi/.hdr/.mat,展示 RGB 合成图 - Preprocessing:降噪、波段选择、标准化流程的 UI 控件
- Model Training:SVM / CNN 双模型切换,进度条、日志框、Loss 曲线
- Results:分类结果伪彩色图、光谱对比、混淆矩阵与指标统计图
- Data Import:上传
- 静态原型(Alpha 版)
- 技术栈:React + TailwindCSS + ECharts
- 已完成:
- 首页(Home):团队介绍、技术栈简介、数据处理流程概要,全部使用确定的浅色 UI 风格。
- 部分可视化 Demo:用静态数据搭出布局与交互雏形,验证页面结构与组件组合。
- 与后端 API 格式对齐
- 确认好以下接口的参数与返回结构(从前端视角):
/upload_hsi:上传文件使用multipart/form-data/classify_cnn、/classify_svm:训练与推理所需参数结构/evaluate:混淆矩阵 + Accuracy / Recall 等指标的返回格式
- 确认好以下接口的参数与返回结构(从前端视角):
下一步计划:
- 完善首页与静态页面文案内容(填充真实团队信息与项目描述)
- 等后端和模型联调稳定后,开始接入真实 API,替换 mock 数据
- 增加上传进度、训练过程的动态图表更新等交互
遇到的困难:
- 一些细节交互(如波段滑块、多参数联动)实现复杂度较高,需要控制范围和优先级,避免“想做的比能做的多太多”。
2. 后端 & 组长工作(刘芳宇)
详细改动记录见:
dos/w11/backend/目录。
1)数据管理与预处理支持
- 设计并实现了后端的数据集管理逻辑:
- 支持“一键加载默认数据集”(已验证)
- 支持用户上传数据(接口已实现,等待更多测试)
- 预处理流程由模型侧实现,后端负责调度与数据路径管理,统一管理:
- 数据目录与配置
- 模型输入的数据格式
- 预处理参数(降噪、波段选择、标准化)
2)CNN 分类模块接入
- 为 CNN(HybridSN)提供了完整的后端支持:
- 训练接口
- 推理接口
- 模型权重与输出产物的统一命名与存储
- 提供:
- 默认超参数 / 模型路径一键加载
- 模型日志回传(用于前端查看训练过程)
SVM 接口结构也已在后端预留,方便之后做对比实验统一调用。
3)训练任务调度与异步执行
这是本轮后端的一个关键升级点:
- 把训练过程从“同步阻塞”改造为:
- 后台线程异步执行长任务
- 通过任务 ID 管理状态、进度、时间、错误信息
- 新增:
- 任务状态查询接口
- 日志尾部解析接口,方便前端轮询或拉取最新日志
- 解决了:
- 前端请求超时
- 云端 GPU 长任务阻塞 API 的问题
4)分类结果与评估输出
后端目前可以结构化地输出:
- 分类结果图(路径 + 访问方式)
- 整体指标:
- Overall Accuracy
- Kappa 系数
- 混淆矩阵
- 前端只需按约定的字段取值并可视化即可
5)后端架构与配置重构
- 统一 API 前缀为
/api/cnn,避免不同部署环境下的路径问题 - 精简
main.py,只保留必要路由和静态挂载 - 删除旧数据目录和冗余模块,减少技术债务
- 重构
schemas.py,把请求 / 响应结构统一管理,同时更新了:API.mdAPI_FULL.md
6)本地 & 云端联调支持
- 后端支持:
- 本地 / 云端 FastAPI 部署
- 通过配置切换不同环境中的 API_BASE
- 实现了:
- 本地前端 + 云端后端 + 云端 GPU 的“分离式开发”模式
下一步计划:
- 完成 CNN 新增功能的整理与收尾
- 尽快和 SVM 模块完成对接
- 根据前端反馈,对部分接口结构做适配性简化,争取 Alpha 阶段收个“闭环版本”
3. CNN 模块进展(陈怡冰)
已完成:
- 功能完整 + 工程化重构
- 之前的基础功能(训练 / 推理 /评估)已经在 Alpha 1/3 完成,这一轮重点是工程化:
- 按模块拆分为:
API、Model、Train、Utils、Reports等 - 封装推理接口,使其可以被后端以“黑盒函数”的方式直接调用
- 按模块拆分为:
- 之前的基础功能(训练 / 推理 /评估)已经在 Alpha 1/3 完成,这一轮重点是工程化:
- 对接准备
- 整理了一份对接文档,明确:
- 输入参数(数据路径、超参数等)
- 输出内容(指标 JSON、图片路径等)
- 为团队准备了一份小规模数据集,方便在无 GPU 环境下做联调和验证
- 整理了一份对接文档,明确:
下一步计划:
- 补充训练过程的 Loss 曲线导出,用于后端 / 前端展示
- 根据后端实际调用情况,微调接口输入输出格式
- 继续调研多模态方案(光谱特征 + 空间纹理)
遇到的困难:
- 本地计算资源有限,训练速度慢,需要优化数据加载或多用小数据集做快速实验
- 模型输出的 numpy 结果需要与后端的序列化流程对齐,避免在 JSON / ndarray / 文件之间来回“翻译出错”
4. SVM 模块进展(邓林)
已完成:
- SVM Baseline 模型
- 基于
scikit-learn实现了 SVM 的训练与预测,支持:linear、rbf核等多种配置
- 实现并封装了:
- Overall Accuracy(OA)
- Kappa 系数
- 混淆矩阵计算
- 基于
- 数据处理与预处理
- 将
.mat格式的高光谱数据整理为X.npy和y.npy,供 SVM 使用 - 完成包含降噪、波段选择、标准化在内的预处理流程
- 将
- 可视化输出
- 模型可以输出四种典型可视化图:
- Ground Truth(真实标签)
- HSI RGB 可视化图
- Correct vs Error 图(正确为绿色、错误为红色)
- SVM 预测结果图
- 图像通过
/static路径对外暴露,前端可直接引用 URL 展示
- 模型可以输出四种典型可视化图:
- API 接口与前后端协作
- 使用 FastAPI 实现了 SVM 运行接口
POST /api/svm/run:- 返回分类指标(Accuracy / Kappa 等)
- 返回可视化图像的链接
- 与前端同学对接了调用流程和展示逻辑
- 使用 FastAPI 实现了 SVM 运行接口
下一步计划:
- 配合前端做完整一次从“上传数据 → 训练 → 结果展示”的闭环测试
- 在此基础上开始系统化调参(C、gamma 等)并进行对比实验
- 按不同核函数、不同参数形成性能报告,作为后期展示内容的一部分
遇到的困难:
- 不同数据集的光谱维度和标签格式不完全一致,需要在预处理阶段做更多统一工作
- 大数据集(如 Salinas)上训练时有一定内存压力,需要进一步引入分批处理策略
- 调参需要多轮实验,如何在时间有限的前提下取一个“够用且解释得清楚”的配置,也是需要权衡的点
四、本轮冲刺成果小结
1. 系统层面
- 前端完成了整体 UI 风格与首页结构,明确了“数据导入 → 预处理 → 训练 → 结果评估”的完整工作流页面框架
- 后端完成 CNN 模型的接入、训练任务的异步化,以及核心指标的结构化输出
- CNN / SVM 模块都从“实验脚本”向“可被系统调用的模块”迈出了一大步
2. 工程与协作层面
- 确立并实践了“Main + 个人 feature 分支”的协作方式
- 文档、周报、设计说明统一整理在
docs目录下,便于追踪 - 多次站会用于对齐:
- UI 风格
- 接口定义
- 开发策略(如先用小数据集做调试)
五、站立会议记录
- 时间:12 月 3 日
- 地点:线上 / 线下混合会议
- 主要内容:
- 整体框架:确认统一使用 FastAPI + Web 形式,后端保留一个 mock 前端用于自测
- UI 风格:团队投票确认主要采用浅色风格,主页及静态页由前端统一美化
- 接口对接:队长要求算法组提供明确的 Input / Output 文档,优先接上 CNN
- 开发策略:采用“简化原则”,优先用小规模数据集调通流程,再上大数据集
- 协作规范:再次强调 Git 工作流(先拉 main → 分支开发 → PR 合并)、文档归档位置