返回列表

[The 11th place] Shallow encoder-decoder model also works

570. Google - American Sign Language Fingerspelling Recognition | asl-fingerspelling

开始: 2023-05-10 结束: 2023-08-24 计算机视觉 数据算法赛
作者:bliao
排名:第11名
发布时间:2023年8月25日

[第11名] 浅层编解码模型同样有效

感谢以下优秀的公开笔记:
[1] MARK WIJKHUIZEN的数据预处理笔记
[2] HOYSO48在ISLR中获得第一名的笔记

可复现代码:

  1. 数据预处理笔记
  2. 训练代码:我需要时间整理,稍后会提供详细指导。

数据预处理

我的预处理和数据分割基于[1],主要区别如下:

  1. 使用与[2]相同的特征点(仅x和y坐标)
  2. 基于唯一短语进行10折分割,使用第一折作为验证集。不同折之间没有共享短语。短语分割 > 随机分割 > 参与者ID分割
  3. 对补充数据采用相同的预处理方式

数据增强

基本使用与[2]相同的增强方法和超参数,主要区别:

  1. 以50%概率随机拼接两个样本,有助于防止过拟合
  2. 对解码器输入,以20%概率用词汇表中的随机字符替换真实字符,避免曝光偏差

模型架构

使用Conformer作为编码器,标准Transformer解码器。Conformer同时关注局部和全局关系,优于标准Transformer编码器。

  1. 同时使用CTC损失和交叉熵损失:编码器输出后应用CTC损失,解码器输出后应用交叉熵损失。损失权重:CTC损失0.2,交叉熵损失0.8。优势:

    • 一个模型支持两种生成方式:非自回归(编码器)和自回归(解码器)
    • 两个损失相互正则化,丢弃解码器后可增加训练参数量
  2. 超参数:5层编码器(hidden_dim=384, mlp_dim=1024, conv_dim=768, num_heads=6),3层解码器(hidden_dim=256, mlp_dim=512, num_heads=4)

三阶段训练

全部使用AdamW优化器,逆平方根学习率调度,权重衰减0.001,梯度裁剪最大值5,学习率5e-4,批大小512,预热比例0.2,标签平滑0.1,帧长368。

  1. 第一阶段:仅用训练集训练100轮
  2. 第二阶段:加入所有训练数据和补充数据训练150轮
  3. 第三阶段:使用AWP(awp_delta=0.2, awp_eps=0)在所有数据上训练300轮,AWP比RDROP泛化效果更好

无效尝试

  1. BPE:尝试使用子词而非字符,但无效
  2. 过宽浅层模型:FP16量化后模型约1800万参数(37MB)。动态量化可达4000万参数,但会使推理时间从2.5小时增至4小时,LB仅下降0.001。尝试8层编码器+4层解码器(帧长100限制推理时间),效果不佳可能因过拟合
  3. 编码器-解码器集成:对自回归和非自回归输出概率进行平均,结果无提升
  4. 外部数据:使用ChicagoFSWild数据集无效,主要因领域偏移

改进方向

  1. 加入姿态特征和z坐标可能更有效
  2. 使用更深但更窄的模型
同比赛其他方案