哦哇資訊網

從影象到文字,生成模型GIT在多模態領域的應用

由 DataFunTalk 發表于 美食2023-01-24

導讀:

當我們提到生成模型的時候,一般來說它的輸出是一個 token-by-token 的過程,也可以說是一個 auto-regressive 的過程。而我們今天介紹的生成模型GIT是Image-to-Text,影象到文字的模型。這類模型也可以稱為是Image Captioning 模型。GIT模型是基於Transformer結構,也就是基於self-attention 的機制進行影象處理並識別出文字。

——

01

示例介紹

首先,我們先看幾個例子來了解模型可以處理哪類影象並生成文字。

Example 1

例子1的左邊為模型輸入,右邊為模型輸出。從輸出的這句話我們可以看到模型可以識別出左邊的圖片是一張卡通,同時可以識別出裡面卡通人物的動作(在互相對話)。

Example 2

例子2是一張手機螢幕的上半部分的截圖。模型可以識別出照片內容並可生成一個完整的有正確的主謂賓的句子。從句子內容可看出,模型可以正確識別出螢幕上所顯示的時間和下方的日期。這個例子表明GIT模型在具備將影象轉成文字的同時還具備文字識別的功能。可能大家會有疑問,模型會不會需要藉助OCR的系統?答案是,不會的。

GIT模型是可以直接從影象學到的文字輸出。

Example 3

例子3是一張超市價籤的圖片,從右邊識別出的文字可以看出,這個模型可以準確識別出圖片是一個價錢和上面所顯示的貨幣和價格 ($14。88)。

Example 4

有人可能會有疑問,模型既然不需要藉助OCR系統就可以正確的識別出圖片中的文字,是否是模型學習到圖片周圍的語義資訊而得出文字,而並非具備OCR的能力?針對這個問題,我們進行了另一個實驗。例子4是一張手動生成的圖片。從識別結果可以看出,模型可以準確識別出當前圖片的背景和上面不是很標準的兩行文字。

Example 5

例子5是一個更具挑戰的圖片,圖片上的句子是用藝術字顯示的一段話。對於我們人來說說,在沒有相關背景或對藝術字比較熟悉的情況下,想要快速準確讀出上面的文字也是有一定難度的。從模型的輸出可以看出,模型可以將大部分文字識別正確,除了在一個單詞‘Markov’中模型將字母k錯誤的識別成了l。

看完上面幾個例子,我們可以得出這樣一個

結論,GIT模型具備了描述圖片內容並且以人類可理解的語言表述出來的能力,同時還具備了文字識別OCR的功能。

從影象到文字,生成模型GIT在多模態領域的應用

Example 6

我們看最後一個例子,例子6中的文字並不是規矩的從左到右,而是圍繞在硬幣的邊緣。而從右邊的識別結果可以看出,模型成功正確識別圖片中的語義。看到這,有人可能會有疑問,在圖片輸入之前,我們是否進行了影象矯正,將文字變成從左到右的規矩排列呢?答案是否定的,這個模型的輸入就是當前我們所看到這張圖片的樣子。由此可以得出

結論,GIT模型不僅可以識別規矩的文字,也同時具備了識別不規矩文字的能力。

——

02

GIT模型結構介紹

從影象到文字,生成模型GIT在多模態領域的應用

上圖為模型的整體架構圖。

此模型可以解決圖片轉文字的任務,而對於其他任務,比如檢索等問題,並不是此模型處理的重點。

模型的輸入是圖片,輸出是文字。

圖片在進入模型後,首先會經過Image Encoder層,將圖片進行編碼處理,根據encoder中使用的不同演算法,輸出的結果也會不同。比如,如果使用CNN進行影象Encoding,我們會得到N*M的 feature representation,因為圖片有不同的channel,CNN會合並這些channel,將結果輸出為一列。如果使用Transformer結構進行Encoding,輸出的就會是多個Tokens。因為模型的輸出為文字,所以Image Encoder後面會接Text Decoder。從網路結構來看,此模型是由兩大部分組成,分別為:Image Encoder和Text Decoder。因為我們希望模型結構儘可能簡單,從模型效果來看,這種網路結構是能達到預期效果的最簡化的模型結構。

Text Decoder使用的是Self-Attention的標準結構

。另一種可使用的網路結構是Cross Entropy。圖片經過Image Encoder之後,他的輸出和文字進行Cross Entropy的計算。在使用交叉熵的結構下,我們發現——在資料量不多的情況下,模型的表現會比較不錯,但是當資料量增多並且訓練完全的情況下,交叉熵的表現可能會略遜於Self-Attention的結構。我們認為Self-Attention的模型機制可以抓取到更多資料特徵。當然二者差別並沒有很大,不排除可以透過使用各種訓練技巧使交叉熵達到Self-Attention結構的表現。為了簡單起見,我們這裡就選擇使用Self-Attention的結構作為Text Decoder。

在Image Encoder中,我們使用了Florence/CoSwin Encoder

。這個Encoder是一個預訓練模型,是由一個contrastive task訓練而來。此模型類似於CLIP模型,不過用到另一個contrastive loss。這個loss會考慮到,不同的圖會被對映到相同的類別,這類False Positive的問題。總體來說,這個模型的Image Encoder使用了透過contrastive 來進行預訓練的預訓練模型。

Text Decoder的初始化是隨機的

。據我們的觀察,如果我們使用了比如Bert這類預訓練模型,其結果並不會優於隨機初始化。這類現象的原因可能是在多模態的任務下,模型對於影象的理解是十分的重要的,而預訓練語言模型起到的作用並沒有那麼大,也就造成其結果與隨機初始化並沒有太大的區別。而隨機初始化有另一個優點,我們可以更自由地去探索不同網路結構對模型效果的影響。實驗中我們測試了不同的transformer block的個數,比如,6,12,24,36。結果發現在我們的任務中6層block是表現最好的,與在NLP任務中層數越多越好的結論是相反的。造成這一結果的原因,據我們分析是因為在多模態任務下,文字的長度往往是比較短的,所涉及到的詞彙量遠遠少於一般NLP任務。因為這個原因,所以在多模態任務下,如果模型結構過於複雜,在模型訓練中可能會造成模型訓練困難,難以最佳化等問題。這也就是為什麼在我們這個任務下,6層transformer block可以達到最優效果。

訓練模型使用的任務是文字生成任務

,即,當前token是由上一個token預測而來。訓練時使用的loss是Cross Entropy Loss。

雖然GIT模型的初始任務是為了Image Captioning而設計的,但在實際使用中我們發現,經過簡單的操作,這個

模型也可以運用在VQA和Video任務中

。在訓練VQA模型中,輸入的文字是Question&Answer對,而預測輸出的結果是Answer。在Video任務中,我們發現模型在Video上的表現也達到預期, 具體做法是我們從video中抽取6個Frame,進行encoding。其中我們使用的temporal embedding 從0開始初始化。但是在實驗過程中發現,temporal embedding在模型中起到的作用不大。因為當前研究發現,在對video進行處理時,模型可以從Frame中就學到特徵資訊,而並不需要再增加embedding機制。

結論:模型訓練中image encoder需要選取比較大的,訓練資料用到的是0.8B pairs。

——

03

GIT與當前演算法比較

從影象到文字,生成模型GIT在多模態領域的應用

Flamingo

與GIT架構類似,區別是:Image Encoder,Vison Encoder和Text Decoder的引數是凍結的,透過加入其他機制, 如random initialized module,perceiver resampler,使得模型可以學到資料特徵。

Coca

同樣由Image Encoder和Text Decoder組成,不過Text Decoder由兩部分構成,分別為Unimodal Text Decoder和Multimodal Text Decoder會去分別計算Contrastive loss和Captioning Loss。

下圖展示了我們的模型與Flamingo和Coca的表現對比:

從影象到文字,生成模型GIT在多模態領域的應用

從結果可以看出,

我們的模型要遠遠小於Falmingo和Coca模型

。在少量訓練資料下,我們的模型在某些任務中可以達到優於其他兩個模型的效果。另外,我們的模型與其他目標檢測演算法相比,訓練資料並不需要特別的標註資料;與其他場景文字相關的演算法相比,訓練資料並不需要OCR文字。

1. 為什麼GIT模型的效果會這麼好?

從影象到文字,生成模型GIT在多模態領域的應用

上圖顯示在不同的資料量和模型大小情況下,模型的表現比對。

我們可以得出一個結論,模型的規模越大越好,資料量越多越好

。但是在圖片左邊,COCO模型在資料達到一定量之後模型表現並不會再隨著資料量的增加而提高。尤其在Base模型上,資料越多,模型表現反而越差,可能的原因是Coco的原始資料已經囊括了大部分情況,額外的資料並不會帶來更多價值,反而會造成最佳化困難問題。

2. 模型表現總結

從影象到文字,生成模型GIT在多模態領域的應用

從上圖可以看出,GIT模型的表現普遍優於當前SOTA,尤其是在TextCaps這個任務中GIT模型可以超過人類表現。

3. 模型在圖片分類任務上的表現

從影象到文字,生成模型GIT在多模態領域的應用

GIT模型也可以用於圖片分類任務。之前的圖片分類任務的傳統做法是要預先確定圖片有多少種類,在已知種類的前提下進行模型訓練。而我們的GIT模型是一個生成模型,圖片類別可以當作輸出文字作為訓練資料輸入模型,訓練時並不需要預先知道所有圖片類別,所以不存在out-of-vocabulary的問題。

從結果看出,與其他傳統演算法比對,GIT的表現很有競爭性,並且計算量要小於其他ensemble 或者multi-scale 模型。

右面是GIT模型在ImageNet上的表現,從給出的這幾個例子我們可以看出

GIT模型與SOTA模型有2-3個點的差距

。透過分析false positive,我們發現GIT模型在ImageNet資料上的錯誤判定都是超出我們預期的。因為我們的模型需要做兩個判定,一個是label name一個是text captioning。

4. 模型在場景文字識別任務上的表現

從影象到文字,生成模型GIT在多模態領域的應用

模型準確率平均可達到92。9%。與其他當前SOTA模型的表現也不相上下。

——

04

總結

從影象到文字,生成模型GIT在多模態領域的應用

GIT作為生成模型,可以運用到多類任務中,比如圖片分類、文字識別、VQA等等。

在12個vision-language任務中創造了新的SOTA。尤其在TextCaps這個任務中,第一次超越人類表現。

提出了一個新的分類方案,透過生成模型來進行分類任務,從而實現在訓練和預測階段都可以Vocabulary-free。

今天的分享就到這裡,謝謝大家。

分享嘉賓:王建峰博士 微軟

編輯整理:Yishu Morningstar Inc

出品平臺:DataFunTalk

01/分享嘉賓

從影象到文字,生成模型GIT在多模態領域的應用

王建峰|微軟

Principal Researcher

I am a Principal Researcher at Microsoft Cloud & AI and focus on large-scale multimodal representation learning recently。 I have broad research interest, including computer vision, e。g。 image classification and object detection, and vision-language intelligence, e。g。 vision-language pretraining and visual question answering。 I received the B。Eng。 degree and PhD degree from the University of Science and Technology of China (USTC) 。

02/關於我們

DataFun:

專注於大資料、人工智慧技術應用的分享與交流。發起於2017年,在北京、上海、深圳、杭州等城市舉辦超過100+線下和100+線上沙龍、論壇及峰會,已邀請超過2000位專家和學者參與分享。其公眾號 DataFunTalk 累計生產原創文章800+,百萬+閱讀,15萬+精準粉絲。

TAG: 模型git圖片識別訓練