計算機視覺GPT時刻!UC伯克利三巨頭祭出首個純CV大模型,推理驚現AGI火花
計算機視覺的GPT時刻,來了!
最近,來自UC伯克利的計算機視覺「三巨頭」聯手推出了第一個無自然語言的純視覺大模型(Large Vision Models),并且第一次證明了純視覺模型本身也是可擴展的(scalability)。
除此之外,研究人員還利用超過420B token的數據集讓模型可以通過上下文學習來理解并執行下游任務,并且統一了圖片/視頻、有監督/無監督、合成/真實、2D/3D/4D等幾乎所有的數據形式。
論文地址:https://arxiv.org/abs/2312.00785
值得一提的是,讓LVM做非語言類智商測試(Raven's Progressive Matrices )中常見的非語言推理問題,它時常能做出正確的推斷。
對此,研究人員驚喜地表示,這或許意味著LVM也展現出了「AGI的火花」!
純視覺模型的逆襲
現在,隨著大語言模型的爆發,不管是學術界還是業界,都開始嘗試使用「文本」來擴大視覺模型的規模。
包括GPT4-V在內的SOTA模型,都是把視覺和文字組合在一起訓練的。
以「蘋果」為例,這種方法在訓練時不僅會給模型看「蘋果的照片」,而且還會配上文字「這是一個蘋果」。
然而,在面對更加復雜的圖片時,就很容易忽略其中大量的信息。
比如「蒙娜麗莎」應該怎么去描述?或者擺滿各種物品的廚房的照片,也很難清晰地被描述出來。
對此,來自UC伯克利和約翰斯·霍普金斯大學的研究人員,提出了一種全新的「視覺序列」建模方法,可以在不使用任何語言數據的情況下,訓練大規模視覺模型(Large Vision Model)。
這種名為「視覺序列」的通用格式,可以在其中表征原始圖像和視頻,以及語義分割、深度重建等帶標注的數據源,且不需要超出像素之外的任何元知識。
一旦將如此廣泛的視覺數據(包含4200億個token)表征為序列,就可以進行模型的訓練,讓下一個token預測的交叉熵損失最小化。
由此得到的LVM模型,不僅可以實現有效地擴展,完成各種各樣的視覺任務,甚至還能更進一步地涌現出比如數數、推理、做智力測試等能力。
左:Alexei A Efros;中:Trevor Darrell;右:Jitendra Malik
簡單來說就是,大規模視覺模型只需看圖訓練,就能理解和處理復雜的視覺信息,完全不用依賴語言數據。
純視覺模型的擴展難題
此前,使用預訓練模型的價值 (例如ImageNet預訓練的 AlexNet) ,早在2015年就已經在R-CNN中得到了證明。
從此, 它從此成為計算機視覺的標準實踐。
而自監督預訓練,作為一種大大增加可用于預訓練的數據量的方法被提出。
不幸的是,這種方法并不是很成功,可能是因為當時基于CNN的架構沒有足夠的能力來吸收數據。
隨著Transformer的推出,其容量變得高得多,因此研究人員重新審視了自監督預訓練,并發現了基于Transformer的掩碼圖像重建方法,例如BEiT, MAE,SimMIM,它們要比基于CNN的同類方法表現好得多 。
然而,盡管如此,目前預訓練的純視覺模型在擴展到真正大的數據集(例如LAION) 時,還是遇到了困難。
如何構建「大視覺模型」
那構建一個大規模視覺模型(Large Vision Model,LVM),需要哪些要素呢?
動物世界告訴我們,視覺能力并不依賴于語言。而許多實驗表明,非人類靈長類動物的視覺世界,和人類的極為相似。
因此,本文走在了LLaVA這種視覺-語言模型不同的方向:僅依靠像素,我們能走多遠?
研究人員試圖在LVM中,模仿LLM的兩個關鍵特性:(1)在大數據環境下的擴展能力,和(2)通過提示(上下文學習)靈活地指定任務。
為了實現這一目標,需要明確三個主要組件:
數據:研究人員希望,能夠充分利用視覺數據顯著的多樣性。
首先是原始的未經標注的圖像和視頻。接下來,研究人員計劃利用過去幾十年中產生的各種帶標注的視覺數據資源,如語義分割、深度重建、關鍵點、3D物體的多個視圖等。
為此,他們定義了一種名為「視覺序列」的通用格式,來表示這些不同的標注,而不需要任何超出像素本身的元知識。訓練數據集總共包含1.64億張圖像/幀。
架構:研究人員使用了一個具有30億參數的大型Transformer架構,這個架構在被表征為token序列的視覺數據上進行訓練。
通過學習到的tokenizer,將每個圖像映射到一個包含256個向量量化token的字符串。
損失函數:研究人員從自然語言處理領域獲取了靈感,其中掩碼token模型已經演變為順序自回歸預測。
一旦能夠將圖像/視頻/帶標注的圖像都表征為序列,就可以訓練模型來最小化預測下一個token的交叉熵損失。
通過這種極簡的設計,研究人員有了一些新穎的發現——
- 隨著模型尺寸和數據大小的增加,模型會表現出適當的擴展行為。
- 通過在測試時設計合適的視覺提示,可以解決多種視覺任務。
- 大量無監督數據,對于各種標準視覺任務性能的提升非常明顯。
- 模型在處理超出分布外數據和執行新穎任務時,表現出了一般的視覺推理能力,但還需要進一步的調查研究。
數據
數據!數據!數據!沒有粘土我就做不了磚頭!
——夏洛克·福爾摩斯
任何大型預訓練模型的關鍵,就必須接受大量數據的訓練。
對于語言模型來說,獲得非常多樣化的大數據集,是很容易的事。
比如,流行的 CommonCrawl存儲庫,就包含掃描了整個網絡的2500億個網頁,極其多樣化,并且包括語言翻譯、問題回答等「自然演示」。
然而在計算機視覺領域,想要擁有同樣規模和多樣性的數據源,還差得很遠。
因此,研究人員的工作核心貢獻之一,就是構建這樣一個統一視覺數據集(UVDv1)。
為此,研究人員利用了許多不同的視覺數據源:(1)未標注的圖像,(2)具有視覺標注的圖像,(3)未標注的視頻,(4)具有視覺標注的視頻,(5)3D合成物體。
其中,未標注的圖像占了總數據的80%以上,組成了大部分的視覺世界,也提供了所需的多樣性,然而代價就是,數據源質量較低。
帶標注的圖像分布會更受限制,但通常質量更高。
而視頻數據則受到更多限制(一般是以人類為中心的活動),但它們卻是時態數據的寶貴來源。
3D合成對象的渲染多樣性最低,但可以提供有關3D結構行為的寶貴提示。
而最重要的是,UVDv1是一個純粹的視覺數據集,不包含文本之類的非視覺元數據。
總之,UVDv1包含16.4億張圖像。
與LLM的另一個重要區別是,語言數據對所有數據都有一個自然的、統一的一維結構——文本流。
然而不幸的是,視覺數據的情況卻并非如此,不同的來源都有不同的結構。
因此在這項工作中,研究人員提出視覺序列,作為視覺數據的統一單元,這就使得他們能夠從不同的集合源,訓練可擴展的模型。
視覺序列只是包含一個或多個圖像的序列,后面跟隨著一個句尾 (EOS) token。
圖1可以顯示出,各種數據源是如何劃分為視覺序列的。
單張圖像
單張圖像本身代表了視覺序列的最簡單形式一一{圖像,EOS}。
研究人員使用了LAION 5B數據集中14.9億張圖像的過濾子集。
這是迄今為止數據中最大的部分,占了88.5%。
圖像序列
圖像序列是視覺序列的自然形式。
研究人員通過從各種現有數據集中獲取視頻數據,來創建此類序列。
16幀的視覺序列,是通過以三個不同步長(10、20和30) 對視頻進行機采樣而形成的。
此外,研究人員利用了來自0bjaverse數據集的合成3D物體,生成了以物體為中心的多視角序列。
對于每個物體,研究人員都在物體中心和攝像機之間,采樣了一個半徑1.5到2.2的長度,并從-45度到45度采樣了一個恒定仰角,然后遍歷物體的不同視角(以15度步長和渲染24個視角的方式,改變方位角)。
通過這種方法,研究人員總共渲染了42000個這樣的序列用于訓練,8000個序列用于測試。
最后,還可以將屬于同一語義類別的圖像表征為序列的(一部分)。
使用ImageNet中的類別,將同一類別中的圖像組(2、4、8或16個)連接成一個16幅圖像的長序列。
帶標注的圖像
為了以統一的方式處理不同類型的圖像標注,研究人員選擇將所有標注表征為圖像。
某些數據類型,例如語義分割圖,邊緣圖,深度和普通圖像,已經是以這種方式表征的。
對于其他數據類型,研究人員為每種特定的標注類型,量身定制了不同方法——
1. 物體檢測:通過在每個物體周圍覆蓋顏色編碼的邊界框,來創建標注。
2. 人體姿態:利用MMPose,遵循OpenPose格式,在像素空間中渲染人體骨骼。
3. 深度估計、表面法線和邊緣檢測:對于給定的ImageNet和COCO圖像,按照特定協議生成標注。
4. 風格遷移、除雨、去噪、弱光增強和立體數據集:這些都表征為圖像對的形式(例如輸入/輸出)。
5. 著色:將ImageNet圖像轉換為灰度圖像,生成圖像對。
6. 修復:在圖像中隨機添加黑色框來模擬損壞,從而產生圖像對。
對于上述所有標注類型,可以通過將相同標注類型的8個圖像對,連接成16個圖像的視覺序列,來創建視覺序列。
對于包含同一圖像的k個不同標注的數據集,使用不同的方法: 對于每組1+k 個圖像 (輸入多于k的標注),然后隨機選擇m個元素,其中m≤n+1≤16。然后將這些m元組連接起來,形成視覺序列。
帶標注的圖像序列
在將帶標注的視頻數據(VIPSeg、Hand14K、AVA、JHMDB)轉換為視覺序列時,采用了兩種互補策略。
第一種策略類似于處理成對標注圖像數據的方法:每個視覺序列都是通過將幀與它們的標注連接起來而構建的——{frame1,annot1,frame2,annot2,...}。
第二種方法是將多個幀與相應的標注{frame1,frame2,annot1,annot2,...}進行分組。
實現方法
與天然展現離散序列結構的文本數據不同,將圖像像素建模為視覺序列并不直觀。在這項工作中,研究人員采取了一個兩階段方法:
1. 訓練一個大型視覺tokenizer(對單個圖像操作)將每個圖像轉換成一系列視覺token;
2. 在視覺序列上訓練一個自回歸Transformer模型,每個序列都表示為一系列token。
圖像分詞(Image Tokenization)
雖然視覺序列在連續圖像之間展現出了序列結構,但在單個圖像內部并沒有這樣的自然序列結構。
因此,為了將Transformer模型應用于圖像,先前的工作通常采用以下方法:要么按掃描線順序將圖像分割成補丁,并將其視為一個序列,要么使用預訓練的圖像tokenizer,例如VQVAE或VQGAN ,將圖像特征聚類成一格一格的離散token,然后再按掃描線順序將這些token轉換成序列。
研究人員采用后一種方法,因為模型的離散分類輸出自然形成了一個可以輕松采樣的概率分布,使得在視覺序列中靈活生成新圖像成為可能。
具體來說,研究人員使用了VQGAN模型生成的語義token。該框架包括編碼和解碼機制,特點是一個量化層,將輸入圖像分配給一個已建立代碼本的離散token序列。
編碼器和解碼器完全由卷積層構成。編碼器配備了多個下采樣模塊,以壓縮輸入的空間維度,而解碼器則配備了等量的上采樣模塊,以恢復圖像到其初始大小。
對于給定的圖像,研究人員的VQGAN的tokenizer產生256個離散token。
需要注意的是,研究人員的tokenizer獨立地對單個圖像進行操作,而不是一次性處理整個視覺序列。
這種獨立性允許研究人員將tokenizer訓練與下游Transformer模型分離,這樣tokenizer就可以在單圖像數據集上進行訓練,而無需考慮視覺序列的分布。
實現細節:研究人員采用了現成VQGAN架構。其中使用了f=16的下采樣因子和8192大小的代碼本。這意味著對于一個大小為256×256的圖像,研究人員的VQGAN的tokenizer產生16×16=256個token,其中每個token可以取8192個不同的值。
研究人員發現使用ImageNet預訓練的tokenizer在ImageNet圖像之外并不具有很好的泛化性能。因此,研究人員在LAION 5B數據集的1.5B子集上訓練他們自己的tokenizer。
視覺序列的序列建模
使用VQGAN將圖像轉換成離散token后,研究人員通過將多個圖像的離散token連接成一個1D序列,將視覺序列視為一個統一的序列。
重要的是,研究人員平等對待所有視覺序列——研究人員不使用任何特殊token來指示特定任務或格式。
研究人員使用交叉熵損失訓練一個因果Transformer模型,其目標是預測下一個token,類似于語言模型的標準方法。用相同的方式訓練模型來處理所有視覺序列,使模型能夠從上下文而不是從特定于任務或格式的token中推斷出圖像之間的關系。這使得模型有機會推廣到其他未見過的視覺序列結構。
實現細節:研究人員將視覺序列中的每個圖像分詞成256個token,然后將它們連接成一個1Dtoken序列。
在視覺token序列的基礎上,研究人員的Transformer模型幾乎與自回歸語言模型相同,因此研究人員采用了LLaMA 的Transformer架構。
研究人員使用4096 token的上下文長度,可以適應研究人員VQGAN tokenizer下的16幅圖像。
類似于語言模型,研究人員在每個視覺序列的開頭添加一個[BOS](序列開始)token,在末尾添加一個[EOS](序列結束)token,并在訓練時使用序列連接(sequence concatenation)來提高效率。
研究人員在整個UVDv1數據集(4200億token)上訓練研究人員的模型,使用一個周期(在語言模型中使用簡單周期訓練,以避免潛在的過擬合)。
研究人員訓練了4種不同參數數量的模型:3億、6億、10億和30億,遵循相同的訓練配置。
通過視覺提示進行推理
由于研究人員模型中的自回歸Transformer輸出了基于先前token的下一個token的概率分布,研究人員可以輕松地從這個分布中抽樣,生成完成視覺序列的新視覺token。
要將模型用于下游任務,可以在測試時構建定義任務的部分視覺序列,并應用模型生成輸出。這類似于語言模型中的上下文學習或計算機視覺中的視覺提示。
實驗結果與分析
最后,研究人員評估了模型的擴展能力,以及它理解和回答各種提示任務的能力。
可擴展性
研究人員研究了研究人員的模型在訓練損失和下游任務性能方面的擴展行為,隨著模型大小的增加以及訓練過程中看到的token數量的增加。
訓練損失。首先,研究人員檢查了不同參數大小的LVM的訓練損失,見下圖。
由于研究人員的所有模型僅在數據集上訓練了一個epoch,因此模型只看到每個數據樣本一次,因此在訓練過程中的任何時候的訓練損失與驗證損失非常相似。
可以觀察到隨著訓練的進行:
1. 不同大小模型的訓練損失(困惑度)持續下降;
2. 隨著模型規模(參數計數)的增加,損失下降得更快。這些觀察表明,LVM在更大的模型和更多數據方面顯示出強大的可擴展性。
雖然LVM在訓練過程中整體損失良好地擴展,但并不能保證更好的整體模型也會在特定的下游任務上表現更好。
因此,研究人員在4個下游任務上評估不同大小的模型:語義分割、深度估計、表面法線估計和邊緣檢測。研究人員在ImageNet驗證集上評估這些任務。
對于每個任務,研究人員給出5對輸入和相應真實標注以及作為輸入提示的查詢圖像,并評估研究人員模型對下一個256個token(一幅圖像)的真實標注的困惑度預測。
下圖中,研究人員展示了,更大的模型確實在所有任務上獲得了更低的困惑度,展示了研究人員的可擴展整體性能確實轉化為一系列下游任務。
雖然LVM在更大的模型和更多數據上獲得了更好的性能,但很自然地一個問題是,在UVDv1中收集的每個數據組件是否有幫助。
為了回答這個問題,研究人員在研究人員的數據集上對幾個3B模型進行了消融研究,這些模型是在研究人員數據集的子集上訓練的,并比較了它們在下游任務上的表現。
研究人員使用之前相同的4個下游任務和設置,并在下圖中展示了結果。
研究人員觀察到,每個數據組件對下游任務都有積極的貢獻。LVM不僅從更大的數據中受益,而且隨著數據集中的多樣性(包括標注和無監督的圖像和視頻數據)的增加而改進。
順序提示
研究人員首先采用最直觀、最簡單的方法來對LVM進行視覺提示:順序推理。在這里,提示構建非常簡單:研究人員向模型展示7幅圖像的序列,并要求它預測下一幅圖像(256個token)。
對于順序提示來說,最直接的任務是視頻預測。下圖展示了從Kinetics-700驗證集序列中提示的幾個下一幀預測示例。
在頂部示例中,7幀提示(藍色邊框)后跟著預測的幀(紅色邊框)。研究人員觀察到在空間定位、視點和對象理解方面有一定程度的推理能力。在Kinetics驗證集上預測的困惑度為49.8。
下面示例顯示了具有更長上下文(15幀)和更長預測(4幀)的預測。
同樣類型的簡單順序提示也可以用其他方式使用。例如,下圖顯示了如何通過提示模型一個圍繞任意軸的合成對象的3D旋轉序列,使其能夠預測更進一步的旋轉。
或者研究人員可以將給定類別的物品列表視為一個序列,并預測該類別中的其他想法,如下圖所示。
值得注意的是,雖然該系統在訓練時是在同一ImageNet類別的圖像組上訓練的,但這里的提示包括素描,這些素描在任何標注數據中都沒有出現過。
接下來,研究人員研究了準確預測后續幀需要多少時序上下文。
研究人員評估了模型在不同長度(1到15幀)上下文提示下的幀生成困惑度。下圖所示,在Kinetics-700驗證集上,從1到11幀困惑度明顯改善后穩定下來(從62.1 → 48.4)。
類比提示
研究人員的研究通過評估一個更復雜的提示結構來進展,研究人員稱之為「類比提示(Analogy Prompting)」。這種方法挑戰模型理解任意長度和復雜度的類比,從而測試它的高級解釋能力。
下圖展示了在多個任務上使用類比提示的定性結果樣本。提示包括14幅圖像的序列,給出各種任務的示例,然后是第15幅查詢圖像。給定每個提示,預測的下一幅圖像。
圖的上部展示了幾個定義訓練集中任務的示例提示(但這些實際圖像從未在訓練中見過)。圖的下部展示了在訓練中從未展示過的任務的泛化。
研究人員展示了在Pascal 3D+ 上對關鍵點檢測的結果,使用標準的正確關鍵點百分比(PCK)度量,閾值為0.1。值得注意的是,LVM在未對此數據集進行訓練的情況下達到了81.2的PCK,顯示出了令人印象深刻的泛化能力。
相比之下,研究人員展示了一些現有的特定任務模型:StackedHourglass的PCK為68.0,MSS-Net達到了68.9 PCK,StarMap則有78.6 PCK。
與視覺提示的比較
與研究人員的方法最接近的,也允許定義任意任務的方法是視覺提示。在下表中,研究人員比較了幾種視覺提示模型在少量樣本分割、對象檢測和著色任務上的表現。研究人員的順序LVM在幾乎所有任務上都超過了之前的方法。
任務組合
下圖演示了在單個提示中組合多個任務。研究人員展示了旋轉任務與新的關鍵點對應任務,并要求模型繼續這種模式。模型能夠在測試時成功地組合這兩個任務,顯示出一定程度的組合性。
其他類型的提示
研究人員人員嘗試他們是否可以通過向模型提供它以前沒有見過的各種提示,看看模型能走到哪一步。
下圖展示了一些這樣的提示,效果很不錯。
下圖展示了一些不容易用語言描述的提示——這是LVM可能最終勝過LLM的任務類型。