Bert在CV领域的应用

一只小狐狸带你解锁NLP/ML/DL秘籍

老板老板,听说BERT是个瞎子

此话怎讲?

它能理解语言,但是理解不了小夕的自拍!

video-BERT了解一下

喵喵喵?

AI的三大核心板块(CV/Speech/NLP)近几年都相继取得了非常大的发展和进步。但是正所谓成也萧何,败也萧何,深度学习一直在能力泛化和鲁棒性问题上饱受诟病,通用AI之路遥遥无期。

不过,近期得益于预训练模型的成功,似乎跨模态问题(VQA、看图说话等)也变得更有所期了。基于预训练的跨模态解决方案主要可以分为两个分支,一个是video-linguistic BERT(将视频数据融入BERT),另一个是visual-linguistic BERT(将image图片数据融入BERT)。最主要的难点都是如何将非文本信息融入到BERT的框架中。本文只涉及video-linguistic BERT。

视频可以理解为一组快速播放的图片,其中每一幅图片定义为帧(frame)。一般处理视频数据首先需要按每秒钟x帧(fps)的频率去对视频做抽取,然后将n个连续的frame组成一个片段(clip),这样视频就被切割成了很多不重叠的片段。对于每一个片段clip(包含m个frame)使用CV领域中pretrained模型(如ResNet等)抽取特征向量(visual features),最终视频被表示成特征向量的序列

 

从视频中抽取出来的特征向量自然是连续实值向量(属于整个实数空间),和离散的文本有很大的不同。当前,将视频的特征向量注入BERT主要有下面两种方式:

(1)Pipeline方式:将实值向量离散化,和文本token对齐加入到BERT模型中;

(2)端到端的方式:微调BERT模型结构,直接使用实值向量参与计算。

话不多说,小夕将通过下面两篇论文分别介绍这两种方法。后续阅读需对BERT有比较深的了解和认识。有需要可以移步这里,对BERT进行简单的复习回顾。文末还有彩蛋,不要错过哦~~

《VideoBERT: A Joint Model for Video and Language Representation Learning》

这是一篇将BERT结合video来学习跨模态表示的经典之作。该工作将video中提取出的特征向量通过聚类的方法离散化,继而在文本token的基础上增加视觉token,一起学习视觉和文本信息。

1 方法

1.1 视频文本数据处理(video and language processing)

针对video的处理,首先从input video每秒中抽取20帧画面(20 fps),每30帧组成一个片段。对每个clip用pretrained的ConvNet提取特征向量(1024维)。但是由于特征向量属于整个R^1024空间,是不可数的。为了和文本token相对应,延续原始BERT中的MLM任务,作者对所有提取出的特征向量使用hierarchical k-means做聚类,一共得到20736个类中心。把类中心作为visual token,每一个视觉特征向量都由它属于的类中心来表征。

针对文本的处理,使用现成的语音识别工具(Automatic Speech Recognition)提取视频中的文本,利用LSTM-based的语言模型对其断句。后续处理延续原始的BERT,用WordPieces切词,词表大小为3万。

1.2 输入格式(input format)

经过前面的处理,video中的语言和视觉信息都变成了离散的token,VideoBERT的输入格式延续了原始BERT的设计,只是增加了[>]这个特殊的token用来区分text token和visual token。

              

1.3 自监督任务(pretrain)

原始BERT有两个自监督任务:

(1)cloze(完形填空)/MLM(mask language model):预测被mask的text token;

(2)NSP(next sentence prediction):预测两个句对是否是连续的上下句。

第一个任务可以很自然的扩展到visual token中。像text token一样,提前mask visual token,利用没被mask的text token和visual token预测被mask的visual token,是一个多分类问题,使用softmax作为损失函数。

第二个任务NSP在VideoBERT中变成预测text sequence和visual sequence是否一致,即两者是否提取自同一个视频。类似的原始BERT,我们从其他视频数据中抽取visual sequence作为负例,来自该视频数据的visual sequence作为正例。是一个二分类问题。 

1.4 下游任务

VideoBERT通过上述两个自监督任务实际上学习了visual-liinguistic的联合表示(分布)p(x,y),其中x表示visual sequence,y表示text sequence。这个联合分布可以用在下列三种任务上:

(1)text-to-video: 根据文本预测视频,根据文本自动插图。 

       

(2)video-to-text: 根据视频预测文本,对视频自动生成摘要。

(3)unimodal fashion(单一模态下使用):利用文本或者视频的边缘分布,根据上文预测下文。对文本来说就是我们非常熟悉的语言模型,对于视频来说我们可以根据前面的视频内容预测后面可能发生的事情。

              

2 实验

文章实际设计了两个下游任务来验证学习到的跨模态联合表示的有效性。

2.1 看图说话      

根据视频和一个固定的模版“now let me show you how to [MASK] the [MASK],” 预测被mask掉的关键词(一个动词和一个名字)。下图定性的展示了三个例子,每个例子展示了视频中两个片段的类中心,和被预测的top verbs和nouns。

                    

表格中的数据定量对比了该任务在不同方法上的效果。S3D是一个经典的监督模型,除了S3D以外的模型都没有使用监督信号进行训练(zero-shot classification,直接使用pre-trained模型)。BERT(language prior)代表直接使用原始BERT,VideoBERT(language prior)是指在原始BERT基础上增加视频数据提取出得文本数据进行学习,VideoBERT(cross modal)是完整模型并结合了视频和文本数据进行学习。对比实验结果可以看到,top-5的准确率,三种BERT设定效果不断提升,验证了数据的有效性和多模态的有效性,最终zero-shot的VideoBERT(cross modal)能够达到和有监督学习的S3D差不多的效果。而top-1的结果各类BERT稍显逊色的原因是BERT基于word piece切词,更有利于open-vocablary的分类问题,主要关注语义上的准确性而不是精确的match。   

2.2 video caption

作者利用该任务验证VideoBERT作为特征抽取的有效性。使用同样的transformer encoder-decoder模型生成视频摘要,不同的是输入该模型的feature。

(1)使用S3D提取的feature(baseline)

(2)使用VideoBERT提取feature

(3)VideoBERT feature拼接S3D feature(最强厂牌)

       

             

从定性的例子中可以看到,使用VideoBERT feature生成的video caption内容更加的细节,更为生动具体。从定量的指标上来看,VideoBERT+S3D取得了最好的效果,VideoBERT学出来的feature对下游任务video caption有很大的提升。   

《Learning Video Representations Using Contrastive Bidirectional Transformer》

看了上一篇的工作,小伙伴们可能会有一个疑问,将实值连续型的特征向量(visual features)通过聚类规整为有限个类中心,是否会丢失video中包含的很多细节的信息呢(⊙ˍ⊙)?那么,这篇文章就不再使用聚类将实值连续型的visual features离散化,而是直接使用实值向量visual features,通过模型算法上的微调,实现BERT的多模态化。

1 方法

              

首先上模型全景图,虚线上面是pretrain阶段,虚线下面是下游任务的fine-tuning。灰色方框表示使用纯文本数据预训练BERT模型然后fix。白色黑线方框表示使用纯video数据预训练CBT模型,红色线条部分是使用多模态数据预训练cross-modal transformer将前面两者结合。小夕下面带大家逐个揭开每个部分的神秘面纱~~~

1.1 纯文本的BERT模型

自监督任务还是原始BERT的MLM,随机mask text token利用周围没有被mask的文本进行预测。

             

其中yt为被mask的正确token,y-t表示除去被mask掉yt的text sequence。这个MLM的损失函数实际上是要最大化利用y-t正确预测出yt的概率。而在这里根据y-t预测yt的概率被定义为如下。

             

其中为经过transformer得到的feature。优化目标是被mask的word sequence y-t的表示和真实的yt的embedding相似(共线)

上述BERT和原始的BERT本质上是一样的,只是用内积的形式代替了softmax计算概率。这一小小的修改和后面visual部分的建模相呼应,模型结构非常的优雅。

1.2 visual CBT模型

基于video数据的自监督任务同样是无缝衔接的MLM模型,但是因为visual feature是连续的实值向量,所以作者使用了NCE(noise contrastive estimation )loss

             

             

对比上面的BERT中概率的定义,和NCE的定义是不是超级相似!????    

 是被mask的visual sequence经过visual BERT的输出。因为visual feature不可数,无法像text部分穷举所有的负例,所以通过负采样的方式sample负例。优化目标是被mask的visual sequence x-t的表示和真实的xt的visual feature et相似。

     

1.3 跨模态CBT模型

前面介绍了单一模态下的模块,针对既有视频(从video中提取的visual features记为y=y1:T)和文本(从video中利用ASR提取出的文本token,记为x=x1:T)的数据,利用它们之间的对应关系学习多模态交互的表示就交给cross-modal CBT模块啦~~

虽然visual features y和文本x来自同一段视频,但是即使是教学视频,它们在每一帧(frame level)并不是严格对应的,所以我们不能强行要求模型可以通过xt预测yt或者通过yt预测xt。只需要要求它们在sequence level上存在对应关系即可(说人话就是模型可以通过x预测y)。同样使用NCE loss:

             

             

分别用visual CBT和BERT模型计算x和y的表示。

             

             

带入cross-modal transformer计算交互的表示,用一个浅层的MLP计算x和y之间的互信息。优化目标和前面两个类似,正例(x,y)之间的互信息大,负例(x,y‘)互信息小。 

1.4 overall model

整体模型就是上面三个部分的综合。三个部分虽然输入都稍有差异,但是在算法上是非常一致对称的,结合起来非常的完美。

             

2 实验

2.1 action recognition

用action recognition作为下游任务验证visual representaions的有效性。下表的左边对比了两种pretrain策略(Shuffle&Learn 和3DRotNet )和baseline随机初始化,在fix feature和finetune的两种使用方法上在两个数据集(UCF101和HMDB51)上的效果。实验结果表明了本文提出的visual CBT模型的有效性。表的右边是直接和各类state-of-art的监督模型相比,CBT模型也比这些模型有非常明显的提升。

       

2.2 action anticipation 

文章使用了三个不同的数据集the Breakfast dataset ,the 50Salads dataset和the ActivityNet 200 dataset。不了解action anticipation任务的可以简单认为是基于video的多分类任务就好。在这个实验中作者不仅证明了CBT方法比其他已有的方法好,还证明了CBT对长video有很好的表示能力。

              

左边表列出了CBT和其他几个方法的对比,CBT在上述三个任务上都一致优于其他方法(三个实验数据摆上来,非常让人信服呀),其中self-super=Y表示该方法使用pretrain-finetune的方式,self-super=N表示该方式是end-to-end训练的。

右边表则对比了不同视频的长度下,不同模型的效果。在三个数据机上CBT都一致明显优于其他两个baseline(AvgPool和LSTM),并且随着video长度的增加,CBT的效果是越来越好的。一般的模型都会对长文本或者长video失效,比如上表中两个baseline 方法,但是CBT可以不受长度的限制,反而能从更长的video中学到更好的表示,使得模型效果变好。(斯国一!!????)

2.3 other video tasks

       

文章还对比了video captioning 和 action segmentation 这两个任务,CBT在video captioning上比前面提到的VideoBERT也有所提升,这个提升可能就是优化了聚类步骤造成信息丢失的问题吧。

 

【这是彩蛋????】

公众号后台回复【videoBERT】获取论文原文(附小夕自己阅读时的笔记哦)

参考笔记读论文,更简单~~

  • Stanford CS224n追剧计划(附追剧计划详细攻略)

  • 如何扩充知识图谱中的同义词

  • 中文分词的古今中外,你想知道的都在这里

  • 深度神经网络为何会有灾难性遗忘?如何进行有效的持续学习?

  • 模型训练太慢?显存不够用?混合精度训练了解一下

  • 万万没想到,我的炼丹炉玩坏了

夕小瑶的卖萌屋

_

关注&星标小夕,带你解锁AI秘籍

订阅号主页下方「撩一下」有惊喜

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480815.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CRISP-DM:数据挖掘标准流程

CRISP-DM:数据挖掘标准流程 框架 相关信息 https://blog.csdn.net/qq_36387683/article/details/82932680 https://blog.csdn.net/hadoopdevelop/article/details/79282832

训练大型神经网络方法总结

一只小狐狸带你解锁 炼丹术&NLP 秘籍前阵子微软开源了DeepSpeed训练框架,从测试效果来看有10倍的速度提升,而且对内存进行了各种优化,最大可以训练100B(illion)参数的模型。同时发布了这个框架训练出的17B模型 Turing-NLG,处于…

从Java程序员进阶架构师,必看的书单推荐!

算法与数据结构: 数据结构(严蔚敏) java数据结构和算法(美:拉佛) 算法导论 大话数据结构 剑指Offer 程序员面试金典 编程珠玑 编程之美 程序员笔试面试最优解 数据结构与算法经典问题解析&#xf…

论文浅尝 | 基于Freebase的问答研究

本文转载自公众号:PaperWeekly。 本期的论文笔记来自 PaperWeekly 社区用户 britin。本文给出了一种 end-to-end 的系统来自动将 NL 问题转换成 SPARQL 查询语言。作者综合了实体识别以及距离监督和 learning-to-rank 技术,使得 QA 系统的精度提高了不少…

机器学习中的特征建模(特征工程)和算法选型建模 - 以暴力破解识别为例

catalogue 1. 特征工程是什么?有什么作用? 2. 特征获取方案 - 如何获取这些特征? 3. 特征观察 - 运用各种统计工具、图标等工具帮助我们从直观和精确层面认识特征中的概率分布 4. 特征处理 - 特征清洗 5. 特征护理 - 特征预处理 6. 特征处理 …

NLP数据增强方法总结:EDA、BT、MixMatch、UDA

本文转载自公众号“夕小瑶的卖萌屋”,专业带逛互联网算法圈的神操作 -----》我是传送门 关注后,回复以下口令: 回复【789】 :领取深度学习全栈手册(含NLP、CV海量综述、必刷论文解读) 回复【入群】&#xf…

史上最全java架构师技能图谱(上)

java架构师最全技能图谱上篇,包含:数结构算法、java进阶、web开发、框架与工具四大技能图谱。 下篇将包含大数据以及性能、设计模式、UML、中间件、分布式集群、负载均衡、通讯协议、架构设计等技术图谱等章节 本文作者,陈睿 优知学院创始人…

王仲远 | 基于概念知识图谱的短文本理解

本文转载自公众号:大数据创新学习中心。3月10日,美团点评AI Lab NLP负责人王仲远博士,给大家进行了题为“基于概念化的短文本理解(Conceptualization for Short Text Understanding)”的报告。王博士的这次报告主要分为…

出行大数据,滴滴发布400城数据可视化分析

转 一:出行大数据,滴滴发布400城数据可视化分析 2018年01月04日 00:00:00 https://blog.csdn.net/zw0Pi8G5C1x/article/details/78976493 二:滴滴背后的大数据应用 前言:这是一篇大数据应用文章,不涉及高深技术&#…

拒绝跟风,谈谈几种算法岗的区别和体验

这是一份小夕写给【准】算法工程师的手册和建议, 大概是因为马上要开始秋招提前批了,小夕在知乎和微信后台收到了不少小伙伴的岗位/团队选择的求助。于是小夕这里写一篇扫盲贴,给即将毕业的师弟师妹们提供一个参考(后面再有师弟师…

阿里P8架构师谈:分布式、集群、负载均衡、分布式数据一致性的区别与关联

服务器集群: 1.集群概念 集群就是一组相互独立的计算机,通过高速的网络组成一个计算机系统。服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器。 2.集群的特点和优势 1)高性能 比如…

论文浅尝 | Know-Evolve: Deep Temporal Reasoning for Dynamic KG

论文链接:https://arxiv.org/abs/1705.05742对于事件数据,需要动态更新的知识图谱来保存知识图谱中关系的时许信息。本文提出了 Know-Evolve 这种基于神经网络的动态知识图谱来学习实体在不同时刻的表示。在动态知识图谱中,事件由四元组表示&…

阿里P8架构师谈:Docker容器的原理、特征、基本架构、与应用场景

什么是容器? 一句话概括容器:容器就是将软件打包成标准化单元,以用于开发、交付和部署。 容器镜像是轻量的、可执行的独立软件包 ,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。 容器化软…

中国电网招聘 计算机岗位

1.解密2018国家电网校园招聘,院校、专业、待遇盲区统统扫除! 2018国家电网校园招聘国家电网作为国内乃至世界知名的企业集团,是令无数求职者心仪的工作单位。那么如何才能进国家电网工作呢?国家电网的待遇究竟有传说中的那么好吗&…

系统设计:github上学习如何设计大型系统的项目

https://github.com/donnemartin/system-design-primer/blob/master/README-zh-Hans.md 系统设计是一个很宽泛的话题。在互联网上,关于系统设计原则的资源也是多如牛毛。这个仓库就是这些资源的组织收集,它可以帮助你学习如何构建可扩展的系统。

高并发编程系列:NIO、BIO、AIO的区别,及NIO的应用和框架选型

谈到并发编程就不得不提到NIO,以及相关的Java NIO框架Netty等,并且在很多面试中也经常提到NIO和AIO、同步和异步、阻塞和非阻塞等的区别。我先简短介绍下几个NIO相关的概念,然后再谈NIO重点掌握内容,以及Java NIO框架选型。 高并…

论文浅尝 | 基于神经网络的推理(DeepMind Relational Reasoning)

本文转载自公众号:徐阿衡。论文:A simple neural network module for relational reasoning(2017)github代码: https://github.com/siddk/relation-network这篇回顾下 DeepMind 2017 年发表的关系推理方面的工作,Relational Networks(RNs)。关…

拒绝无脑试错:写给萌新的“科学炼丹”入门手册

近期在订阅号后台和文章评论区review了一下大家的问题,发现很多小伙伴现在已经把机器学习、深度学习的理论基础打好了,但是真正要解决一个现实中的算法问题的时候经常两手抓瞎,一顿毫无目的乱试,甚至认为模型表现不好一定是调参不…