Bert在CV领域的应用
一只小狐貍帶你解鎖NLP/ML/DL秘籍
老板老板,聽說BERT是個瞎子
此話怎講?
它能理解語言,但是理解不了小夕的自拍!
video-BERT了解一下
喵喵喵?
AI的三大核心板塊(CV/Speech/NLP)近幾年都相繼取得了非常大的發(fā)展和進(jìn)步。但是正所謂成也蕭何,敗也蕭何,深度學(xué)習(xí)一直在能力泛化和魯棒性問題上飽受詬病,通用AI之路遙遙無期。
不過,近期得益于預(yù)訓(xùn)練模型的成功,似乎跨模態(tài)問題(VQA、看圖說話等)也變得更有所期了。基于預(yù)訓(xùn)練的跨模態(tài)解決方案主要可以分為兩個分支,一個是video-linguistic BERT(將視頻數(shù)據(jù)融入BERT),另一個是visual-linguistic BERT(將image圖片數(shù)據(jù)融入BERT)。最主要的難點(diǎn)都是如何將非文本信息融入到BERT的框架中。本文只涉及video-linguistic BERT。
視頻可以理解為一組快速播放的圖片,其中每一幅圖片定義為幀(frame)。一般處理視頻數(shù)據(jù)首先需要按每秒鐘x幀(fps)的頻率去對視頻做抽取,然后將n個連續(xù)的frame組成一個片段(clip),這樣視頻就被切割成了很多不重疊的片段。對于每一個片段clip(包含m個frame)使用CV領(lǐng)域中pretrained模型(如ResNet等)抽取特征向量(visual features),最終視頻被表示成特征向量的序列。
?
從視頻中抽取出來的特征向量自然是連續(xù)實值向量(屬于整個實數(shù)空間),和離散的文本有很大的不同。當(dāng)前,將視頻的特征向量注入BERT主要有下面兩種方式:
(1)Pipeline方式:將實值向量離散化,和文本token對齊加入到BERT模型中;
(2)端到端的方式:微調(diào)BERT模型結(jié)構(gòu),直接使用實值向量參與計算。
話不多說,小夕將通過下面兩篇論文分別介紹這兩種方法。后續(xù)閱讀需對BERT有比較深的了解和認(rèn)識。有需要可以移步這里,對BERT進(jìn)行簡單的復(fù)習(xí)回顧。文末還有彩蛋,不要錯過哦~~
《VideoBERT: A Joint Model for Video and Language Representation Learning》
這是一篇將BERT結(jié)合video來學(xué)習(xí)跨模態(tài)表示的經(jīng)典之作。該工作將video中提取出的特征向量通過聚類的方法離散化,繼而在文本token的基礎(chǔ)上增加視覺token,一起學(xué)習(xí)視覺和文本信息。
1 方法
1.1 視頻文本數(shù)據(jù)處理(video and language processing)
針對video的處理,首先從input video每秒中抽取20幀畫面(20 fps),每30幀組成一個片段。對每個clip用pretrained的ConvNet提取特征向量(1024維)。但是由于特征向量屬于整個R^1024空間,是不可數(shù)的。為了和文本token相對應(yīng),延續(xù)原始BERT中的MLM任務(wù),作者對所有提取出的特征向量使用hierarchical k-means做聚類,一共得到20736個類中心。把類中心作為visual token,每一個視覺特征向量都由它屬于的類中心來表征。
針對文本的處理,使用現(xiàn)成的語音識別工具(Automatic Speech Recognition)提取視頻中的文本,利用LSTM-based的語言模型對其斷句。后續(xù)處理延續(xù)原始的BERT,用WordPieces切詞,詞表大小為3萬。
1.2 輸入格式(input format)
經(jīng)過前面的處理,video中的語言和視覺信息都變成了離散的token,VideoBERT的輸入格式延續(xù)了原始BERT的設(shè)計,只是增加了[>]這個特殊的token用來區(qū)分text token和visual token。
? ? ? ?? ? ? ?
1.3 自監(jiān)督任務(wù)(pretrain)
原始BERT有兩個自監(jiān)督任務(wù):
(1)cloze(完形填空)/MLM(mask language model):預(yù)測被mask的text token;
(2)NSP(next sentence prediction):預(yù)測兩個句對是否是連續(xù)的上下句。
第一個任務(wù)可以很自然的擴(kuò)展到visual token中。像text token一樣,提前mask visual token,利用沒被mask的text token和visual token預(yù)測被mask的visual token,是一個多分類問題,使用softmax作為損失函數(shù)。
第二個任務(wù)NSP在VideoBERT中變成預(yù)測text sequence和visual sequence是否一致,即兩者是否提取自同一個視頻。類似的原始BERT,我們從其他視頻數(shù)據(jù)中抽取visual sequence作為負(fù)例,來自該視頻數(shù)據(jù)的visual sequence作為正例。是一個二分類問題。?
1.4 下游任務(wù)
VideoBERT通過上述兩個自監(jiān)督任務(wù)實際上學(xué)習(xí)了visual-liinguistic的聯(lián)合表示(分布)p(x,y),其中x表示visual sequence,y表示text sequence。這個聯(lián)合分布可以用在下列三種任務(wù)上:
(1)text-to-video:?根據(jù)文本預(yù)測視頻,根據(jù)文本自動插圖。?
? ? ? ?
(2)video-to-text:?根據(jù)視頻預(yù)測文本,對視頻自動生成摘要。
(3)unimodal fashion(單一模態(tài)下使用):利用文本或者視頻的邊緣分布,根據(jù)上文預(yù)測下文。對文本來說就是我們非常熟悉的語言模型,對于視頻來說我們可以根據(jù)前面的視頻內(nèi)容預(yù)測后面可能發(fā)生的事情。
? ? ? ?? ? ? ?
2 實驗
文章實際設(shè)計了兩個下游任務(wù)來驗證學(xué)習(xí)到的跨模態(tài)聯(lián)合表示的有效性。
2.1 看圖說話 ? ???
根據(jù)視頻和一個固定的模版“now let me show you how to [MASK] the [MASK],”?預(yù)測被mask掉的關(guān)鍵詞(一個動詞和一個名字)。下圖定性的展示了三個例子,每個例子展示了視頻中兩個片段的類中心,和被預(yù)測的top verbs和nouns。
? ? ? ?? ? ????? ? ?
表格中的數(shù)據(jù)定量對比了該任務(wù)在不同方法上的效果。S3D是一個經(jīng)典的監(jiān)督模型,除了S3D以外的模型都沒有使用監(jiān)督信號進(jìn)行訓(xùn)練(zero-shot classification,直接使用pre-trained模型)。BERT(language prior)代表直接使用原始BERT,VideoBERT(language prior)是指在原始BERT基礎(chǔ)上增加視頻數(shù)據(jù)提取出得文本數(shù)據(jù)進(jìn)行學(xué)習(xí),VideoBERT(cross modal)是完整模型并結(jié)合了視頻和文本數(shù)據(jù)進(jìn)行學(xué)習(xí)。對比實驗結(jié)果可以看到,top-5的準(zhǔn)確率,三種BERT設(shè)定效果不斷提升,驗證了數(shù)據(jù)的有效性和多模態(tài)的有效性,最終zero-shot的VideoBERT(cross modal)能夠達(dá)到和有監(jiān)督學(xué)習(xí)的S3D差不多的效果。而top-1的結(jié)果各類BERT稍顯遜色的原因是BERT基于word piece切詞,更有利于open-vocablary的分類問題,主要關(guān)注語義上的準(zhǔn)確性而不是精確的match。? ?
2.2 video caption
作者利用該任務(wù)驗證VideoBERT作為特征抽取的有效性。使用同樣的transformer encoder-decoder模型生成視頻摘要,不同的是輸入該模型的feature。
(1)使用S3D提取的feature(baseline)
(2)使用VideoBERT提取feature
(3)VideoBERT feature拼接S3D feature(最強(qiáng)廠牌)
? ? ? ?
? ? ? ??? ? ?
從定性的例子中可以看到,使用VideoBERT feature生成的video caption內(nèi)容更加的細(xì)節(jié),更為生動具體。從定量的指標(biāo)上來看,VideoBERT+S3D取得了最好的效果,VideoBERT學(xué)出來的feature對下游任務(wù)video caption有很大的提升。? ?
《Learning?Video?Representations?Using?Contrastive?Bidirectional?Transformer》
看了上一篇的工作,小伙伴們可能會有一個疑問,將實值連續(xù)型的特征向量(visual features)通過聚類規(guī)整為有限個類中心,是否會丟失video中包含的很多細(xì)節(jié)的信息呢(⊙?⊙)?那么,這篇文章就不再使用聚類將實值連續(xù)型的visual features離散化,而是直接使用實值向量visual features,通過模型算法上的微調(diào),實現(xiàn)BERT的多模態(tài)化。
1 方法
? ? ? ?? ? ? ?
首先上模型全景圖,虛線上面是pretrain階段,虛線下面是下游任務(wù)的fine-tuning。灰色方框表示使用純文本數(shù)據(jù)預(yù)訓(xùn)練BERT模型然后fix。白色黑線方框表示使用純video數(shù)據(jù)預(yù)訓(xùn)練CBT模型,紅色線條部分是使用多模態(tài)數(shù)據(jù)預(yù)訓(xùn)練cross-modal transformer將前面兩者結(jié)合。小夕下面帶大家逐個揭開每個部分的神秘面紗~~~
1.1 純文本的BERT模型
自監(jiān)督任務(wù)還是原始BERT的MLM,隨機(jī)mask text token利用周圍沒有被mask的文本進(jìn)行預(yù)測。
? ? ? ?? ? ??
其中yt為被mask的正確token,y-t表示除去被mask掉yt的text sequence。這個MLM的損失函數(shù)實際上是要最大化利用y-t正確預(yù)測出yt的概率。而在這里根據(jù)y-t預(yù)測yt的概率被定義為如下。
? ? ? ?? ? ??
其中為經(jīng)過transformer得到的feature。優(yōu)化目標(biāo)是被mask的word sequence y-t的表示和真實的yt的embedding相似(共線)。
上述BERT和原始的BERT本質(zhì)上是一樣的,只是用內(nèi)積的形式代替了softmax計算概率。這一小小的修改和后面visual部分的建模相呼應(yīng),模型結(jié)構(gòu)非常的優(yōu)雅。
1.2 visual CBT模型
基于video數(shù)據(jù)的自監(jiān)督任務(wù)同樣是無縫銜接的MLM模型,但是因為visual feature是連續(xù)的實值向量,所以作者使用了NCE(noise contrastive estimation )loss:
? ? ? ??? ? ?
? ? ? ??? ? ?
對比上面的BERT中概率的定義,和NCE的定義是不是超級相似!????? ??
?是被mask的visual sequence經(jīng)過visual BERT的輸出。因為visual feature不可數(shù),無法像text部分窮舉所有的負(fù)例,所以通過負(fù)采樣的方式sample負(fù)例。優(yōu)化目標(biāo)是被mask的visual sequence x-t的表示和真實的xt的visual feature et相似。
? ? ?
1.3 跨模態(tài)CBT模型
前面介紹了單一模態(tài)下的模塊,針對既有視頻(從video中提取的visual features記為y=y1:T)和文本(從video中利用ASR提取出的文本token,記為x=x1:T)的數(shù)據(jù),利用它們之間的對應(yīng)關(guān)系學(xué)習(xí)多模態(tài)交互的表示就交給cross-modal CBT模塊啦~~
雖然visual features y和文本x來自同一段視頻,但是即使是教學(xué)視頻,它們在每一幀(frame level)并不是嚴(yán)格對應(yīng)的,所以我們不能強(qiáng)行要求模型可以通過xt預(yù)測yt或者通過yt預(yù)測xt。只需要要求它們在sequence level上存在對應(yīng)關(guān)系即可(說人話就是模型可以通過x預(yù)測y)。同樣使用NCE loss:
? ? ? ??? ? ?
? ? ? ?? ? ??
分別用visual CBT和BERT模型計算x和y的表示。
? ? ? ??? ? ?
? ? ? ?? ? ??
帶入cross-modal transformer計算交互的表示,用一個淺層的MLP計算x和y之間的互信息。優(yōu)化目標(biāo)和前面兩個類似,正例(x,y)之間的互信息大,負(fù)例(x,y‘)互信息小。?
1.4 overall model
整體模型就是上面三個部分的綜合。三個部分雖然輸入都稍有差異,但是在算法上是非常一致對稱的,結(jié)合起來非常的完美。
? ? ? ??? ? ?
2 實驗
2.1 action recognition
用action recognition作為下游任務(wù)驗證visual representaions的有效性。下表的左邊對比了兩種pretrain策略(Shuffle&Learn 和3DRotNet )和baseline隨機(jī)初始化,在fix feature和finetune的兩種使用方法上在兩個數(shù)據(jù)集(UCF101和HMDB51)上的效果。實驗結(jié)果表明了本文提出的visual CBT模型的有效性。表的右邊是直接和各類state-of-art的監(jiān)督模型相比,CBT模型也比這些模型有非常明顯的提升。
? ? ? ?
2.2 action anticipation?
文章使用了三個不同的數(shù)據(jù)集the Breakfast dataset ,the 50Salads dataset和the ActivityNet 200 dataset。不了解action anticipation任務(wù)的可以簡單認(rèn)為是基于video的多分類任務(wù)就好。在這個實驗中作者不僅證明了CBT方法比其他已有的方法好,還證明了CBT對長video有很好的表示能力。
? ? ? ?? ? ? ?
左邊表列出了CBT和其他幾個方法的對比,CBT在上述三個任務(wù)上都一致優(yōu)于其他方法(三個實驗數(shù)據(jù)擺上來,非常讓人信服呀),其中self-super=Y表示該方法使用pretrain-finetune的方式,self-super=N表示該方式是end-to-end訓(xùn)練的。
右邊表則對比了不同視頻的長度下,不同模型的效果。在三個數(shù)據(jù)機(jī)上CBT都一致明顯優(yōu)于其他兩個baseline(AvgPool和LSTM),并且隨著video長度的增加,CBT的效果是越來越好的。一般的模型都會對長文本或者長video失效,比如上表中兩個baseline 方法,但是CBT可以不受長度的限制,反而能從更長的video中學(xué)到更好的表示,使得模型效果變好。(斯國一!!????)
2.3 other video tasks
? ? ? ?
文章還對比了video captioning 和 action segmentation 這兩個任務(wù),CBT在video captioning上比前面提到的VideoBERT也有所提升,這個提升可能就是優(yōu)化了聚類步驟造成信息丟失的問題吧。
?
【這是彩蛋????】
公眾號后臺回復(fù)【videoBERT】獲取論文原文(附小夕自己閱讀時的筆記哦)
參考筆記讀論文,更簡單~~
可
能
喜
歡
Stanford CS224n追劇計劃(附追劇計劃詳細(xì)攻略)
如何擴(kuò)充知識圖譜中的同義詞
中文分詞的古今中外,你想知道的都在這里
深度神經(jīng)網(wǎng)絡(luò)為何會有災(zāi)難性遺忘?如何進(jìn)行有效的持續(xù)學(xué)習(xí)?
模型訓(xùn)練太慢?顯存不夠用?混合精度訓(xùn)練了解一下
萬萬沒想到,我的煉丹爐玩壞了
夕小瑤的賣萌屋
_
關(guān)注&星標(biāo)小夕,帶你解鎖AI秘籍
訂閱號主頁下方「撩一下」有驚喜
總結(jié)
以上是生活随笔為你收集整理的Bert在CV领域的应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 万能的BERT连文本纠错也不放过
- 下一篇: NLP领域的首次Hard Label黑盒