腾讯2021广告算法大赛赛道2-多模态视频广告标签

摘要:

合集:AI案例-NLP-广告传媒
赛题:腾讯2021广告算法大赛赛道二-多模态视频广告标签
数据集:以视频、音频、文本三个模态作为输入数据集
数据发布方:腾讯
数据集价值:针对测试视频样本预测出视频在呈现形式、场景、风格等三个维度上的标签。
解决方案:利用视频ViT-Large、图像EfficientNet、文本BERT等预训练模型,结合了视觉、音频和文本信息进行多模态视频处理AI建模。

一、赛题描述

这个赛道中的赛题是以视频、音频、文本三个模态作为输入,要求选手针对测试视频样本预测出视频在呈现形式、场景、风格等三个维度上的标签。

二、目录结构

源码目录结构包括:数据集、预训练模型、模型保存地址、源码等信息:

├── dataset 数据集存放位置,运行init.sh会自动生成  
│   ├── test_2nd 测试集存放位置  
│   └── train 训练集存放位置  
├── taac2021-tagging-lmbjzs 代码主文件夹  
│   ├── checkpoint 模型保存地址  
│   ├── config 配置文件  
│   ├── inference.py 推理代码  
│   ├── inference.sh 推理脚本 接收两个参数,第一个参数是操作,第二个参数是数据集路径,用于视频特征提取
│   ├── __init__.py  
│   ├── init.sh 初始化脚本 包括环境配置、数据集目录生成以及数据拷贝,接收一个参数,即原始数据集路径  
│   ├── post-processing 后处理代码  
│   ├── pre 预处理代码 主要是视频特征提取代码  
│   ├── pretrain_models 预训练模型存位置  
│   ├── readme.md  
│   ├── requirement.txt 环境要求  
│   ├── src 模型以及数据集代码  
│   ├── train.py 训练代码  
│   ├── train.sh 训练脚本 接收两个参数,第一个参数是操作,第二个参数是数据集路径,用于视频特征提取  
│   └── utils 工具类  

数据集中的video_npy目录存放的是提取好的视频特征。视频特征 .npy 文件是使用 NumPy 库保存的二进制文件,存储了从视频中提取的预计算特征向量(如视觉、运动、音频等特征)。这些文件通常用于高效存储和加载机器学习任务中的视频特征数据。使用 ViT(Vision Transformer)提取的视频帧特征 是指通过基于Transformer架构的视觉模型(如ViT、TimeSformer等)从视频的每一帧或片段中提取的高维语义向量。这些特征能够捕捉视频帧中的全局上下文信息(如物体、场景、动作等),替代传统CNN(如ResNet)的局部卷积特征,尤其擅长建模长距离依赖关系。

  • dataset/train/video_npy/effcient :*.npy
  • dataset/train/video_npy/vit:*.npy

预训练模型存位置pretrain_models包括:

  • vit-large存放的是提取视频特征的预训练模型。ViT-Large(Vision Transformer Large)是一种基于 Transformer 架构的大规模视觉模型,由 Google Research 在 2020 年提出,首次将自然语言处理(NLP)中的 Transformer 成功迁移到计算机视觉(CV)领域,并在图像分类、目标检测等任务上达到媲美 CNN(如 ResNet)的性能。
  • efficient-b7存放的是提取视频特征的预训练模型。EfficientNet-B7 是 Google Research 提出的 EfficientNet 系列中最大的模型,基于 复合缩放(Compound Scaling) 方法,在计算资源、参数量和准确率之间达到高效平衡。它在 ImageNet 等图像分类任务上表现优异,同时适用于目标检测、语义分割等下游任务。
  • bert-base存放的是文本预训练模型。BERT-Base(Bidirectional Encoder Representations from Transformers)是由 Google AI 于 2018 年提出的 预训练语言模型,基于 Transformer 架构,通过双向上下文理解文本语义,成为自然语言处理(NLP)领域的里程碑式模型。

训练模型保存地址为:checkpoint。若要该预训练模型进行预测,将已训练的20个模型下载到checkpoint下,之后参照测试流程。

三、解决方案样例

以下为排名第6的解决方案。

建模工作原理

这是一个多模态视频处理AI模型,结合了视觉、音频和文本信息进行建模。

核心架构

  1. 多模态输入处理:
    • 视频特征:通过Self-Attention机制提取视觉特征
    • 音频特征:单独提取音频特征
    • 文本特征:使用BERT模型处理文本输入
  2. 双模态交互:
    • 模型使用Bi-modal Attention(双模态注意力)机制在不同模态间建立联系
    • 通过多个Bi-modal Transformer层实现视频-音频特征的深度融合
  3. 特征融合与输出:
    • 各模态特征经过多层Transformer处理后
    • 通过Output Layer产生最终输出

关键技术

  1. 注意力机制:
    • Self-Attention用于单模态内部特征提取
    • Bi-modal Attention用于跨模态特征交互
  2. BERT集成:
    • 使用预训练的BERT模型处理文本
    • 采用冻结前九层和词嵌入对抗训练的策略
  3. 训练优化:
    • 使用BertAdam优化器
    • 学习率设为2e-5
    • 采用10折交叉验证

工作流程

  1. 视频和音频特征分别被提取并通过各自的Self-Attention层
  2. 通过Bi-modal Transformer实现视听特征的交互融合
  3. 文本特征由BERT单独处理
  4. 所有模态信息在深层网络中进行整合
  5. 最终输出层产生预测结果

这种架构特别适合需要结合视觉、听觉和文本信息的复杂多模态任务,如视频内容理解、情感分析或多模态翻译等应用场景。

安装开发包

conda activate pytorch_py3    
cd taac2021-tagging-lmbjzs  
sudo apt-get install ffmpeg  
pip install -r requirement.txt  

训练

如果下载使用ViT提取的视频帧的特征,可以直接从第三步开始

  1. 训练集视频帧抽取 直接运行train.sh 脚本 接收两个参数,第一个参数是frame代表抽帧,第二个是训练集视频路径, 视频路径最后需要有/ sudo chmod a+x ./train.sh && ./train.sh frame ../../algo-2021/dataset/videos/video_5k/train_5k/
  2. 训练集视频特征提取 直接运行train.sh 脚本 接收一个参数 extract sudo chmod a+x ./train.sh && ./train.sh extract
  3. 训练集训练csv生成 直接运行train.sh 脚本 接收一个参数,generate sudo chmod a+x ./train.sh && ./train.sh generate
  4. 训练 直接运行train.sh 脚本 接收一个参数,train sudo chmod a+x ./train.sh && ./train.sh train 抽帧,特征提取以及训练总体时间大概30个小时

测试

  1. 测试集视频帧抽取 直接运行train.sh 脚本 接收两个参数,第一个是frame 代表抽帧,第二个是训练集视频路径, 视频路径最后需要有/ sudo chmod a+x ./inference.sh && ./inference.sh frame ../../algo-2021/dataset/videos/test_5k_2nd/
  2. 测试集视频特征提取 直接运行inference.sh 脚本 接收一个参数 extract sudo chmod a+x ./inference.sh && ./inference.sh extract
  3. 测试集数据集生成 直接运行inference.sh 脚本 接收一个参数 generate sudo chmod a+x ./inference.sh && ./inference.sh generate
  4. 推理 直接运行inference.sh 脚本 接收一个参数inference sudo chmod a+x ./inference.sh && ./inference.sh inference

运行之后会在当前目录生成out.json,这个便是最后的结果。

源码开源协议

作者:南方科技大学 ChenJiashuo

The MIT License – Open Source Initiative

四、参考资料

五、获取案例套装

文件大小:约 4.63 GB

获取:广告传媒业自然语言处理案例套装

发表评论