返回列表

19th Place Solution - Jasper models

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

开始: 2023-05-10 结束: 2023-08-24 计算机视觉 数据算法赛

第19名解决方案 - Jasper模型

作者:Kolya Forrat | 排名:第19名 | 发布日期:2023-08-26

我的解决方案非常简单。我本来不打算写出来的,但讨论区还没有类似Jasper的解决方案 :)

预处理

预处理几乎与上一场比赛相同。但删除了mixup和替换增强,并添加了更复杂的时间增强。

损失函数

我只使用了CTC损失。

数据划分

按数据长度分组,随机划分(按用户)为20折。
删除明显有问题的样本:

supplemental_metadata_df = supplemental_metadata_df[~((supplemental_metadata_df['length'] < 10) &
                                            (supplemental_metadata_df['phrase_len'] > 8))]

train_df = train_df[~((train_df['length'] < 7) & (train_df['phrase_len'] > 5))]


训练集中使用了所有补充数据。

还尝试为预测较差的样本创建带有伪标签的第二个数据加载器,或直接删除这些样本。训练时交替使用两个加载器:

loader_to_use = 'main_loader'
if epoch % 3 == 0:
    loader_to_use = 'second_loader'

但效果并不明显。

模型

首先尝试了简单的quartznet,但将所有步长设置为1。
然后逐步添加功能,并从之前的最佳检查点开始训练每个实验。

所有实验的相同配置:

  • 优化器:LookAheadAdamW
  • 调度器:Onecycle
  • 批次大小:80

实验列表:

  • 简单5x5 quartznet,步长=1。[lr = 8e-3] [epochs=200] CV:0.8035
  • 简单5x5 quartznet,步长=1。[lr = 7e-3] [epochs=150] CV: 0.8106
  • 之前模型 + SE模块。[lr = 6e-3] [epochs=171] CV: 0.8160
  • 之前模型 + 深度监督(DSV)输出用于训练损失。[lr = 5.8e-3] [epochs=175] CV: 0.8211
  • 之前模型无DSV + 更高的增强概率。注意:分数更差,但需要训练一个无DSV的检查点以获得更好的后续训练结果。[lr = 6e-3] [epochs=180] CV: 0.8177
  • 之前模型 + DSV + 增加dropout。[lr = 6.1e-3] [epochs=200] CV: 0.8237
  • 之前模型 - DSV + 降低dropout。[lr = 6e-3] [epochs=173] CV: 0.8188
  • 之前模型 + 超列(HYP) + 2个更多块,各重复5次。[lr=5.8e-3] [epochs=180] CV: 0.8252
  • 之前模型 + 掩码1conv + 掩码SE + 分类器前2D深度可分离CNN层 + 更多dropout。[lr=5.8e-3] [epochs=200] CV: 0.8294
  • 之前模型 + 2D卷积后接LSTM。[lr=1.75e-3] [epochs=125] CV: 0.8301

对我无效的方法

  • Conformer模型。我尝试过,但可能投入不够。
  • 向Jasper模型添加注意力或conformer模块。

当我使用原始的conformer时,得分很低。但当我将输入2D卷积改为1D卷积或干脆删除它时,效果好了很多,但仍略逊于我的Jasper模型。

我应该做但没有做的事情

  • 训练更多轮次
  • 更深入地尝试conformer或squeezeformer
  • 添加后处理
  • 尝试seq2seq
  • 固定输入长度

感谢Kaggle举办这场精彩的比赛。感谢所有分享出色解决方案的顶尖参与者。
祝贺所有获奖者!

同比赛其他方案