赛事解析|乒乓球时序动作定位大赛亚军方案分享
比赛介绍
时序动作定位(提案生成)是计算机视觉和视频分析领域一个具有挑战性的任务。本次比赛不同于以往的 ActivityNet-TAL,FineAction 等视频时序检测动作定位比赛,采用了更精细的动作数据集–乒乓球转播画面,该数据集具有动作时间跨度短、分布密集等特点,给传统模型精确定位细粒度动作带来了很大挑战。
数据集介绍及处理
数据集介绍
本次比赛的数据集包含了 19-21 赛季兵乓球国际比赛(世界杯、世锦赛、亚锦赛,奥运会)和国内比赛(全运会,乒超联赛)中标准单机位高清转播画面的特征信息,共包含 912 条视频特征文件,每个视频时长在 0~6 分钟不等,特征维度为 2048,以 pkl 格式保存。
数据处理方案
1.数据预处理
本赛题数据集中每条视频特征有不同的帧长(训练集帧长范围为 464~8992,其中 90%的序列帧长超过 8704),对于如此长且长度不统一的视频序列,将其直接输入到模型中用于训练是不现实的。我们对最初的训练集按 39:1 的比例进行划分,得到新的训练集与验证集。当然,可以按照其他比例如 9:1 进行数据集划分,但是因为我们设计的验证方案(后续会提到)在数据量较多时耗费的时间更长,因此在验证可靠性与验证时间之间做出了取舍。
训练集
参照 BMN[1]论文单元 3.5 中 Training Data Construction 部分所讲,我们也以一个滑动窗口对每一个长视频序列进行切分,其中步长为窗口长度的一半,同时要注意的是我们所保留的每一个视频切片必须包含至少一个完整提案。但是滑动窗口的长度如何选取呢?
首先我们对训练集相应的动作提案标签进行分析,总共有 19054 个提案标签(长度范围为 1~831),分布如图 1 所示。我们设提案长度为 D,当 D=93 时,已能够覆盖 99.9%的动作提案。因此我们选择提案长度 D 为 100,足以覆盖几乎全部的动作提案。当然为了减少训练推理时计算量,也可以选择更小的 D,如 D=50。正如冠军团队所说,PaddleVideo 的 anet_pipeline.py 第 50 行出现错误,使得视频切片长度 T 与提案长度 D 不相等时便报错,故我们默认滑动窗口长度 T 与 D 相等,皆为 100。当然,当 T 稍微更大时,比如 T=200,可以使模型更好地建模长提案的上下文,但会带来更多的计算代价,因此 T 大小的选择可以在速度与性能之间进行权衡。
图 1 训练集动作提案长度分布
验证集
为了在训练完模型之后对保存的模型进行筛选得到其中较好的模型,我们先后设计了两种验证方案。第一种方案是将验证集按照训练集的视频切分方式,即最后保留的切片都包含至少一个完整提案。这其实是与测试时不符的,即我们不应该事先知道哪些切片包含提案,而是应该对所有切片一视同仁。因此,第一种方案的验证分数远超 A 榜测试分数,但并不推荐。第二种方案则是模拟测试过程,即将验证集按照训练集的视频切分方式,但最后保留所有切片(每个切片不一定包含提案)。模型预测之后将每个视频对应的所有切片预测的提案进行汇总并进一步使用 soft nms 等方法筛选之后作为原未划分视频的预测提案信息,与标签对比计算 AUC 分数,作为模型筛选的凭证。
因此,我们对测试数据集的处理与验证集的第二种验证方案一致,即以一个滑动窗口对每一个长视频序列进行切分,其中步长为窗口长度 T 的一半,保留所有的切片。
2.提案后处理
如验证集第二种验证方案所讲,在选定的模型对测试集所有视频切片预测之后,我们将每个视频对应的所有切片预测的提案进行汇总并进一步使用 soft nms 等方法筛选之后作为原未划分视频的预测提案信息,并保存在 submission.json 中,打包之后即可提交 A 榜或 B 榜。
模型设计思路
这里围绕我们的最终模型进行讲述,思路演进可以见[2]。
模型整体架构
首先要提及的是我们的基础网络,即百度自研的 BMN[1]模型,如图 2 所示。
图 2 BMN 模型整体架构
该模型由三个模块组成,基础模块(Base Module)作为主干网络处理输入的特征序列,TEM 模块(Temporal Evaluation Module)预测每一个时序位置属于动作开始、动作结束的概率,PEM 模块(Proposal Evaluation Module)生成 BM 置信度图。基于 BMN[1]模型,我们对 Base Module 部分进行了修改,但继续沿用 TEM 模块和 PEM 模块,如图 3 所示。
图 3 (a)我们最终模型的 Base Module;
图 3 (b)我们最终模型的整体结构
Base Module
为了使模型轻量,BMN[1]的基础模块使用的是两层的 3x3 分组卷积。由于分组之后,每通道信息只在各组中融合,而组与组之间无信息流通,会使得模型丢失一部分信息,降低模型容量。轻量化网络 ShuffleNet 采用 Channel Shuffle 操作使得信息跨组流通来解决这个问题,同样地,在这里我们也引入了 Channel Shuffle 操作。当然,也可以使用 1x1 卷积来解决,但会引入额外的参数和计算量。Channel Shuffle 操作的代码如下:
为了扩大时域建模的感受野和建模更多的上下文信息,同时保证模型轻量,我们采用 stride=2 的 3x3 分组卷积对输入特征进行下采样。由于 U-Net 网络在图片分割领域的成功,正如 BSN++[3]中所述,采用 U-Net 这种 Encoder-Decoder 结构,网络可以同时捕捉高层次的全局上下文和低层次的局部细节。这恰恰可以帮助模型对提案边界的预测和对预测提案置信度的评估。但是与 BSN++[3]不同,我们将 U-Net 结构应用到了基础模块,且采用的不是 U-Net++[5]。由图 3(a)可以看到我们的基础模块的结构,在使用 U-Net 结构之前,由于输入特征序列的维度为 2048,为了减少计算量,我们先利用两层卷积对输入特征序列进行降维,将降维后的输出输入到 Encoder-Decoder 结构中。为了尽可能地不引入过多的参数量和计算量,我们采取分组卷积和 Channel Shuffle 操作,且尽可能地使用较少的通道数,同时 U-Net 结构仅采用了 5 层。当然,也引入了额外的跳过连接,来使得 U-Net 结构的输入输出特征融合。
从骨骼点动作识别方法 SGN[6]显式使用节点类型和帧索引来增强模型对节点语义信息的建模得到启发,我们引入时域位置编码,显式地将视频帧顺序加入到模型中,确定视频开始与结束的差异,增强模型对一帧的表达能力和对全局、局部上下文的建模能力,更好地确定动作提案的开始与结束边界。当然,位置编码的加入位置是有多种选择的。我们经过比较 AUC 分数与引入的代价,最终确定将其加入到降维模块与 U-Net 结构之间。当然当我们在 TEM 模块之前加入位置编码时,可以将视频序列时间正向、反向两次传入模型的 TEM 模块,利用类似集成的方式来提高提案开始点和结束点的预测精度,但考虑到两次可能增加一部分计算量,没有采用。不过仅仅引入时域位置编码就大大地提高了模型的预测性能,使得我们的 A 榜分数从 48.216 提升至 48.828。
当然,在 Base Module 中也可以引入注意力机制,但测试发现 SE 模块没有带来性能提升,且引入了额外的计算量。
Temporal Evaluation Module
与 BMN[1]模型一致,我们沿用了它的 TEM 模块结构,仅在第一个卷积的输入通道数有差别。当然,修改过的 SE 模块、non-local 块等注意力机制也曾应用到两层卷积之间,但提升不大,且引入了额外的计算量,故最终方案没有采用。
SE 模块代码如下:
Proposal Evaluation Module
PEM 模块是 BMN[1]模型推理时间占比最大的部分,从图[2]可以看到,PEM 模块存在 3D 卷积和多个 2D 卷积,带来了巨大的计算耗费。当然我们最终方案沿用的是 BMN[1]模型的 PEM 模块。这里只提及我们做过的一些尝试。首先,如何对 3D 卷积进行取代?可以采用(2D+1D)来取代 3D 卷积;也可以减小 3D 卷积的输出通道数,采用 2D 卷积与 3D 卷积两路混合来取代 3D 卷积;采用 3D 可分离卷积或分组卷积等。虽然产生了高效的模型,但不可避免地带来了性能下降,不过 A 榜 AUC 分数仍能达到 48 分以上。然后,对 2D 卷积进行处理,我们尝试 2D 分组卷积和 Channel Shuffle 操作来替代,引入 U-Net 结构等,但相对最终方案性能都略低,但相对高效。
总结与完善方向
由于比赛要求不超过两个模型,且提到除了模型精度以外模型数量和模型耗时指标的权重分数会高于其他指标,我们专注于模型本身的设计,在兼顾轻量的同时追求高性能,故 TTA 等集成方法均没有采用。由于是基于 A 榜分数改进模型,最终模型不可避免地对 A 榜测试集过拟合,使得 B 榜分数下降,因此提高模型泛化性也是未来要改进的一个方向。此外,模型压缩等手段我们均未采用,所以设计容量大但冗余的模型,再进行压缩得到轻量结构也是一个完善方向。当然,模型本身也有许多完善的方向,比如 PEM 模块的轻量化。参照冠军方案[7],训练数据处理与增强方案也可以进一步完善。
最后感谢百度官方提供算力与框架支持,感谢 PaddleVideo 套件提供强力支持。最后希望 PaddleVideo 可以把更多前沿的学术成果迁移到飞桨框架,越做越好!
参赛项目地址:
https://aistudio.baidu.com/aistudio/projectdetail/3548768
PaddleVideo 地址:
https://github.com/PaddlePaddle/PaddleVideo
参考文献
[1] Tianwei Lin, Xiao Liu, Xin Li, Errui Ding, and Shilei Wen. BMN: Boundary-Matching Network for Temporal Action Proposal Generation[C].In Proceedings of the IEEE/CVF International Conference on Computer Vision. 2019: 3889-3898.
[2] 翟濮成, 基于飞桨实现乒乓球时序动作定位大赛 :B 榜第 2 名方案.
[3] Haisheng Su, Weihao Gan, Wei Wu, Yu Qiao, and Junjie Yan. BSN++: Complementary Boundary Regressor with Scale-Balanced Relation Modeling for Temporal Action Proposal Generation[C]. In Proceedings of the AAAI Conference on Artificial Intelligence. 2021, 35(3): 2602-2610.
[4] Ronneberger O, Fischer P, and Brox T. U-Net: Convolutional Networks for Biomedical Image Segmentation. In International Conference on Medical image computing and computer-assisted intervention. Springer, Cham, 2015: 234-241.
[5] Zongwei Zhou, Md Mahfuzur Rahman Siddiquee, Nima Tajbakhsh, and Jianming Liang. UNet++: A Nested U-Net Architecture for Medical Image Segmentation[M]. Deep learning in medical image analysis and multimodal learning for clinical decision support. Springer, Cham, 2018: 3-11.
[6] Pengfei Zhang, Cuiling Lan, Wenjun Zeng, Junliang Xing, Jianru Xue, and Nanning Zheng. Semantics-Guided Neural Networks for Efficient Skeleton-Based Human Action Recognition[C]. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020: 1112-1121.
[7] 来路生云烟,路里老咯,基于飞桨实现乒乓球时序动作定位大赛 :B 榜第 1 名方案.
评论