視覺問答技術完全指南:從數據集到方法再到評估
來源:Tryolabs
編譯:Bing
編者按:前幾天我們介紹了中科大和美國幾所高校聯合推出的VizWiz數據集,旨在幫助盲人和有視力障礙的人群。VizWiz是一個典型的VQA數據集,將自然語言處理與計算機技術相結合。本文作者為知名技術公司Tryolabs的機器學習專家Javier,他為我們詳細介紹了VQA的原理及常見資料庫。以下是論智對原文的編譯。
通常,建立一個能回答有關任何圖像內容問題的系統都是極有挑戰性的任務。假設一個系統看到下面的圖像,可能會問到以下問題:
圖像中有什麼?
裡面有人類嗎?
他們在做什麼運動?
誰在控球?
圖中有幾名運動員?
他們都是哪個隊?
當時在下雨嗎?
1986年,阿根廷對戰英格蘭
所以圖中到底有幾名運動員呢?嗯……動手數一下就知道共有11名運動員,因為我們足夠聰明,不會把裁判(穿黑衣服那位)算在內對吧?
雖然人類能非常輕鬆地解決這些問題,但想要開發具有這類功能的系統似乎像科幻小說里的情節。然而,隨著深度學習的出現,我們見證了視覺問題解答(VQA)領域取得的巨大研究進展,實驗的結果讓這些系統的出現有了希望。
在本文中,我將簡要介紹目前VQA領域的數據集、方法和評估指標,以及如何將這一具有挑戰性的任務應用到實際生活中。
一個多學科的問題
我們可以將VQA系統簡單地定義為:輸入一張圖像和與其相關的自然語言問題,然後輸出自然語言答案的系統。從本質上講,這就是一個綜合多學科的研究問題。舉個例子,就上面那張圖來說,想回答問題,我們就需要NLP知識。原因有二:首先要理解問題,其次要生成答案。在文字問答題中,下面是NLP領域常見的問題。比如下面這句話:
巴黎有多少座橋?
如果是用文字回答文字問題,那麼這套Q&A系統通常會考慮一下幾方面:
對問題進行分類:這是一個問某物有多少個的問題,所以答案一定是一個數字。
提取要統計的對象:橋。
提取統計的環境:在這個問題中,範圍是「巴黎」。
分析完問題後,系統會建立某種查詢系統(query),然後依靠基礎知識得到答案。但這還遠遠不夠精確,因為在美國就有至少22個名為Paris的城市。除此之外還有許多準備工作。
VQA與其他系統主要的區別在於,搜索和推理過程必須依靠圖像的內容。因此,要回答「圖中是否有人類」這種問題,系統必須能夠檢測物體。要回答「是否下雨」,就需要對場景進行分類。回答「是哪兩個球隊」,系統需要廣泛的知識。最後,要說出「哪個隊員正在控球」,不僅要進行常識推理,還需要相關的知識推理。計算機視覺領域已經解決了很多這類的任務(目標對象識別、目標檢測、場景分類等等),他們在過去幾年都取得了令人矚目的結果。
所以,正如我們所看到的,一個好的VQA系統必須能解決典型的NLP和CV任務,以及具備對圖像內容推理的能力,這顯然是AI研究領域的多學科問題。
可用的數據集
與NLP或CV中的許多問題一樣,例如機器翻譯、圖像標註或命名實體識別(NER),數據集的可用性是一個關鍵點。結合有明確定義的指標,這些數據集能夠公平地比較不同方法、能夠與人的結論相比較,並以客觀方式評估方法的表現,即確定最新技術的實際局限性。
VQA領域非常複雜,一個好的數據及應該大到足以涵蓋世界真實場景中所有可能的問題和圖像內容。許多數據集都包含Microsoft COCO數據集中的圖像。該數據集有328000個圖像,具有91中對象類型(即使是4歲小孩也能輕易發現),總共有250萬個被標記的實例。
COCO數據集中標記圖像例子
COCO數據集能簡化VQA數據集建立的過程。但是,這並不是一項簡單的任務。例如,收集多樣、實用、清晰的問題就是很難的。除了多樣和精準的問題,一個好的數據集同樣需要避免偏見,才能被利用好。例如,如果一個數據集中的答案只有「是」或「不是」兩種,其中90%的答案都為「是」,那麼VQA不用解決任何問題就可能有90%的準確率。
為了進一步了解VQA的複雜性,讓我們看一下幾個重要的數據集。
DAQUAR數據集
VQA第一個重要的數據集是DAtaset for QUestion Answering on Real-world images(DAQUAR)。它包括6794對訓練問答題,以及5674對測試問答題,其中的圖片都來自NYU-Depth V2數據集。這意味著平均每張圖片有9對問答題。
雖然這是個很棒的開端,但NYU資料庫只包括室內場景,有時光線會影響問題的回答。事實上,對人類識別檢測的準確率只有50.2%。
人類對圖像生成的問答題
DAQUAR數據集的另一個缺陷是它的尺寸不適合用作複雜模型的訓練和評估。
COCO-QA數據集
COCO-QA數據集就比DAQUAR大得多了,它有123287張來自COCO數據集的圖像,其中78736張用於訓練,38948張用於測試。為了建立如此龐大的問答題,作者使用NLP演算法從COCO的圖像標註中自動生成了問答題。例如,如果有圖片被標註成「房間里有兩把椅子」,那麼它會自動生成問題:「房間里有幾把椅子?」需注意,答案必須是一個單詞。
雖然這種方法很聰明,但是生成的問題仍然擺脫不了NLP固有的通病,即有時句子讀起來很奇怪,或者有語法錯誤。在一些情況下簡直難以理解:
問題中語法錯誤示例
另一個缺陷是,該數據集只有四種問題,而且分布得不均勻:物體(69.84%)、顏色(16.59%)、數字(7.47%)和位置(6.10%)。
VQA數據集
和其他數據集相比,VQA數據集更大一些。除了從COCO數據集中獲取的204721張圖片,它還包括50000張抽象的卡通圖像。每張圖有三個問題和十個答案,即總共有76萬個問題和大約1000萬個答案。
其中有趣的一點是,在測試時,他們提出了兩種回答的模式:開放式和選擇題。對於第一種模式,他們提出了如下公式:
這表示,如果有至少三個人回答了同樣的答案,那麼這個答案被認為是100%正確的。
對於選擇題,他們為每個問題創建了18個備選答案(正確和不正確的):
正確的答案:十位標註者的答案都相同。
合理的答案:標註者沒有看圖像而做出的三個相同答案。
熱門答案:數據集中最常見的十個答案(比如「是」、「否」、「2」、「1」、「白」、「3」、「紅」、「藍」、「4」)。
隨機答案:為其他問題隨機選擇正確的答案。
儘管在設計數據集時採取了預防措施(即考慮熱門答案時會讓推斷問題的類型更加困難),但我們仍然會發現一些問題,也許最明顯的一個是有些問題過於主觀而無法得到正確的答案。有時候,就像下面的圖片:
綠色的答案是在標註者看到圖片之後做出的,藍色的是他們沒有看到圖片做出的
我們不能肯定這個男人有孩子,但是這也許是最可能的答案。然而,有些問題,比如在一張飛機圖片上問道:「你願意乘坐它嗎?」這種就沒有正確答案。
最後,一個重要的缺點就是有些問題不需要看圖像就能得到正確的答案。例如:「狗有幾條腿?」、「樹是什麼顏色?」雖然不總是正確,但「四條腿」和「綠色」是最常見和明顯的答案。
目前的方法
通常,VQA的方法大致有以下三種:
提取問題的特徵;
提取圖片的特徵;
將兩種特徵結合生成答案。
對於文字特徵的提取,Bag-Of-Words或長短期記憶編碼器可以派上用場。在圖像特徵方面,在ImageNet上預訓練過得卷積神經網路是最常用的選擇。對於答案的生成,人們常用的方法是將問題看作分類任務。
VQA方法的簡化過程
所以,多種方法之間的主要差異就是它們如何把文字特徵和圖像特徵結合在一起。例如,研究人員能簡單的用串聯將它們組合,然後輸入到線性分類器中。或者可以用被疑似模型來推斷問題、圖像和答案的特徵之間的基礎關係。由於相關的許多演算法超出了本文的範圍,所以我只會提到幾個。建議閱讀由Kafle和Kanan撰寫的有關VQA的調查報告,其中有更詳細的分析。
標準(Baseline)
對於很多分類問題,一個普通的標準總能給出任何問題最常見的答案。另一個常見的標準是隨機挑選一個答案。例如,2016年Antol等人的研究表明,在VQA數據集中的前1000個答案中挑選最常見的那個,準確率可達29.72%。除此之外,這可能與數據集偏差有關,這樣的結果說明了有一個好的標準的重要性:它們決定了可接受性能的最低水平,並且還可以顯示出任務或數據集的問題所在。
VQA中另一個更複雜的標準是輸入代表特徵組合的向量,訓練線性分類器或多層感知器。這種組合可能是簡單的連接或是各種元素的組合或特徵的產物。
例如,之前引用的使用兩種模型的工作:
一個多層感知器(MLP)神經網路分類器,每層有兩個隱藏層和1000個隱藏單元(dropout 0.5),具有雙曲線非線性。
一個LSTM模型後跟一個softmax圖層來生成答案。
在第一種情況下,提取文字特徵可以使用Bag-Of-Words,用問題中的前1000個單詞和標註中的前1000個最常用單詞來計算它們。對於圖像特徵,他們使用VGGNet的最後一個隱藏層。至於LSTM模型,他們使用one-hot編碼解決問題,並使用與上述相同的圖像特徵,然後進行線性變換,將圖像轉換為1024維,已匹配問題的LSTM編碼。問題和圖像編碼通過點乘法相結合。
這些標準取得的成績非常有趣。例如,如果模型只在文字特徵上訓練,則準確度為48.09%,而如果只對視覺特徵進行訓練,則會降至28.13%。最好的LSTM模型在這兩種特徵上共同訓練,準確度達53.74%。作者證實,選擇題的結果優於開放式答案,並且所有方法都比人的水平差得多。
這個框架中的許多遍體可以被應用獲得不同標準。
基於注意力的方法
基於注意力的方法目標是將演算法的重點放在輸入的最相關部分上。例如,如果問題是「球是什麼顏色的」,圖中包含球的部分則比其他區域更相關。同樣,「顏色」比「球」更重要。
VQA常用的方法是利用空間注意力生成特定區域的特徵來訓練CNN。獲取圖像空間區域有兩種常見的方法。首先,在圖片上鋪滿網格。
網格布置好後,每個區域之間的相關度就由具體的問題決定了。
另一種方法是利用自動生成的邊界框。
對於選定的區域,我們可以用問題判斷每個特徵之間的相關性,並僅僅選擇那些能夠回答問題的答案。
貝葉斯方法
貝葉斯方法背後的理念是模擬問題和圖像特徵的co-occurrence統計,作為推斷問題和圖像之間關係的一種方式。
例如在2016年Kafle和Kanan的研究成果中,作者用給出的問題特徵和答案類別模擬出了圖片的特徵概率。他們這樣做是因為他們發現只要給定問題的類型,答案的類型就能預測出來。例如,「圖中有多少運動員」是一個問數量的問題,需要數字作為答案。為了模擬出概率,他們將貝葉斯模型與分類模型結合。對於特徵,他們使用ResNet處理圖像,用skip-thought向量處理文本。
評估標準
看起來可能很明顯,但是要記住:任何系統的性能取決於評估它的標準。在VQA中,我們可以使用的最直接的指標是經典精度(classic accuracy)。雖然這對選擇題系統來說是個合理的選擇,但對於開放式答案來說,這往往是不利的。如果標準答案是「橡樹」,那麼是否意味著「樹」這個答案是絕對錯誤的?如果問題是「圖中有哪些動物?」,而圖中顯示了狗、貓、兔子,那麼「狗和貓」這個答案該如何判定?
這些都是非常複雜的問題,為了儘可能精確地評估不同方法,我們必須解決這些問題。
WUPS
WUPS方法由Malinowski和Fritz在2014年提出,該方法是基於1994年Wu和Palmer提出的WUP方法。WUP方法計算了回答和標準答案之間的語義距離,該值是0到1之間的數字。他們用WordNet,計算語義樹中回答和標準答案之間的術語的相似性。這樣對於單個術語來說,我們可以得到以下結果:
WUPS(「橡樹」,「樹」)=0.94
WUPS(「狗、貓、兔子」,「貓和兔子」)=0.8
幾乎與所有的語義測量一樣,WUPS為完全不相關的術語分配了相對重要的值。為了解決這個問題,作者建議將0.9分以下的減少0.1個係數。
不可否認的是,對多數情況來說,WUPS比經典精度更合適。然而,由於它依賴於語義相似性,如果標準答案是「黑色」或「綠色」,那麼如果回答「紅色」則會具有非常高的分數。另一個問題是他只能在很少的術語中工作,並且只有當它們具有WordNet含義時才會起作用。
多個獨立的標準答案
除了依靠語義測量,我們每個答案也許有多個標準答案。如果是這種情況,我們可以說,如果回答與最常出現的答案一樣,那麼它就是正確的。如果它與其中一個標準答案吻合,那麼也是正確的。後者必須慎用,因為像那些答案為「是」或「不是」的問題沒有常見答案,在這種情況下,任何答案都是正確的。
手動評估
最後,另一個解決評估問題的方法是讓人類判斷。當然這種方法十分昂貴,同時還要制定明確的規定。
現實生活應用
VQA有許多潛在的應用,最直接的可能是幫助盲人或視力有障礙的人士。VQA系統可以提供網路或任何社交媒體上的圖像信息。另一個重要的應用是將VQA集成到圖像檢索系統中,這可能會給社交媒體和電子商務產生巨大影響。VQA也同樣可以用於教育或娛樂目的。
VQA Corsortium網站有非常完整的關於VQA的信息、資源和軟體。
結語
VQA是最近興起的領域,需要理解文本和視覺。由於深度學習技術顯著提高了NLP和CV領域的研究成果,VQA技術在未來幾年也將越來越準確。
就像人工智慧領域的許多其他任務一樣,構建的數據集和定義的評估標準以某種方式塑造了目前為止所做的研究。評估VQA的最佳系統仍不確定,也許新的數據集和標準會帶來改變。
除此之外,還有一些正待解決的問題。例如,假設VQA系統沒有問題,用選擇題的形式是好還是不好?在選擇題數據集中表現良好的系統是否也能在現實中表現好?在得到的答覆中生成問題的方式有什麼影響?
雖然目前系統的表現與人類的選擇相比還差得遠,但結果仍然很有希望。隨著VQA被大型公共平台、設備和工具所採用,它很可能會改變我們搜索數據和數據交互的方式。
原文地址:tryolabs.com/blog/2018/03/01/guide-to-visual-question-answering-datasets-approaches-and-evaluation/
TAG:論智 |