1. 项目背景与核心目标
北航学院路校区2025秋季学期的机器学习课程期末项目,是计算机科学与技术专业高年级学生的核心实践环节。这个项目不同于传统的闭卷考试,而是采用开放式课题的形式,要求学生综合运用整个学期所学的机器学习理论知识,完成从问题定义到模型部署的全流程实践。
在过去的教学实践中,我们发现单纯的理论考核难以真实反映学生对机器学习核心思想的理解程度。因此从2023年开始,课程组对考核方式进行了重大改革:期末成绩的60%取决于这个实践项目的完成质量。项目周期为4周,学生需要组队(3-5人)或独立完成,最终提交技术报告、源代码和演示视频三部分材料。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 项目设计要求解析
2.1 选题范围与技术要求
今年的项目特别强调"解决真实问题"的导向。选题范围包括但不限于:
- 基于视觉的校园场景理解(如教室占用检测、垃圾分类监控)
- 教学行为分析(如课堂专注度评估、师生互动模式识别)
- 校园服务优化(如食堂人流预测、图书馆座位推荐)
技术要求方面,项目必须包含以下核心环节:
- 完整的数据采集与标注流程(禁止直接使用现成数据集)
- 至少两种不同架构的模型对比实验
- 模型轻量化与部署演示(需在树莓派级别设备上运行)
- 严格的消融实验与可解释性分析
2.2 评分标准详解
评分分为四个维度,各占25%权重:
- 创新性:问题定义的新颖程度,解决方案的创造性
- 完整性:是否覆盖数据工程、模型训练、部署应用全流程
- 严谨性:实验设计是否科学,分析是否深入
- 工程性:代码质量、文档完整度和部署效果
特别值得注意的是,今年新增了"负结果报告"加分项(最高+10分)。如果学生能详细记录并分析实验失败的原因,即使最终模型性能不佳,也可能获得额外分数。这个设计是为了鼓励学生正视科研中的失败案例。
3. 技术实现关键点
3.1 数据工程实践要点
数据采集阶段最容易出现的问题包括:
- 样本分布偏差(如只在晴天采集图像)
- 标注标准不一致(不同成员标注差异大)
- 数据泄露(测试集信息混入训练过程)
我们推荐使用以下工具链:
python复制# 数据采集建议方案
import pycocotools # 用于目标标注
from label_studio import Project # 标注平台
# 创建标注项目
project = Project(
title="教室检测",
label_config="""
<View>
<Image name="image" value="$image"/>
<RectangleLabels name="label" toName="image">
<Label value="occupied" background="#FF0000"/>
<Label value="empty" background="#00FF00"/>
</RectangleLabels>
</View>
"""
)
3.2 模型选型策略
根据往届经验,这些架构组合效果较好:
- 视觉任务:ResNet18+Vision Transformer对比
- 时序预测:LSTM+Temporal Fusion Transformer对比
- 轻量化部署:MobileNetV3+知识蒸馏
关键技巧包括:
- 使用wandb或MLflow进行实验追踪
- 早停策略的patience参数建议设为epoch总数的20%
- 学习率采用余弦退火调度,初始值设为3e-4
3.3 部署优化技巧
在树莓派4B上的优化方案:
bash复制# 模型转换示例
python -m tf2onnx.convert \
--saved-model ./saved_model \
--output model.onnx \
--opset 13
# 使用ONNX Runtime进行推理优化
ort-optimize --input model.onnx --output optimized.onnx \
--enable_transpose_optimization \
--enable_fuse_attention
实测表明,经过优化的模型可以在树莓派上达到:
- 图像分类:~50ms/帧(224x224输入)
- 目标检测:~200ms/帧(320x320输入)
4. 常见问题与解决方案
4.1 数据不足的应对策略
当样本量有限时(<1000样本),推荐方案:
- 使用半监督学习(FixMatch算法)
- 基于Stable Diffusion的数据增强
- 迁移学习(冻结backbone后微调)
4.2 模型不收敛的排查流程
建议按照以下顺序检查:
- 数据预处理是否正确(归一化范围是否匹配预训练模型)
- 损失函数计算是否有误(特别是自定义loss时)
- 梯度是否出现爆炸/消失(监控gradient norm)
- 学习率是否合适(尝试lr range test)
4.3 部署时的典型问题
这些错误最常出现:
- 框架版本不匹配(如训练用TF2.6但部署环境是TF2.4)
- 输入输出张量形状不一致
- 动态维度处理不当
解决方案是:
务必在开发环境使用docker容器,并导出完整的依赖清单:
bash复制pip freeze > requirements.txt conda env export > environment.yml
5. 优秀项目特征分析
根据往届获奖项目,这些特质值得关注:
- 问题定义阶段
- 精确界定场景边界(如"第二教学楼3-5层教室"而非泛化的"教室检测")
- 明确定义评价指标(不仅用准确率,还要考虑FPS、能耗等)
- 实验设计方面
- 控制变量法的严格应用(每次只改变一个超参数)
- 基线模型的合理选择(至少与随机猜测、简单规则对比)
- 报告撰写技巧
- 使用可视化分析工具(如SHAP、LIME)
- 失败案例的深入剖析(如某个数据增强策略为何失效)
- 计算资源消耗统计(GPU小时、内存峰值等)
一个值得参考的报告结构:
code复制1. 问题定义(1页)
2. 相关工作(2页,需引用课程讲义)
3. 方法设计(3页,突出与课程知识的关联)
4. 实验分析(4页,图表为主)
5. 部署方案(2页)
6. 总结反思(1页)
6. 时间管理与协作建议
4周的项目周期建议这样分配:
- 第1周:确定选题+完成数据采集
- 第2周:基线模型实现+初步实验
- 第3周:模型优化+消融研究
- 第4周:部署测试+报告撰写
对于团队项目,这些工具链很实用:
- 代码协作:Git+Github(建议使用issue跟踪任务)
- 文档协作:Overleaf(LaTeX在线编辑)
- 模型训练:使用课程提供的GPU服务器(每人限额100小时)
特别提醒:最后48小时服务器负载会激增,建议提前完成计算密集型任务。模型训练时记得设置checkpoint保存,避免因超时被终止任务导致进度丢失。
