SpecSure Alpha 冲刺小结(Alpha 2/3)


SpecSure Alpha 冲刺小结(Alpha 2/3)

项目名:SpecSure(澜瞳)
小组名:BlueArray(潮霸)

本周是 Alpha 阶段的第二次冲刺,重点从“能跑起来”逐步过渡到“更工程化、更接近真实 Web 系统”——前端开始定稿 UI 风格,后端完成 CNN 训练任务调度与异步执行,CNN / SVM 模型也在往“可被系统直接调用”的方向上收敛。


一、项目与团队基本信息

小组分工:

  • 前端:於佳杰
  • 后端 & 组长:刘芳宇
  • CNN 模型:陈怡冰
  • SVM 模型:邓林

Alpha 阶段目标(整体)
在既有选题与准备工作的基础上,完成可运行的 Alpha 原型,包括:

  • 需求确认与数据流程梳理
  • CNN / SVM 模型初版
  • 后端接口设计与实现
  • 前端页面与交互原型

前期文档(选题、分工、准备工作、预期功能等)都已整理在仓库 dos/w9/dos/w10/ 中,这里不再逐一展开。


二、本轮冲刺整体概况

从系统视角来看,这一轮 Alpha 2/3 主要做了几件事:

  1. 前端
    • 定下统一的浅色简约风格
    • 完成主页与可视化 Demo 的静态原型
    • 和后端确认了核心 API 的参数与返回格式
  2. 后端 & 组长
    • 接入 CNN 模型训练与推理
    • 实现训练任务的异步调度与状态查询
    • 统一接口前缀、整理配置与文档,开始“减技术债”
  3. CNN 模型
    • 在功能完整的基础上做了一轮结构重构
    • 拆成 API / Model / Train / Utils / Reports 等模块
    • 准备小规模数据与对接文档,方便后端和前端接入
  4. SVM 模型
    • 模型 baseline 跑通,并加入可视化与 FastAPI 接口
    • 能够输出多种结果图和指标,支持前端展示
    • 进入调参与性能对比阶段

下面按模块具体展开。


三、模块进展

1. 前端进展(於佳杰)

已完成:

  1. 需求确认与风格定调
    • 在“深色星空版”和“浅色简约版”两个 Demo 中做了对比后,团队决定采用 浅色(白色)简约风格,优先保证图表和高光谱可视化的可读性。
    • 确认前端需要覆盖的功能模块:
      • Data Import:上传 .hsi / .hdr / .mat,展示 RGB 合成图
      • Preprocessing:降噪、波段选择、标准化流程的 UI 控件
      • Model Training:SVM / CNN 双模型切换,进度条、日志框、Loss 曲线
      • Results:分类结果伪彩色图、光谱对比、混淆矩阵与指标统计图
  2. 静态原型(Alpha 版)
    • 技术栈:React + TailwindCSS + ECharts
    • 已完成:
      • 首页(Home):团队介绍、技术栈简介、数据处理流程概要,全部使用确定的浅色 UI 风格。
      • 部分可视化 Demo:用静态数据搭出布局与交互雏形,验证页面结构与组件组合。
  3. 与后端 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.md
    • API_FULL.md

6)本地 & 云端联调支持

  • 后端支持:
    • 本地 / 云端 FastAPI 部署
    • 通过配置切换不同环境中的 API_BASE
  • 实现了:
    • 本地前端 + 云端后端 + 云端 GPU 的“分离式开发”模式

下一步计划:

  • 完成 CNN 新增功能的整理与收尾
  • 尽快和 SVM 模块完成对接
  • 根据前端反馈,对部分接口结构做适配性简化,争取 Alpha 阶段收个“闭环版本”

3. CNN 模块进展(陈怡冰)

已完成:

  1. 功能完整 + 工程化重构
    • 之前的基础功能(训练 / 推理 /评估)已经在 Alpha 1/3 完成,这一轮重点是工程化
      • 按模块拆分为:APIModelTrainUtilsReports
      • 封装推理接口,使其可以被后端以“黑盒函数”的方式直接调用
  2. 对接准备
    • 整理了一份对接文档,明确:
      • 输入参数(数据路径、超参数等)
      • 输出内容(指标 JSON、图片路径等)
    • 为团队准备了一份小规模数据集,方便在无 GPU 环境下做联调和验证

下一步计划:

  • 补充训练过程的 Loss 曲线导出,用于后端 / 前端展示
  • 根据后端实际调用情况,微调接口输入输出格式
  • 继续调研多模态方案(光谱特征 + 空间纹理)

遇到的困难:

  • 本地计算资源有限,训练速度慢,需要优化数据加载或多用小数据集做快速实验
  • 模型输出的 numpy 结果需要与后端的序列化流程对齐,避免在 JSON / ndarray / 文件之间来回“翻译出错”

4. SVM 模块进展(邓林)

已完成:

  1. SVM Baseline 模型
    • 基于 scikit-learn 实现了 SVM 的训练与预测,支持:
      • linearrbf 核等多种配置
    • 实现并封装了:
      • Overall Accuracy(OA)
      • Kappa 系数
      • 混淆矩阵计算
  2. 数据处理与预处理
    • .mat 格式的高光谱数据整理为 X.npyy.npy,供 SVM 使用
    • 完成包含降噪、波段选择、标准化在内的预处理流程
  3. 可视化输出
    • 模型可以输出四种典型可视化图:
      • Ground Truth(真实标签)
      • HSI RGB 可视化图
      • Correct vs Error 图(正确为绿色、错误为红色)
      • SVM 预测结果图
    • 图像通过 /static 路径对外暴露,前端可直接引用 URL 展示
  4. API 接口与前后端协作
    • 使用 FastAPI 实现了 SVM 运行接口 POST /api/svm/run
      • 返回分类指标(Accuracy / Kappa 等)
      • 返回可视化图像的链接
    • 与前端同学对接了调用流程和展示逻辑

下一步计划:

  • 配合前端做完整一次从“上传数据 → 训练 → 结果展示”的闭环测试
  • 在此基础上开始系统化调参(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 合并)、文档归档位置

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