第49名银牌解决方案
作者:RB(MASTER)
排名:第49名
发布时间:2023年5月2日
得票数:15票
感谢Kaggle和Pop sign主办这场比赛。我很享受解决这个问题,并从讨论帖和分享的代码中学到了很多——感谢@hengck23。
- PyTorch 2.0(纯PyTorch,无训练库)→ ONNX → TFLite
- 每段视频的最大帧数(即最大长度)= 256(中心裁剪)
- 通过LIP、SPOSE、Lhand和Rhand进行归一化(共90个关键点)
- 翻转增强(概率p=0.5)
- 距离、运动和加速度特征(总计1050维)
- 模型基本与此处分享的一致——使用16维位置编码,在FeedForwardNetwork中添加了LayerNorm,以及两个带有BatchNorm的全连接层,最后的全连接层采用CLS令牌和平均池化
- 损失函数:带标签平滑(label smoothing = 0.75)的交叉熵
- 训练50个轮次:前15轮dropout为0.0,15-35轮dropout为0.4,剩余轮次dropout为0.2
- FP16量化显著减小了模型体积——最终模型大小约26MB,5折训练约需60分钟
未奏效的尝试
- 外部数据:虽然提升了3-4个名次,但因其数据混乱且无商业许可,最终决定不使用
- 增加更多特征、减少最大长度、移除帧数过高或过低的视频
- SWA(随机权重平均):未能成功应用
- 仿射增强(Affine Augment)提升了交叉验证和私有榜分数,但未提升公开榜
- 各种超参数调整,如编码器块数量、嵌入维度
- ArcFace损失:根据此帖,ArcFace损失加标签平滑似乎无效。本应尝试仅使用ArcFace而不加标签平滑
- 还尝试将此TensorFlow模型转换为PyTorch
根据私有榜分数,私有榜数据似乎比训练集噪声更少。