导读:本文是“数据拾光者”专栏的第三十六篇文章,这个系列将介绍在广告行业中自然语言处理和推荐系统实践。本篇主要介绍下腾讯2021广告大赛多模态视频广告标签baseline以及优化思路,对于希望解锁视频内容理解的小伙伴可能有所帮助。
摘要:本篇主要介绍下腾讯2021广告大赛多模态视频广告标签baseline以及优化思路。首先介绍参加比赛的背景,相比于单模态文本理解,多模态视频内容的理解更具挑战;然后介绍了官方提供的一个baseline,包括系统说明、系统整体结构以及baseline源码介绍和运行说明;最后结合工作中的项目实践,介绍了关于优化的几个思路,主要分成从模型层面优化和样本层面优化。对于希望解锁视频内容理解的小伙伴可能有所帮助。
下面主要按照如下思维导图进行学习分享:
01
背景介绍
还是老套路介绍下背景,最近腾讯2021广告大赛开始了,有两个题目,第一个题目是视频广告秒级语义解析,第二个题目是多模态视频广告标签。随着视频尤其是短视频越来越火,人们在视频上投入的时间也越来越多。想要更深入的理解用户,挖掘用户的兴趣,那么对于视频数据源内容的理解也变得越来越重要,所以我选择了第二个题目《多模态视频广告标签》。这个任务本质上是一个视频分类任务,和我当前仅仅理解文本数据相比,视频内容不仅包括文本(视频字幕信息),而且包括视频、音频和图片等多模态信息,可以说更具挑战,想通过这个比赛学习下视频内容理解相关的知识,为后续理解视频内容做技术储备。下面是官方赛题说明图:
图1 腾讯2021广告大赛说明图
比赛官方地址在这里:
https://algo.qq.com/
02
一个不错的baseline
上面介绍了背景,本节主要介绍官方提供的一个baseline,通过这个例子可以快速上手视频分类任务,然后基于这个任务可以尝试各种魔改操作。
2.1 系统说明
多模态视频广告标签任务本质上是一个视频分类任务。视频相比于传统的文本、图片模态来说更为复杂,同时包括视频、音频、图片和文本内容,想要很好的理解视频数据源,那么需要同时理解这四种模态的数据,所以任务的难度大大提升。可以说既需要懂CV知识,还需要懂NLP知识等等,这种任务难度升级,对应的挑战也升级,同时如果能搞定这类任务那么你的技术也会升级,对应的回报也会升级(主要是钱)。明确了动力需求,那么通过下图简单理解下多模态视频广告标签系统:
图2 多模态视频广告标签系统说明
通过上图可以看出,整个系统的输入是视频,输出是视频的标签,整体流程如下:首先会将视频数据抽取视频、音频、文本和图片四种模态的数据,然后获取各模态数据对应的embedding表示向量,接着进行多模态融合,最后输出对应的标签得分。标签总共包括四类,分别是呈现形式、场景、风格和叙事。这四类标签共有82个标签,所以对我们来说就是一个82分类任务,只不过最后提交的比赛数据是每条视频选择topN个标签。
2.2 系统整体结构
通过上面系统说明应该对赛题任务有了更加形象的理解,接下来看看官方提供的baseline的系统整体结构:
图3 官方baseline系统整体结构
如上图所示,系统整体的输入视频内容解析得到的视频信息、音频信息、图片信息和文字信息,输出是82分类得分。得到各模态数据信息之后会经过特征抽取操作,视频和音频信息主要通过NeXtVLAD模型进行抽取特征,图片信息通过resnet_v2_50模型抽取特征,文本信息则通过我们比较熟悉的BERT模型来抽取特征;各模态特征抽取完成之后会通过fusion layer进行特征融合操作;最后会将融合之后的特征用于分类。
2.3 baseline源码介绍和运行说明
Baseline项目工程如下图所示:
图4 baseline项目工程
Baseline项目工程如上图所示,run.sh是程序运行脚本,通过如下命令完成项目初始化和环境搭建:
sudo chmod a+x ./init.sh &&./init.sh run
通过如下命令进行模型训练流程:
sudo chmod a+x ./run.sh && ./run.shtrain
通过如下命令进行模型预测流程:
sudo chmod a+x./run.sh && ./run.sh testcheckpoints/tagging5k_temp/export/step_6000_0.7328
上图中通过下划线重点说明了对于多模态数据的特征抽取流程,其中红色代表对于视频、音频、文本和图片四种模态的特征抽取代码,绿色代表四种模态特征融合代码,黄色代表分类模块代码。个人感觉可以重点学习下项目的配置文件说明,因为最近刚好负责搭建半监督框架项目,感觉baseline中配置文件的管理特别规范,学习很多,所以这里进行详细说明配置文件config.tagging.5k.yaml:
图5 项目配置文件
通过配置文件可以很方便的决定使用哪些模态的数据特征,同时对于不同模态使用对应的特征抽取模型定义和使用也非常方面。同时还包括特征融合层和分类层说明,整个配置文件简洁清晰,使用者可以很方便的进行项目配置和使用。
03
关于优化的几个思路
借鉴实际工作中的经验,关于baseline的优化思路主要分成模型层面优化和样本层面优化。
3.1 模型层面优化
(1) 特征抽取层优化:获取各模态更优质的特征embedding向量
(2) 特征融合层优化:Baseline采用的是SE融合方式,参考之前阿里DIN模型的思路,可以对多模态特征进行concat、sum、avg等融合操作
(3) 分类层优化:baseline采用的是LogisticModel,可以使用更复杂的分类层等进行操作。模型层面的优化总结下来就是分别对特征抽取层、特征融合层和分类层分别进行优化。
3.2 样本层面优化
相比于模型层面优化,我其实更趋向于在样本层面做更多的优化工作。因为在实际的NLP工作实践中样本优化带来的收益远大于模型层面优化,主要原因在于现在NLP任务一般都会考虑上BERT等前沿模型,从模型层面来看已经是很好的基线。在这样的前提下样本层面的优化就可以带来更多的收益。样本层面优化的核心目的是增加训练数据,主要有以下几个思路:
(1)获取更多的比赛相关的视频数据集。这里可以是公共数据集,也可以尽量找比赛相关的视频数据集;
(2)可以通过样本增强扩展数据集。比如我尝试过对图片、文本模态数据源进行样本增强,那么可以通过这种方式可以扩展训练集;
(3)通过半监督训练方式增加伪标签样本进行训练流程。
04
总结
本篇主要介绍下腾讯2021广告大赛多模态视频广告标签baseline以及优化思路。首先介绍参加比赛的背景,相比于单模态文本理解,多模态视频内容的理解更具挑战;然后介绍了官方提供的一个baseline,包括系统说明、系统整体结构以及baseline源码介绍和运行说明;最后结合工作中的项目实践,介绍了关于优化的几个思路,主要分成从模型层面优化和样本层面优化。对于希望解锁视频内容理解的小伙伴可能有所帮助。