video bert & visual bert

2023-05-16

最近需要处理一些多模态任务(图文匹配,caption等),需要用到多模态模型/算法。调研之后发现,目前处理此类问题的主流方法都是基于bert的多模态模型,因此总结一下学习过程中遇到的问题,以及自己对这些模型的理解。

本文主要学习和记录一下video bert《VideoBERT: A Joint Model for Video and Language Representation Learning》这篇文章。读完这篇论文,给我的最大感受就是:为了让多模态数据(video和文本)能够同时输入到bert模型中进行训练和学习,作者对多模态数据进行了一些预处理操作。主要是针对视频数据的预处理操作,文本数据按照Bert论文中介绍的方法即可。具体来说,作者使用S3D模型来提取每一个视频clip的特征,然后再将这些实数值空间中的视觉特征进行离散化并为其分配一个新的符号如v0,这样就获得了表示整个视频的token sequence (如v01, v02, v03 .....)。接下来就交由Bert来处理这些token sequence。 作者使用层次聚类的方式,对经过S3D提取后的每个clip特征进行聚类,共获得20736聚类中心。然后为这些聚类中心分配新的token(v01, v02....)并添加到字典中,这样就得到了视频对应的token sequence和文本的token sequence,如下图所示,左边为文本token sequence,右边为视频token sequence。

[CLS]表示一个句子/句子对,[SEP]代表句子对之间的间隔。[>]代表文本序列和视频序列的间隔

本文通过三个具体任务来训练模型,获取预训练参数:1)完形填空任务MLM(Bert中提出的),2)下一个句子预测(Bert中的),3)当前文本序列和视频序列是否匹配(从整个语义角度来判断是否匹配,而不是一个单词对应一个视频clip)。接下来,详细介绍一下上述三个任务。

MLM任务,即随机mask text token,使用剩余的token来进行预测。

最近需要处理一些多模态任务(图文匹配,caption等),需要用到多模态模型/算法。调研之后发现,目前处理此类问题的主流方法都是基于bert的多模态模型,因此总结一下学习过程中遇到的问题,以及自己对这些模型的理解。

本文主要学习和记录一下video bert《VideoBERT: A Joint Model for Video and Language Representation Learning》这篇文章。读完这篇论文,给我的最大感受就是:为了让多模态数据(video和文本)能够同时输入到bert模型中进行训练和学习,作者对多模态数据进行了一些预处理操作。主要是针对视频数据的预处理操作,文本数据按照Bert论文中介绍的方法即可。具体来说,作者使用S3D模型来提取每一个视频clip的特征,然后再将这些实数值空间中的视觉特征进行离散化并为其分配一个新的符号如v0,这样就获得了表示整个视频的token sequence (如v01, v02, v03 .....)。接下来就交由Bert来处理这些token sequence。 作者使用层次聚类的方式,对经过S3D提取后的每个clip特征进行聚类,共获得20736聚类中心。然后为这些聚类中心分配新的token(v01, v02....)并添加到字典中,这样就得到了视频对应的token sequence和文本的token sequence,如下图所示,左边为文本token sequence,右边为视频token sequence。

[CLS]表示一个句子/句子对,[SEP]代表句子对之间的间隔。[>]代表文本序列和视频序列的间隔

本文通过三个具体任务来训练模型,获取预训练参数:1)完形填空任务MLM(Bert中提出的),2)下一个句子预测(Bert中的),3)当前文本序列和视频序列是否匹配(从整个语义角度来判断是否匹配,而不是一个单词对应一个视频clip)。接下来,详细介绍一下上述三个任务。

MLM任务,即随机mask text token,使用剩余的token来进行预测。

公式1

其中 x_{l} 为mask的token, x_{\l} 为剩余的token sequence。这个损失函数做的就是利用剩余未被掩码的token sequence来最大化预测mask token的概率。其中,

公式2

x_{l} is a one-hot vector for the l'th token,f_{\theta} 就是Bert模型。此处使用内积的形式(而非softmax, 接下来第二篇文章用softmax)来计算最终的损失。

MLM任务使得模型可以从前到后的编码句子序列,也可以同后往前,这样就学到了每个文本具有上下文的word embedding。

Predict next sentence task(预测下一个句子). 上述MLM任务只能学到每个单词的上下文表示,无法学到整个句子级别的语义表示。通过predict next sentence tas可以学习到句子级别的表示。

Linguistic-visual alignment task. 是video bert提出的为了对齐视频序列和文本序列的任务。本质上是一个二分类任务,即判断文本序列和视频序列是不是有对应关系,这里的对应是整个语义级别的而不是每个token的对应。

总结:这篇论文算是Bert应用在多模态领域最经典的文章了。为了使Bert模型也能够训练视频数据,作者对视频帧特征进行了离散化处理,使其可以表示为token sequence。但是,这种将多个视频用其聚类中心表示的方式,会损失原始视频数据的许多细节信息。这个现象也引出了第二篇文章《learning video representation using contrastive bidirectional transformer》,这篇文章不需要对视频进行离散化处理,也可以使用Bert模型来获得更好的预训练参数。

对video数据进行离散化处理的本质:通过这种方式,video bert模型能够使用MLM任务对视频数据进行训练。如果视频clip不是token,而是 R^{1024} 空间中的连续实数值,我们还能用one-hot的形式表示公式2中的 x_{l} 吗? 显然是不可能的!但是,直观上,对视频特征进行离散化处理肯定会损失很多细节信息。那怎么解决这个矛盾呢?熟悉word2vec的读者一定了解负采样技巧把,自然语言任务中的字典通常来说是非常大的,直接使用softmax预测具体的单词的类别,是非常耗时的一个过程。word2vec论文中提出了一个负采样技巧来缓解上述过程,即首先给定要预测的单词(正类别),然后随机采样一些噪声词(负类别),然后让模型从这些词中找到正确的单词,这样既能训练模型,也降低了训练难度。

其实《learning video representation using contrastive bidirectional transformer》这篇文章就是采用了负采样技巧,使模型能够以MLM任务来训练处于连续实数空间中的视频特征。

MLM任务的损失函数如下:

3

与公式1一模一样,这里是极小化,公式1是极大化。

4

此处使用了softmax函数衡量相似程度,video bert是使用了内积的形式。

接下来是本文的重点,通过负采样NCE loss来实现训练实数空间中的视频数据:

5

其中, \bar{e} = g_{contex}(e_{-t}) 是被mask的visual sequence的visual bert输出。因为视觉特征是连续不可数的,因此无法穷举所有的负例,只能通过负采样的方式来进行训练。这样就解决了MLM不可以训练连续空间下的现象了。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

video bert & visual bert 的相关文章

  • 视频录制挂在 IMFSinkWriter->Finalize() 上;

    我在使用 Media Foundation 将视频录制完成为 mp4 时遇到问题 其中调用IMFSinkWriter gt Finalize 永远挂起 它并不总是发生 并且几乎可以在任何计算机上发生 在 Windows 服务器 7 8 10
  • YouTube get_video_info 引发限制错误

    我已经为 joomla 创建了 是的另一个 YouTube 播放器模块 在模块后端我使用了来自的代码这个答案 https stackoverflow com a 5151862 4708062显示视频标题 不幸的是 对于大多数视频 ID g
  • 找到实际的 RTMP 流 URL?

    让我举个例子 这是视频嵌入代码 div Loading the player div
  • HTML5 视频 JavaScript 控件 - 重新启动视频

    我知道如何使用 play 和pause 开始和停止视频 但是如何使用 javascript 将视频放回到 HTML5 的开头 有没有办法将指针移回开头 Set the currentTime http www w3 org TR html5
  • 如何让用户能够使用我的应用程序播放视频?

    昨晚刚刚花了几个小时为 Honeycomb 开发了一个非常漂亮的视频播放器 现在我当然希望人们能够使用它 如何让我的应用程序监听 接收 视频播放广播 我猜这与manifest xml文件 但我无法在 Android 开发者网站上找到任何有关
  • Google VR 视频无法加载

    我正在使用谷歌网页版 VR 视图 https developers google com vr concepts vrview web加载 360 度视频 但是当我加载视频时 它说错误 渲染 视频加载错误 对象事件 这是控制台显示的内容 当
  • Android Twilio 视频通话,唤醒应用程序并带到前台

    我正在尝试使用 Twilio Video Call 提供本机视频通话体验 这是场景 人 AAA 称人 BBB BBB 没有打开应用程序 在后台或前台 应用程序处于终止状态 手机甚至可能被锁定 当来自 AAA 的电话到达时 应用程序将打开 并
  • YouTube 视频 ID 的最大长度是多少?

    我正在开发一个显示 YouTube 视频的应用程序 我想将视频 id 存储在数据库中 但是因为会有很多视频 我想最小化所需的空间 所以有人知道 youtube 上视频 id 的最大长度吗 几乎可以肯定它会保持在 11 个字符 各个字符来自一
  • 从 iPhone 中的视频帧获取图像

    是否可以使用 iPhone SDK 从 iPhone 中的视频中抓取帧并将其保存或在应用程序中以任何方式使用它 除了播放 停止或访问视频的二进制数据之外 SDK 是否可以对视频进行任何控制 还可以知道用户停止观看视频的时间 我知道在 SDK
  • 视频swf的php正则表达式

    我想从对象 嵌入 html 源获取视频 url 我读到我可以使用正则表达式来获取它 但我和正则表达式不是朋友 这就是我所拥有的
  • 是否可以仅使用html5和js剪切部分视频并将其上传到服务器

    我使用 Filereader 读取本地视频文件 mp4 因此我可以将其显示在视频标签中 我需要剪切 mp4 文件的一部分 即从 5 到 10 秒 并将其上传到服务器上 我当前的解决方案 我使用 from 和 to 参数将整个视频文件上传到服
  • iOS4:如何使用视频文件作为 OpenGL 纹理?

    我正在尝试将视频文件的内容 暂时不包含音频 显示到 OpenGL 中的 UV 映射 3D 对象上 我已经在 OpenGL 中做了相当多的工作 但不知道从哪里开始处理视频文件 而且大多数示例似乎都是从相机获取视频帧 这不是我想要的 目前我觉得
  • 指示 getUserMedia 使用最佳可用相机分辨率

    我正在使用 getUserMedia 函数从网络摄像头录制视频 一切工作正常 除了当我刚刚指定 video true 约束时它仅以 640x480 分辨率录制 如果我设置如下约束 我现在可以在笔记本电脑上获得更好的录音质量 var medi
  • 如何使视频资源兼容视网膜显示?

    我有一个应用程序 可以在播放 2 秒的电影时加载 目前 该应用程序已在商店上架 并且除此视频外 所有静态内容均符合视网膜显示标准 我有一个用于视网膜显示屏的 960x640 mp4 h 264 编码视频 它在 iPhone 是的 高分辨率
  • 如何使用 opencv 从字节显示视频?

    我正在开展一个项目 其中我们使用无线电调制解调器将数据 视频和遥测 从无人机传输到地面站 我们需要做的是实时显示视频 并能够知道 C 中的每一块遥测数据对应哪一帧 数据被解封装为遥测和视频 mpeg4 字节 由于我对 OpenCV 有一些经
  • ffmpeg 使用 -movflags faststart

    我尝试使用命令 movflags 快速启动 并得到以下错误 Microsoft Windows 版本 6 0 6002 版权所有 c 2006 Microsoft 公司 版权所有 C uploads 1 videos gt ffmpeg i
  • 自动旋转、UIWebView 和 UITabBarController

    我有以下视图层次结构 UITabBarController UINavigationController UIViewController only supports Portrait rotation UINavigationContro
  • 为什么我在模拟器中看不到视频?

    我见过几个与此类似的问题 但我想确定一下 我无法在模拟器上运行视频 是否一致 有人在模拟器上成功运行视频吗 以下是我使用的代码 import android app Activity import android net Uri impor
  • Phonegap html5视频无法播放

    我正在尝试在 iPad 上的phonegap 应用程序中播放视频 该视频给了我错误 MEDIA ERR SRC NOT SUPPORTED 我尝试播放的视频不是本地的 当我在该视频上使用curl I 时 这是它带来的信息 HTTP 1 1
  • 在列表视图/滚动视图中自动播放视频,类似于 facebook

    如果视图包含视频 我需要视频在列表视图 滚动视图中自动播放 这与 Facebook 非常相似 如果用户向下滚动并且可见区域包含视频 系统将播放视频 如果仍然滚动 则会自动停止该视频 它应该像一次播放一个视频一样工作 有人可以帮我解决这个问题

随机推荐