多任务多帧视觉钢琴转写 Multi-Task Multi-Frame Visual Piano Transcription
首个完整视觉钢琴转写系统,联合预测起音、释音、按键保持与力度。
前置知识
视觉钢琴转写(VPT)
Visual Piano Transcription 直接从拍摄钢琴键盘的视频中恢复符号化的演奏信息(音高、起音、释音、力度)。与基于音频的转写不同,它观察按键本身,因此能直接读取物理按键状态,不受延音踏板导致的余音干扰。早期方法用背景减除,现代方法(S2S、V2R、PPAN)用 ResNet 或 ViT 处理 5–6 帧的短窗口。
本文的核心任务就是 VPT,理解它才能明白为何‘看键盘’能解决‘听音频’解决不了的释音问题。
MIDI 与延音踏板问题
MIDI 用 NoteOn(按键)/NoteOff(松键)事件描述音符,配合 CC64 控制延音踏板。音频转写遇到一个根本矛盾:踩下延音踏板后琴声在松键后仍持续数秒,所以音频系统通常把音符终点扩展到踏板释放时刻,导致与 MIDI NoteOff 偏差可达数秒。本文用视频绕过这一矛盾,直接观测物理键释放。
这是整篇论文的动机核心——‘释音准确’是音频转写长期无法解决的痛点,而视频恰好能直接看到键是否抬起。
Conformer ConvModule
Conformer 是语音识别中的卷积增强 Transformer,其 ConvModule 结构为 FFN→深度可分离一维卷积→FFN,配合残差连接。本文省略自注意力,仅用 3 个核大小 31 的卷积模块堆叠,使 1 秒输入窗口(25 帧)的每一帧都能获得覆盖全部帧的感受野,而无需自注意力的平方计算开销。
这是 V2N 时序骨干的关键设计,理解它才能看懂架构消融中‘序列建模带来最大单项增益’的结论。
多任务联合训练(Onsets-and-Frames 范式)
源自音频钢琴转写的经典工作 Onsets and Frames:同时预测稀疏的起音事件、密集的持续帧活动、以及力度。这种互补性大幅提升了转写效果。本文把该范式迁移到视觉域,增加专门的释音头,并用‘按键保持’(key hold)对应音频中的‘帧活动’。
V2N 的四个任务头(起音/释音/按键保持/力度)正是这一思想在视觉上的延伸,理解它才能读懂多任务消融表。
基于帧级 F1 的音符级评测(mir_eval)
评测先把帧级预测解码为 MIDI 音符事件,再用 mir_eval 计算 F1。包含五个指标:帧级(60Hz 网格上多音高 F1)、起音(音高+起音在容差 τ 内匹配)、+Off(再加释音匹配,但用与起音相同的 τ 而非 mir_eval 默认的 max(0.2d,50ms))、+Vel(加力度匹配 10%)、+Off+Vel(最严格,四属性全匹配)。τ 取 50ms 或 100ms。
结果表中的 F1 列含义依赖于此,特别是 +Off 用严格释音容差,这正是体现视频物理释音优势的关键指标。
研究动机
音频钢琴转写在音高、起音、力度上已很成熟,但释音(offset)受延音踏板系统性干扰:松键后声音仍持续,所以音频系统习惯把音符终点扩展到踏板释放时刻,与 MIDI NoteOff 偏差可达数秒。转而看视频本是解决之道,因为按下的键在视觉上与抬起的键截然不同,且不受踏板影响。但现有视觉钢琴转写(VPT)方法严重不足:S2S、V2R、PPAN 至多只处理 0.2 秒视频上下文,仅在窗口中心帧监督,释音准确率远低于起音(例如作者重新评测 PPAN 在 PianoVAM 上 50ms 的 +Off F1 仅 45.9%),并且从不报告音符级力度。最接近的音视频融合工作 Li et al. 仍从声学帧活动推断释音、且不报告力度。换言之,VPT 领域既没有‘完整 MIDI 转写’,也缺少对物理释音的专门建模。
本文的目标是作者目标是构建第一个完整的 VPT 系统 V2N(Video to Notes),用视频单独恢复 MIDI 的全部四个属性:起音(onset)、释音(offset)、按键保持(key hold)与力度(velocity)。具体做法是用一个共享时序骨干喂给四个任务头,在 1 秒视频窗口上做每帧监督(而非仅窗口中心)。作者希望在 PianoVAM 和 R3 两个数据集上刷新 SOTA,并成为首个报告音符级力度 F1 的纯视频系统,同时通过消融验证‘多任务头 + 多帧监督 + 释音引导解码’这三项设计选择的有效性。
与已有工作不同的是,本文的独特切入是把音频转写里成熟的 Onsets-and-Frames 多任务范式整体迁移到视觉域,但做了一处本质改写:释音不再是‘从声音衰减推断’,而是‘对物理键释放的直接观测’。由于起音线索不同(手指运动 vs 频谱瞬态),作者为视觉专门设计了 Conformer 卷积骨干、稀疏起音/释音的软三角核标签、以及偏置引导的音符解码(在释音头峰值处终止音符,按键保持作为兜底)。这与以往只在中心帧做二分类、且把释音当作帧活动副产物的做法形成本质区别,从而第一次让纯视频系统在物理释音和力度上都达到可用精度。
核心方法
直觉很简单:按键被按下与抬起在视觉上完全可分,与踏板状态无关,所以视频能直接读出物理键状态。V2N 沿这条思路把灰度键盘视频逐帧编码,建模帧间依赖,再并行输出四个逐帧预测:起音 $o_{t,k}$、释音 $r_{t,k}$、按键保持 $f_{t,k}$(均为 sigmoid 概率)和力度 $v_{t,k}$(线性回归)。推理时起音峰值定义音符起点并读取该处力度,释音峰值定义终点(若按键保持先降到阈值以下则提前结束)。整条管线由三部分组成:视觉特征提取器(S2S 的 ResNet-18 + 斜率先验,5 帧聚合)、共享时序骨干(3 个 Conformer ConvModule)、四个 BiLSTM→Linear 任务头,共 28.2M 参数、每秒视频摊销约 250 GFLOPs。
三项核心创新相对以往方法形成本质区别:第一,多帧监督——不再只在 5 帧窗口的中心帧打标签,而是对 1 秒窗口的全部 25 帧监督,每个片段获得约 5 倍监督信号且推理零成本,这一改使钢琴独奏数据上的 +Off 提升约 4.5 个百分点。第二,多任务头的互补性——把释音、按键保持、力度既当作训练监督、又当作推理信号,专门的释音头让物理键释放被直接观测而非由按键保持(帧活动)推断。第三,释音引导解码——在释音头峰值处终止音符(按键保持兜底),取代音频转写传统的按键保持阈值法。这三点合起来让 V2N 成为第一个能在起音、释音、力度上同时达到高精度的纯视频系统。
方法步骤详情
(1) 前端:键盘透视变换得灰度帧,灰度 ResNet-18+斜率先验每帧 5 帧聚合、GAP 得 $T\times512$ 再线性投影降维。(2) 骨干与头:3 个 Conformer ConvModule(核 31 深度卷积、无自注意力)覆盖全部 25 帧;后接四个 BiLSTM→Linear 头——起音/释音/按键保持 sigmoid 出 $T\times88$,力度线性回归、推理裁剪 $[0,127]$。(3) 训练:起音/释音用峰值 1.0、$\pm2$ 帧衰减的软三角核,按键保持 $[onset,offset)$ 内为 1,力度仅真实起音处掩码回归;总损失 $\mathcal{L}=2L_{on}+L_{off}+L_{kh}+L_{vel}$。AdamW 学习率 $5\times10^{-4}$、余弦调度、bfloat16、批 16;PianoVAM 100k 步、R3 200k 步。(4) 推理:0.5 秒步长滑窗、留中心预测;起音峰 $>\tau_{on}=0.5$ 开音符并读力度,延伸到下一释音峰 $>\tau_{off}=0.5$ 或起音+按键保持跌破阈值为止。
技术新颖性
新颖性集中在‘把完整 MIDI 转写第一次搬到纯视频’这一组合上:首个报告音符级力度 F1 的纯视频系统;首次用多帧损失在 1 秒长上下文上监督每个视频帧;首次用 Conformer 风格卷积骨干(取代 S2S 的纯空间 ResNet)解决‘按住 vs 抬起’的歧义;首次引入专门的释音头并设计释音引导解码。作者还证明级联式(cascaded)头不优于并行头,故保留更简单的并行设计。计算上虽达 125 GFLOPs/1s 片段,但 0.5 秒步长摊销后约 250 GFLOPs/秒输入,在单卡 RTX 5080 上 bfloat16 推理每秒视频仅需 40ms(实时因子 RTF≈0.04),反而比 Li et al. 的视频分支更轻。
实验结果
主结果(Table 1)显示 V2N 全面领先。PianoVAM 起音 F1 94.7%(50ms)/97.0%(100ms),持平音视频融合的 Li et al.(94.2/97.4)并超越所有纯视频基线;释音突破最大:+Off 从 PPAN 的 45.9% 跃升到 89.5%(近翻倍),+Off+Vel 从 29.7% 到 78.3%(+48.6 个百分点),+Vel 50ms 82.8% 为首个报告。更难的 R3 优势更大:R3s 起音 78.8%(基线 38.7–47.7%)、+Off 69.5%;R3x 起音 73.3%、+Off 68.5%。消融(Table 2)表明每个任务头既作监督又作推理信号,去掉任一头释音 F1 崩塌,释音引导解码带来最佳 +Off。架构消融(Table 3):序列建模单项最大增益(起音 +2.5、+Off +5.7),1 秒长上下文 PianoVAM 仅 +0.4/+0.8 但在 R3 决定性。跨数据集迁移(Table 4)对所有系统崩溃到近 0,根因是键盘像素宽度差异(R3≈784px vs PianoVAM≈606px)使固定几何预处理失效。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| PianoVAM 起音 F1 (50ms) | Onset F1 | 94.7% | PPAN 84.9% / Li et al. 94.2% | 超越 PPAN +9.8,持平 Li et al. |
| PianoVAM 物理释音 F1 (50ms) | +Off F1 | 89.5% | PPAN 45.9% | +43.6 个百分点,几乎翻倍 |
| PianoVAM 全属性 F1 (50ms) | +Off+Vel F1 | 78.3% | PPAN 29.7% | +48.6 个百分点 |
| PianoVAM 力度 F1 (50ms) | +Vel F1 | 82.8% | 无基线(首个报告) | 首次纯视频音符级力度 |
| R3s 起音 F1 (100ms) | Onset F1 | 91.7% | S2S 84.7% / PPAN 83.4% | +8.3 vs PPAN |
| R3s 物理释音 F1 (100ms) | +Off F1 | 88.9% | PPAN 60.3% | +28.6 个百分点 |
局限与改进
作者坦承两大局限:其一,跨数据集迁移几乎完全失败(Table 4),原因是透视变换只统一了像素网格而非键盘在其中的几何——同一列索引在不同数据集指向不同琴键,V2N 和所有基线都受此影响,反映固定几何预处理与模型强耦合。其二,V2N 不预测延音踏板(CC64),而踏板是真实钢琴演奏的重要表现维度。此外训练数据 R3 存在同步问题:895 个文件中有 70 个音视频偏差超过 200ms(MIDI 整体早于视频),经互相关检测;剔除受影响的 10 个 R3x 测试文件后,V2N 在 100ms 上起音 +7.7、+Off +7.9、+Vel +6.6、+Off+Vel +6.7 个百分点。我额外观察到:25 fps(40ms 分辨率)的量化误差逼近 50ms 容差,评测可能受帧率制约;仅在单一俯视机位、固定键盘预处理下评测,对多机位/遮挡/手势遮挡的鲁棒性未验证。
独立分析的弱点
第一,几何强耦合是最大软肋:透视变换依赖手标键盘角点,模型把‘像素列→琴键’的映射学死,跨数据集即崩溃。改进方向是几何不变的键盘定位(如关键点检测 + 可微对齐)或位置无关的特征学习。第二,缺失踏板建模,导致转出的 MIDI 在表现力上不完整,可增加第五个踏板头,并设计音视频协同的踏板监督。第三,同步噪声拖累训练:70/895 文件偏差超 200ms,可用联合时间对齐(如 DTW 或可微对齐层)在训练时自动校正音视频偏移。第四,25 fps 量化误差逼近评测容差,若提升到 60 fps 原生帧率或加入亚帧起音回归(类似音频工作的高分辨率回归),可进一步压低容差边界误差。第五,仅在固定俯视、单机位场景评测,对手部遮挡、侧拍、多乐器同框的真实场景缺少验证,可补充遮挡增强与多视角训练。
未来方向
作者明确列出四条:(1) 几何不变的键盘定位,解决跨数据集迁移;(2) 针对噪声训练数据的联合同步对齐;(3) 延音踏板估计,补齐完整 MIDI;(4) 在 V2N 视觉贡献基础上做音视频融合。基于本成果还可延伸:把多任务多帧监督范式推广到其他键盘乐器(管风琴、羽管键琴)或打击乐;用 V2N 生成的物理释音作为弱监督,反向改进音频转写的释音标注;探索自监督预训练(在大量无标注练琴视频上)以缓解标注稀缺;以及把释音引导解码的思想移植回音频域,重新定义‘物理释音 vs 声学释音’的双轨评测。
复现评估
复现度很高。作者公开了代码、训练好的 checkpoint 和预测 MIDI(https://github.com/yonghyunk1m/V2N),两个数据集 PianoVAM 和 R3 均公开,按 PianoVAM v1.1 元数据划分训练/验证/测试。超参数完整:AdamW 学习率 $5\times10^{-4}$、权重衰减 0.01、余弦调度、bfloat16、有效批大小 16、PianoVAM 100k 步/R3 200k 步,增强采用 PPAN 配方(亮度抖动 ±10%、旋转 ±0.2°、随机擦除、高斯噪声 σ=0.1)。基线 S2S/V2R/PPAN/Li et al. 都用各自官方代码与默认超参从头训练,且复现的 R3s/R3x 起音数与发表值相差约 1 个百分点,说明基线可比。算力门槛低:单卡 RTX 5080、bfloat16、梯度采样,推理每秒视频仅 40ms(RTF≈0.04)。唯一需注意 R3 的同步偏差文件清单需从仓库获取,且评测依赖固定的 τ=50/100ms 容差约定。
论文图表
用同一琴键连续两次击键示意‘视频能直接看到物理键状态’。红色↓为按键(起音,力度与下压力度成正比),蓝色↑为松键(释音)。按键保持(Key Hold)随物理键状态起伏,而音频活跃(Audio Active)在延音踏板期间持续延长,二者仅在未踩踏板时一致。实心/空心端点表示边界帧是否纳入活跃区间。
这张图一图道破全文动机:解释了为什么音频转写的释音会失真、而视频能直接观测物理释音,是理解后续所有释音指标和 offset-guided 解码的视觉锚点。
10 秒 PianoVAM 测试片段(Yiruma《Kiss the Rain》)的钢琴卷帘对比:矩形高度=音高、宽度=时长、填充=力度。Li et al. 的音符塌缩到接近零时长,PPAN 能给出合理时长但力度恒定,只有 V2N 同时重建了音符时长与动态起伏,与真值最接近。
用直观的钢琴卷帘可视化把‘完整 MIDI 转写’的优势讲透——时长和力度两个维度同时被还原,是 Table 1 数字背后的可视化佐证。