CASE FILE / PROJECT
POP909 MIDI 音乐智能分析系统
基于 POP909 流行音乐 MIDI 数据集,构建一个端到端的音乐智能分析系统。系统包含三大核心能力:旋律/伴奏自动分类、24 类音乐调性预测、以及从混合钢琴卷帘中提取旋律线条。项目提供完整的训练管线、Streamlit 交互式 Demo,最终在验证集上实现 Task1 分类准确率 100%、Task2 调性预测 F1 0.926 的优秀性能。
- STATUS
- 已完成
- TYPE
- 机器学习
- UPDATED
- 2026.06
01
项目定位
本项目是大学《机器学习》课程第 14 周期末大作业,使用匿名化的 POP909 流行音乐 MIDI 数据完成三个不同难度的音乐理解任务: Task 1 — 旋律/伴奏分类(60 分) 对 8 小节单轨 MIDI 片段进行二分类,判断其是旋律声部还是伴奏声部。模型支持基于手工统计特征(音符密度、平均同时发声数、最大同时发声数、平均音高、音域跨度)的 MLP 训练,以及基于完整 pianoroll 图像的 CNN 训练。该项目在验证集上达到了 100% 的准确率和 Macro-F1。 Task 2 — 24 类调性预测(20 分) 对混合 MIDI 乐曲进行大调/小调及主音共 24 类的调性识别。采用 8 窗口音级比例特征 + 窗口投票机制,有效提升了调性预测的鲁棒性,验证集 Macro-F1 达到 0.926。 Task 3 — 旋律提取(20 分) 从混合多声部 pianoroll(128×88 像素)中逐帧提取旋律音符 mask。采用 U-Net 风格的编码器-解码器结构,配合仅在活跃音符位置计算 BCE Loss 的策略,输出每帧最多一个音的合法旋律线。 工程亮点: - 完整的 PyTorch 训练管线:数据加载、特征工程、模型训练、验证评估、测试预测导出 - 自动化提交打包:根据学号生成防抄袭的 prediction 文件顺序,自动打包 submission zip 工程亮点: - 完整的 PyTorch 训练管线:数据加载、特征工程、模型训练、验证评估、测试预测导出 - 自动化提交打包:根据学号生成防抄袭的 prediction 文件顺序,自动打包 submission zip - Streamlit 交互式 Demo:支持上传 MIDI、选择任务、可视化 pianoroll 并实时输出预测结果 - 报告必做实验:单特征 vs 多特征对比、窗口数消融实验、Loss 策略对照实验 - 学号绑定的防作弊机制:prediction CSV 行顺序由学号唯一确定
02
核心工作
更多工作内容将在后台补充后展示。
03
技术架构
Python / PyTorch / Jupyter Lab / Matplotlib
已完成
04
页面截图
有类似项目需要沟通?
可以先说明业务场景、现有材料和期望完成时间。

