多模态视频分类

   日期:2023-09-03     浏览:171    

1 项目说明

随着UGC视频的爆炸增长,短视频人均使用时长及头部短视频平台日均活跃用户均持续增长,内容消费的诉求越来越受到人们的重视。同时对视频内容的理解丰富度要求也越来越高,需要对视频所带文本、音频、图像多模态数据多角度理解,才能提炼出用户真实的兴趣点和高层次语义信息。目前存在以下挑战:

  • 标签高语义

  • 模态不对齐

  • 多模态语义鸿沟

我们使用MutimodalVideoTag多模态视频分类模型,基于Paddle2.0版本进行开发。模型基于真实短视频业务数据,融合文本、视频图像、音频三种模态进行视频多模标签分类,相比纯视频图像特征,显著提升高层语义标签效果。其原理示意如 **图1 **所示。

图1 MutimodalVideoTag 多模态视频分类模型示意图

欢迎报名直播课加入交流群,如需更多技术交流与合作可点击报名链接

2 安装说明

环境要求

  • PaddlePaddle>=2.0.0

  • Python >= 3.5

下载PaddleVideo源码,下载一次即可:
!git clone https://github.com/PaddlePaddle/PaddleVideo.git* 注:更多安装教程请参考安装教程

3 数据准备

数据源来自UGC用户制作上传客户视频和视频标题,分别对视频三个模态的数据进行处理,对视频进行抽帧,获得图像序列;抽取视频的音频pcm文件;收集视频标题,简单进行文本长度截断,一般取50个字。

本项目提供已经抽取好图像、音频特征的特征文件,以及标题和标签信息,模型方面提供训练好checkpoint 文件,可进行finetune、模型评估、预测。执行如下命令即可下载,数据下载一次即可。%cd /home/aistudio/PaddleVideo/applications/MultimodalVideoTag/!sh download.sh下载的数据文件包括抽取好特征的文件夹feature_files,以及记录划分的txt 文件。其中feature_files包含了特征文件,格式为pkl,我们通过读取pkl文件查看存储结构。import pickle
import numpy as np
record = pickle.load(open(‘datasets/feature_files/74f021eb0d34ac98bc47837f9cbc5afa.pkl’, ‘rb’))
print(record.keys())
print('video feature: ', np.array(record[‘feature’][‘image_pkl’]).shape)
print('audio feature: ', np.array(record[‘feature’][‘audio_pkl’]).shape)
print('label: ', record[‘label’])记录划分的txt 文件格式如下:

文件名 \t 标题 \t 标签
18e9bf08a2fc7eaa4ee9215ab42ea827.mp4 叮叮来自肖宇梁肖宇梁rainco的特别起床铃声 拍人-帅哥,拍人-秀特效,明星周边-其他明星周边

我们可以通过head命令展示几条数据。
!head -n 10 datasets/val.txt# 标签文件
!head -n 10 datasets/class.txt

4 模型训练

模型训练整体流程如图2 所示,

图2 模型训练流程图

包含以下几个步骤:

  • 特征抽取:使用预训练的 ResNet 对图像抽取高层语义特征;使用预训练的VGGish网络抽取音频特征;文本方面使用ERNIE 1.0抽取文本特征,无需预先抽取,支持视频分类模型finetune

  • 序列学习:分别使用独立的LSTM 对图像特征和音频特征进行序列学习,文本方面预训练模型对字符序列进行建模,在ernie 后接入一个textcnn 网络做下游任务的迁移学习。

  • 多模融合:文本具有显式的高层语义信息,将文本特征引入到LSTM pooling 过程指导图像和音频时序权重分配,进行交叉融合,最后将文本、音频、视频特征拼接。

  • 预测结果:分类器选用sigmoid 多标签分类器,支持视频多标签输出。

文本特征提取

纯短文本分类,仅使用视频文本情况下(这里来自视频标题),评估多种文本编码器的分类效果,基于预训练模型的Bert和ERNIE有较大优势。

图3 文本特征提取示意图

图像特征提取

对视频进行截帧,每帧图像特征取自训练好的图像实体分类特征层,即分类前的隐层向量2048维, 作为图像的高语义向量表示,图像实体分类在千万规模、1000+类别图片上使用RestNet 进行训练。

图4 图像特征提取示意图

音频特征提取

对视频抽取音频wav文件,整个音频文件以960ms分段,每个960ms作为一个分段抽取128纬特征,960ms内部以窗口大小25ms,步长大小10ms ,通过mel + log传统音频特征抽取,抽取96* 64的音频特征,把这个特征当做一幅长度96,宽度64的图输入到VGGish 深度CNN 网络提取128纬特征向量,该网络使用Audioset(大规模音频分类数据集) 进行预训练。

图5 音频特征提取示意图

多模态融合

融合图像、音频、文本 三种模态特征,图像和音频为时间可对齐的序列特征,而和文本的序列非对齐, 结合UGC 视频主题杂乱的特点,将文本特征融入到音频、文本的时序attention中,增强文本和特定视频 帧、音频特征的匹配作用。也尝试基于门控的GMU方法,利用门控分别对每个模态控制,最后模态叠加。

图6 多模态融合示意图

模型训练过程有如下可调模式,可在根据数据集情况进行调整,在conf/conf.txt 文件中

  • ernie_freeze: 用于控制文本提特征的ernie 网络是否进行finetune,因为ernie 复杂度远大于图像、视频序列学习网络,因此在某些数据集上不好训练。

  • lstm_pool_mode: 用于控制lstm 序列池化的方式,默认是"text_guide"表示利用文本加强池化注意力权重,如果设置为空,则默认为自注意力的权重。

执行如下命令启动训练即可。%cd /home/aistudio/PaddleVideo/applications/MultimodalVideoTag/
!sh train.sh

5 模型评估

模型对测试集进行评估,同时支持将checkpoint 模型转为inference 模型, 可用参数’save_only’ 选项控制,设置即只用于做模型转换,得到inference 模型,输出结果第一行表示loss,第二行表示Hit@1 acc指标。!sh eval_and_save_model.sh!ls checkpoints_save_new/# 选择最优模型进行预测
!python scenario_lib/eval_and_save_model.py --model_name=AttentionLstmErnie
–config=./conf/conf.txt
–save_model_param_dir=checkpoints_save_new/AttentionLstmErnie_epoch4_acc100.0
–save_inference_model=inference_models_save

6 模型推理

通过上一步得到的inference 模型进行预测,结果默认阈值为0.5,存储到json 文件中,在conf/conf.txt 文件 threshold 参数进行控制多标签输出的阈值。!sh inference.sh查看推理结果,"video_id"表示测试的视频,"labels"分别表示预测类型和置信度。! head -n 10 output.json

7 模型优化

主要在文本分支进行了实验,首先加入文本对模型效果有明显提升,实验结果显示ERNIE 在多分支下不 微调,而是使用后置网络进行微调,训练速度快,且稳定,同时attention 方面使用文本信息增强图像、 音频的attention 学习能一定程度提升模型效果。

模型Hit@1Hit@2
图像+音频6378
图像+音频+文本分支ERNIE 不finetune +self-attention71.0783.72
图像+音频+文本分支ERNIE 不finetune +textcnn finetune + self-attention72.6685.01
图像+音频+文本分支ERNIE 不finetune +textcnn finetune + text-guide-attention73.2985.59

这里对多模融合方式进行实验,可以看到在同样没有拼接文本特征的情况下,使用文本进行指导video 和 audio 的 pooling 过程,仅仅只是贡献了LSTM pooling 的attention 权重,显著提升了模型效果+2.6%, 证明文本还是可以和图像,音频产生语义对齐的关系。下图为 attention 权重在时间上分布。

模型Hit@1Hit@2
图像+音频6378
图像+音频+text-guide-attention6680.5

模型鲁棒性,标题信息是不可控的,为了应对标题缺失的情况,这里的目标是不带标题信息,起 码应该达到video + audio 的效果,实验发现以整体概率置空效果较好,实验阈值整体概率值为 0.4时达到最佳。

模型预测不带标题Hit@1带标题Hit@1带标题Hit@2
图像+音频636378
图像+音频+文本5573.385.6
图像+音频+随机0.4 drop6272.485.1

8 模型部署

在项目中为用户提供了基于paddle inference C++ 按照部署的方案,效果如下所示。用户可根据实际情况自行参考。

欢迎报名直播课加入交流群,如需更多技术交流与合作可点击报名链接# 参考论文

资源

更多资源请参考:


 
 
更多>同类产业范例库

推荐产业范例库
点击排行

北京人工智能高质量数据集服务平台

创新数据服务,积极推进数据拓展应用

关于我们

联系我们

合作
咨询

15911018798
数据合作联系电话

微信
联系

微信联系