随着多媒体、网络和存储技术的快速发展,视频数据量呈现爆炸式增长。面对如此庞大的视频数据,无论是处理还是监管都成了难题!剪辑人员希望从比赛录像中便捷地提取比赛集锦,上网课的老师希望随时了解电脑摄像头前的学生是否在安心听讲,短视频网站希望能迅速给每个新作品打上标签并推送给合适的用户,监管部门也希望能精准发现不合规的视频内容等等。但是人力有穷时,都靠人来做肯定是不现实的,人搞不定,人工智能行不行呢?这个真可以有!
在深度学习的CV领域中,有个重要的研究方向就是视频理解,简而言之,就是通过AI技术让机器可以理解视频内容,如今在短视频、推荐、搜索、广告,安防等领域有着广泛的应用和研究价值,像下面这种视频打标签、视频内容分析之类的任务都可以通过视频理解技术搞定!
视频相较于图像,具有额外的时间维度信息,因此如何更好的利用视频中的时序信息是视频领域研究的重点。目前常用的方法有三类:
使用RNN对视频特征做时序建模,如AttentionLSTM模型。这类模型的输入是视频特征,而不是原始视频,因此往往用作后处理模块。
使用3D网络提取时序信息。如SlowFast模型,创新性的使用Slow和Fast两个网络分支分别捕获视频中的表观信息和运动信息。这一方法在很大程度上是受到灵长类视觉系统中视网膜神经节细胞的生物学研究所启发。
研究发现,在灵长类的视觉系统中,约80%为是P细胞,15-20%是M细胞。M细胞以较高的频率工作,对时间变化更加敏感;P细胞则提供良好的空间细节和颜色感知。相应的,SlowFast模型的Slow分支类似于P细胞,感知空间信息;Fast分支类似于M细胞,对时间变化敏感。该模型在视频分类任务上取得了SOTA的效果,同时也是AVA 视频检测挑战赛的冠军模型。
使用2D网络提取时序信息,如经典的TSN和TSM模型。相较于TSN模型,TSM模型使用时序位移模块对时序信息建模,在不增加计算量的前提下提升网络的精度,非常适合工业落地。
3D网络在精度方面很有优势,但由于3D卷积计算量大,训练和推理耗时较大,难以用于产业实践;而2D网络虽然计算量较小,训练和预测速度快,但对时序信息的建模能力相对不足,精度普遍偏低。依托丰富的视觉领域模型优化经验,飞桨视频理解团队基于TSM模型打造了一个非常适用于产业实践的高效行为识别模型PP-TSM,并在相关应用场景取得显著收益。在基本不增加计算量的前提下,PP-TSM使用Kinetics-400数据集训练的精度可以提升到76.16%,超过同等Backbone下的3D模型SlowFast,且推理速度提升了4.5倍,具有显著的性能优势。
注:模型精度以实际测试为准,所有模型采用同一份数据进行训练测试。
源码链接:
https://github.com/PaddlePaddle/PaddleVideo
那PP-TSM到底采用了哪些优化策略呢?下面咱们带领大家一起来深入剖析一下飞桨团队算法优化的 “内功心法”。
1.数据增强Video Mix-up
Mix-up是图像领域常用的数据增广方法,它将两幅图像以一定的权值叠加构成新的输入图像。对于视频Mix-up,即是将两个视频以一定的权值叠加构成新的输入视频。相较于图像,视频由于多了时间维度,混合的方式可以有更多的选择。实验中,我们对每个视频,首先抽取固定数量的帧,并给每一帧赋予相同的权重,然后与另一个视频叠加作为新的输入视频。结果表明,这种Mix-up方式能有效提升网络在时空上的抗干扰能力。
2.更优的网络结构
Better Backbone:骨干网络可以说是一个模型的基础,一个优秀的骨干网络会给模型的性能带来极大的提升。针对TSM,飞桨研发人员使用更加优异的ResNet50_vd作为模型的骨干网络,在保持原有参数量的同时提升了模型精度。
ResNet50_vd是指拥有50个卷积层的ResNet-D网络。如下图所示,ResNet系列网络在被提出后经过了B、C、D三个版本的改进。ResNet-B将Path A中1*1卷积的stride由2改为1,避免了信息丢失;ResNet-C将第一个7*7的卷积核调整为3个3*3卷积核,减少计算量的同时增加了网络非线性;ResNet-D进一步将Path B中1*1卷积的stride由2改为1,并添加了平均池化层,保留了更多的信息。
Feature aggregation:对TSM模型,在骨干网络提取特征后,还需要使用分类器做特征分类。实验表明,在特征平均之后分类,可以减少frame-level特征的干扰,获得更高的精度。假设输入视频抽取的帧数为N,则经过骨干网络后,可以得到N个frame-level特征。分类器有两种实现方式:第一种是先对N个帧级特征进行平均,得到视频级特征后,再用全连接层进行分类;另一种方式是先接全连接层,得到N个权重后进行平均。飞桨开发人员经过大量实验验证发现,采用第1种方式有更好的精度收益。
3.更稳定的训练策略
Cosine decay LR:在使用梯度下降算法优化目标函数时,我们使用余弦退火策略调整学习率。假设共有T个step,在第t个step时学习率按以下公式更新。同时使用Warm-up策略,在模型训练之初选用较小的学习率,训练一段时间之后再使用预设的学习率训练,这使得收敛过程更加快速平滑。
Scale fc learning rate:在训练过程中,我们给全连接层设置的学习率为其它层的5倍。实验结果表明,通过给分类器层设置更大的学习率,有助于网络更好的学习收敛,提升模型精度。
4.Label smooth
标签平滑是一种对分类器层进行正则化的机制,通过在真实的分类标签one-hot编码中真实类别的1上减去一个小量,非真实标签的0上加上一个小量,将硬标签变成一个软标签,达到正则化的作用,防止过拟合,提升模型泛化能力。
5.Precise BN
假定训练数据的分布和测试数据的分布是一致的,对于Batch Normalization层,通常在训练过程中会计算滑动均值和滑动方差,供测试时使用。滑动均值的计算方式如下:
但滑动均值并不等于真实的均值,因此测试时的精度仍会受到一定影响。为了获取更加精确的均值和方差供BN层在测试时使用,在实验中,我们会在网络训练完一个Epoch后,固定住网络中的参数不动,然后将训练数据输入网络做前向计算,保存下来每个step的均值和方差,最终得到所有训练样本精确的均值和方差,提升测试精度。
6、知识蒸馏方案:
Two Stages Knowledge Distillation
我们使用两阶段知识蒸馏方案提升模型精度。第一阶段使用半监督标签知识蒸馏方法对图像分类模型进行蒸馏,以获得具有更好分类效果的pretrain模型。第二阶段使用更高精度的视频分类模型作为教师模型进行蒸馏,以进一步提升模型精度。实验中,将以ResNet152为Backbone的CSN模型作为第二阶段蒸馏的教师模型,在uniform和dense评估策略下,精度均可以提升大约0.6个点。最终PP-TSM精度达到76.16,超过同等Backbone下的SlowFast模型。
PP-TSM在实际业务中表现如何呢?以足球动作定位项目FootballAction为例,该项目可以提取出足球比赛的关键集锦,例如进球、角球、任意球等。在基础特征提取阶段,使用TSM模型替换TSN模型,精度由84%提升到90%,使用PP-TSM模型,分类精度能达到94%。FootballAction最终的precision和recall均有大幅提升,F1-score从0.57提升到了0.82。
PP-TSM所应用的这套优化策略其实也可以尝试应用于该系列的其它模型上(如TSN模型),欢迎广大产业开发者或者科研人员展开进一步的探索。
如果您觉得PP-TSM对您带来了一些启发或者确实实用话,也欢迎您可以给PaddleVideo项目点亮Star。
PaddleVideo项目链接:
https://github.com/PaddlePaddle/PaddleVideo
点击文末“阅读原文”,为PaddleVideo献上您宝贵的Star吧!
感兴趣的同学欢迎加入PaddleVideo微信群,与我们一起交流和技术探讨。
如果您想详细了解更多飞桨的相关内容,请参阅以下文档。
·飞桨官网地址·
https://www.paddlepaddle.org.cn/
·飞桨PaddleVideo项目地址·
GitHub: https://github.com/PaddlePaddle/PaddleVideo
Gitee: https://gitee.com/paddlepaddle/PaddleVideo
·飞桨开源框架项目地址·
GitHub: https://github.com/PaddlePaddle/Paddle
Gitee: https://gitee.com/paddlepaddle/Paddle