Video Analysis 相关领域解读之Video Captioning(视频to文字描述)

简介:

之前两次分别介绍了video analysis中的action recognition 以及 temporal action detection 这两个领域。这两个领域算是对视频mid-level的理解,而我最近看论文主要在关注如何去理解视频的高层语义(high-level)信息,这方面一个重要的领域就是video captioning。video captioning的任务是给视频生成文字描述,和image captioning(图片生成文字描述)有点像,区别主要在于视频还包含了时序的信息。关于video captioning,我目前还没有自己动手做过实验,所以文章内容如有问题麻烦指出~


数据库

首先介绍一下近几年最常用的两个数据库。

MSR-VTT dataset: 该数据集为ACM Multimedia 2016 的 Microsoft Research - Video to Text (MSR-VTT) Challenge。该数据集包含10000个视频片段(video clip),被分为训练,验证和测试集三部分。每个视频片段都被标注了大概20条英文句子。此外,MSR-VTT还提供了每个视频的类别信息(共计20类),这个类别信息算是先验的,在测试集中也是已知的。同时,视频都是包含音频信息的。该数据库共计使用了四种机器翻译的评价指标,分别为:METEOR, BLEU@1-4,ROUGE-L,CIDEr。

YouTube2Text dataset(or called MSVD dataset):该数据集同样由Microsoft Research提供。该数据集包含1970段YouTube视频片段(时长在10-25s之间),每段视频被标注了大概40条英文句子。

可以看出,这两个数据库都是trimmed video clip 到 sentences的翻译。而这两年的论文基本上使用这两个数据库为主,说明目前的研究还主要集中在trimmed video clip 到 sentences的翻译。


任务关键点分析

video captioning任务可以理解为视频图像序列到文本序列的seq2seq任务。在近年的方法中,大部分文章都使用了LSTM来构造encoder-decoder结构,即使用lstm encoder来编码视频图像序列的特征,再用lstm decoder解码出文本信息。这样的video captioning模型结构最早在ICCV2015的”Sequence to Sequence – Video to Text”一文中提出,如下图所示。

基于上图中的结构,构造一个encoder-decoder结构的模型主要包括几个关键点:

1.输入特征:即如何提取视频中的特征信息,在很多篇文章中都使用了多模态的特征。主要包括如下几种:

基于视频图像的信息:包括简单的用CNN(VGGNet, ResNet等)提取图像(spatial)特征,用action recognition的模型(如C3D)提取视频动态(spatial+temporal)特征

基于声音的特征:对声音进行编码,包括BOAW(Bag-of-Audio-Words)和FV(Fisher Vector)等

先验特征:比如视频的类别,这种特征能提供很强的先验信息

基于文本的特征:此处基于文本的特征是指先从视频中提取一些文本的描述,再將这些描述作为特征,来进行video captioning。这类特征我看到过两类,一类是先对单帧视频进行image captioning,将image captioning的结果作为video captioning的输入特征,另外一类是做video tagging,将得到的标签作为特征。

2.encoder-decoder构造:虽然大部分工作都是用lstm做encoder-decoder,但各个方法的具体配置还是存在着一定的差异。

3.输出词汇的表达:主要包括两类,一类是使用Word2Vec这种词向量表示,另外就是直接使用词袋表示。

4.其它部分:比如训练策略,多任务训练之类的。


论文介绍

论文介绍部分只简要介绍我最近看的几篇近两年的文章,可以大概了解这个领域的进展情况。


ACM Multimedia 2016: MSR-VTT Challenge

首先介绍一下上述数据库MSR-VTT这个竞赛当时的前5名的方案。Team指竞赛中的队伍名称,rank为竞赛的M1排名,paper为对应的方案描述,可以通过google scholar搜到。

(1) Team- Aalto; Rank-1; Paper: Frame- and Segment-Level Features and Candidate Pool Evaluation for Video Caption Generation

这个方法的思路很有趣。它先用多个基于不同特征的video caption方法(均为encoder-decoder结构)对视频生成多段描述。再构造了一个基于CNN的评价网络,如下图所示,输入为video caption方法得到的句子和视频的特征,输出为两者之间的匹配度。这个评价网络实际上是作为多个video caption模型的ensemble方法。

(2) Team- v2t_navigator; Rank-2; Paper: Describing Videos using Multi-modal Fusion

方法框架图如下图所示,可以看出是标准的encoder-decoder模式。

特征方面:这篇文章基本用上了所有能用到的多模态特征,包括视频,图像,声音,类别信息等等。

encoder:为了结合各类特征,该方法使用了单层的无激活函数(应该也可以叫线性激活?)的全连接层作为编码器。

decoder:单层单向LSTM

其他:各种用于特征提取的模型都是预先训练好的,encoder和decoder同时训练。

(3) Team- VideoLAB; Rank-3; Paper: Multimodal Video Description

方法框架图如下图所示,同样也是encoder-decoder模式,与v2t_navigator的方法比较像

特征方面:使用了视频,图像,声音,类别信息等,基本和v2t_navigator队相同

encoder and decoder: 均为lstm

(4) Team- Fudan-ILC; Rank-4; Paper:…

略。没有找到他们提交的报告,可能最后没有提交报告?但看队伍名称的组合,后面要介绍的CVPR2017上的“Weakly Supervised Dense Video Captioning” 应该就是他们团队做的。

(5) Team- ruc-uva; Rank-5; Paper:Early Embedding and Late Reranking for Video Captioning

这篇文章的方法复杂一些,在使用CNN提取了视频特征后,该方法使用了Video tagging方法提取视频的关键词,这些关键词和视频CNN特征一同作为decoder的输入。此外,tagging产生的关键词还在最后用于生成句子的排序。


2017年的几篇新论文

(1) Multi-Task Video Captioning with Video and Entailment Generation(ACL2017)

这篇文章的想法很有趣,其方法结构图如下图所示。整个框架共包括三个任务:1)Unsupervised video prediction:无监督的未来帧预测,使用video encoder 和video decoder;2) Entailment Generation: 同义句生成/句子含义生成,也就是给句子生成含义相似的新句子,使用language encoder和 language decoder;3)Video Captioning:也就是视频语义生成,使用了video encoder和language decoder。在这几个任务中,video encoder和laguange decoder的参数是共享的。在训练中,该方法在mini-batch层面对三个任务进行迭代训练(不同任务的训练次数比例由参数确定)。

(2) Weakly Supervised Dense Video Captioning(CVPR2017)

这篇文章主要研究的是dense video captioning问题,dense video captioning是要产生对一段视频所有可能的描述。本文提出了一种弱监督方法,Multi-instance multi-label learning(MIMLL) 。MIMLL直接从视频-句子 数据(这样的数据对于该问题算是弱监督的)中学习每个视频图像区域对应的描述词汇向量。之后将这些词汇描述向量结合起来作为encoder-decoder的输入,实现video captioning。在MSR-VTT数据集中,该方法是目前的state-of-the-art 方法。


小结与讨论

从以上的论文介绍可以看出,基于基础的encoder-decoder结构,不同的方法在不同的方面对提高模型效果进行了探索,包括多模态特征,多任务学习等等。该领域现在也处在快速发展阶段,新的方法层出不穷,改进模型的核心思想我认为还是如何去更好的挖掘视频中局部的语义信息,并将其有效的组合成自然语言。同时,我觉得这个方向也是很有前景的一个方向,给视频生成文字描述有很多的应用场景。


原文发布时间为: 2017-05-05

本文作者:林天威

本文来自云栖社区合作伙伴极市网,了解相关信息可以关注极市网。

相关文章
|
存储 监控 安全
ONVIF协议介绍
ONVIF协议介绍
8903 0
|
7月前
|
JavaScript Java 关系型数据库
基于springboot的非遗传承宣传平台
本项目基于SpringBoot、Vue、MySQL等技术,构建非遗传承宣传平台,实现非遗资源的数字化存储与传播。通过图文、视频、互动社区等形式,打破时空限制,提升公众参与度,助力传统文化保护与传承。
|
消息中间件 数据挖掘 程序员
【建议收藏】高并发下的分布式事务:如何选择最优方案?
本文介绍了分布式事务的三种常见解决方案。在分布式系统中,事务处理变得复杂,需确保ACID特性。TCC(Try-Confirm-Cancel)方案适用于严格资金要求的场景,如银行转账,通过预留、确认和取消步骤确保一致性。可靠消息最终一致性方案适合一致性要求较低的场景,如电商积分处理,通过消息中间件实现最终一致性。最大努力通知方案则用于允许不一致的场景,如数据分析,通过重复通知尽可能达成一致性。选择合适的方案取决于具体应用场景。
850 5
|
机器学习/深度学习 自然语言处理 人机交互
音频基座大模型FunAudioLLM体验评测
一文带你详细了解音频基座大模型FunAudioLLM
3788 5
|
机器学习/深度学习 自然语言处理 计算机视觉
【YOLOv11改进 - 注意力机制】CoTAttention:上下文转换器注意力
【YOLOv11改进 - 注意力机制】CoTAttention:上下文转换器注意力Contextual Transformer (CoT) 是一种新型的Transformer风格模块,通过3×3卷积对输入键进行上下文编码,生成静态上下文表示,并通过两个1×1卷积学习动态多头注意力矩阵,增强视觉表示能力。CoTNet将CoT块应用于ResNet架构中,替代3×3卷积,提升图像识别、目标检测和实例分割等任务的性能。源码可在GitHub获取。
【YOLOv11改进 - 注意力机制】CoTAttention:上下文转换器注意力
|
JSON 安全 API
如何高效编写API接口:以Python与Flask为例
构建RESTful API的简明教程:使用Python的Flask框架,从环境准备(安装Python,设置虚拟环境,安装Flask)到编写首个API(包括获取用户列表和单个用户信息的路由)。运行API服务器并测试在`http://127.0.0.1:5000/users`。进阶话题包括安全、数据库集成、API文档生成和性能优化。【6月更文挑战第27天】
824 7
|
小程序
微信小程序中引导用户关注公众号实现方案详细说明
之前讲过如何利用公众号针对指定用户完成业务操作之后实时发送消息
微信小程序中引导用户关注公众号实现方案详细说明
|
传感器 数据采集 物联网
技术经验解读:【物联网】I2C(IIC)通信协议详解与应用
技术经验解读:【物联网】I2C(IIC)通信协议详解与应用
1191 0
|
SQL 存储 关系型数据库
Citus 多CN部署与Citus MX
Citus MX是Citus集群中横向扩展CN能力的技术,本文件聊一下Citus MX使用的话题
2937 140
|
弹性计算 大数据 测试技术
2024年阿里云服务器租用价格表(CPU/内存/带宽/磁盘收费标准)
2024年阿里云服务器租用价格表更新,云服务器ECS经济型e实例2核2G、3M固定带宽99元一年、ECS u1实例2核4G、5M固定带宽、80G ESSD Entry盘优惠价格199元一年,轻量应用服务器2核2G3M带宽轻量服务器一年61元、2核4G4M带宽轻量服务器一年165元12个月、2核4G服务器30元3个月,幻兽帕鲁4核16G和8核32G服务器配置,云服务器ECS可以选择经济型e实例、通用算力u1实例、ECS计算型c7、通用型g7、c8i、g8i等企业级实例规格。阿里云百科分享阿里云服务器租用费用最新报价