天天看點

​基于文本提示就可自動實作複雜計算機視覺任務?

​基于文本提示就可自動實作複雜計算機視覺任務?

作者:PCIPG-HAY | 來源:3DCV

在公衆号「3DCV」背景,回複「原論文」即可擷取論文pdf。

添加微信:dddvisiona,備注:3D點雲,拉你入群。文末附行業細分群。

本文提出了 VISPROG,一種神經符号方法,用于在給定自然語言指令的情況下解決複雜的組合視覺任務。VISPROG 無需進行任何特定任務的訓練。相反,它利用大型語言模型的上下文學習能力來生成類似Python的子產品化程式,然後執行這些程式以獲得解決方案和全面且可解釋的基本原理。生成的程式的每一行都可以調用幾個現成的計算機視覺模型、圖像處理子例程或Python函數之一來産生可由程式的後續部分使用的中間輸出。我們展示了 VISPROG 在 4 個不同任務上的靈活性 - 組合視覺問答、圖像對的零樣本推理、事實知識對象标記和語言引導圖像編輯。我們相信像 VISPROG 這樣的神經符号方法是一個令人興奮的途徑,可以輕松有效地擴充人工智能系統的範圍,以服務于人們可能希望執行的複雜任務的長尾。

目的:對通用人工智能系統的追求導緻了強大的端到端可訓練模型的開發,其中許多模型渴望為人工智能提供簡單的自然語言界面使使用者能與模型進行互動。現有方法:建構這些系統的主要方法是大規模無監督預訓練,然後是監督多任務訓練。然而,這種方法需要為每個任務提供精心策劃的資料集,這使得擴充到我們最終希望這些系統執行的複雜任務變得具有挑戰性。此論文工作:在這項工作中,探索使用大型語言模型來解決複雜任務的視覺問題,方法是将自然語言描述的這些任務分解為可以由專門的端到端訓練模型或其他程式處理的更簡單的步驟。

​基于文本提示就可自動實作複雜計算機視覺任務?

圖 1.VISPROG 是一個用于組合視覺推理的子產品化且可解釋的神經符号系統(左為架構圖,右為此系統可實作的四大任務)VISPROG,它輸入視覺資料(單個圖像或一組圖像)以及自然語言指令,生成一系列步驟,如果您願意,還可以生成可視化程式,然後執行這些步驟以産生所需的輸出。可視化程式中的每一行都會調用系統目前支援的各種子產品之一。子產品可以是現成的計算機視覺模型、語言模型、OpenCV中的圖像處理子例程或算術和邏輯運算符。子產品消耗通過執行前面的代碼行産生的輸入,并輸出可被下遊消耗的中間結果。在上面的示例中,VISPROG 生成的可視化程式調用人臉檢測器、GPT-3 作為知識檢索系統,以及 CLIP作為開放詞彙圖像分類器來生成所需的輸出(參見圖。1)。VISPROG 改進了以前為視覺應用生成和執行程式的方法。對于視覺問答(VQA)任務,神經子產品網絡(NMN)[2,9,10,12]由專門的、可微分的神經子產品組成一個特定于問題的、端到端的可訓練網絡。這些方法要麼使用脆弱的、現成的語義解析器來确定性地計算子產品的布局,要麼通過 REINFORCE [30] 通過弱答案監督來學習布局生成器。相比之下,VISPROG 使用強大的語言模型(GPT-3)以及少量上下文示例,無需任何訓練即可建立複雜的程式1。VISPROG 建立的程式還使用比 NMN 更進階别的抽象,并調用經過訓練的最先進模型和非神經 Python 子例程(圖 2)。這些優點使 VISPROG 成為易于使用、高性能和子產品化的神經符号系統。VISPROG 也具有高度可解釋性。首先,VISPROG 生成易于了解的程式,使用者可以驗證其邏輯正确性。其次,通過将預測分解為簡單的步驟,VISPROG 允許使用者檢查中間步驟的輸出以診斷錯誤,并在需要時幹預推理過程。總而言之,具有中間步驟結果(例如文本、邊界框、分割掩模、生成的圖像等)的執行程式連結在一起以描述資訊流,作為預測的視覺原理。為了展示其靈活性,我們使用 VISPROG 執行 4 個不同的任務,這些任務共享一些通用技能(例如圖像解析),同時還需要一定程度的專業推理和視覺操作能力。這些任務是 - 我們強調,語言模型和任何子產品都沒有以任何方式進行微調。讓 VISPROG 适應任何任務非常簡單,隻需提供一些由自然語言指令和相應程式組成的上下文示例即可。雖然易于使用,但 VISPROG 在組合 VQA 任務上比基本 VQA 模型提高了 2.7 個點,在 NLVR 上的零樣本準确率高達 62.4%,無需對圖像對進行訓練,并且在知識标記方面取得了令人愉快的定性和定量結果和圖像編輯任務。本文貢獻點:(i) VISPROG - 一個使用語言模型的上下文學習能力從自然語言指令生成視覺程式的系統,用于組合視覺任務(第 3 節);(ii) 展示 VISPROG 在複雜視覺任務上的靈活性,例如事實知識對象标記和語言引導圖像編輯,這些任務在單一端到端模型中未能實作或取得有限成功;(iii) 為這些任務提供可視化原理,并展示它們在錯誤分析和使用者驅動指令調整方面的實用性,以顯着提高 VISPROG 的性能。

由于大型語言模型 (LLM) 令人難以置信的了解、生成和上下文學習能力,神經符号方法獲得了新的發展動力。現在簡單說明下以前的視覺任務程式生成和執行方法、最近使用LLMs進行視覺的工作以及語言任務推理方法的進展。視覺任務的程式生成和執行的相關工作。神經子產品網絡(NMN開創了視覺問答(VQA)任務的子產品化群組合方法。NMN 将神經子產品組合成端到端的可微網絡。雖然早期的嘗試使用現成的解析器 ,但最近的方法使用 REINFORCE和弱答案監督與神經子產品聯合學習布局生成模型。雖然 VISPROG 與 NMN 的精神相似,但它比 NMN 有幾個優勢。首先,VISPROG 生成進階程式,在中間步驟調用經過訓練的最先進的神經模型和其他 Python 函數,而不是生成端到端神經網絡。這使得合并符号化、不可微分的子產品變得很容易。其次,VISPROG 利用LLMs的上下文學習能力,通過使用自然語言指令(或視覺問題或待驗證的陳述)以及一些示例來提示LLM(GPT-3)來生成程式類似的指令及其相應的程式,進而無需為每個任務訓練專門的程式生成器。針對視覺任務的LLMs的相關工作。LLMs和情境學習已應用于視覺任務。PICa使用 LLM 來完成基于知識的 VQA任務。PICa 通過标題、對象和屬性将圖像中的視覺資訊表示為文本,并将該文本表示與問題和上下文示例一起提供給 GPT-3,以直接生成答案。蘇格拉底模型(SM),由不同模态組成預訓練模型,例如語言(BERT、GPT-2)、視覺語言(CLIP)和音頻語言(mSLAM),執行許多零樣本任務,包括圖像字幕、視訊到文字檢索和機器人規劃。然而,在 SM 中,每個任務的組成都是預先确定和固定的。相比之下,VISPROG 通過根據指令、問題或語句生成程式來确定如何為每個執行個體構模組化型。我們展示了 VISPROG 處理複雜指令的能力,這些指令涉及不同的功能(20 個子產品)和不同的輸入(文本、圖像和圖像對)、中間(文本、圖像、邊界框、分割掩模)和輸出模式(文本和圖像) 。與 VISPROG 類似,ProgPrompt 是一項并行工作,展示了LMM從自然語言指令生成類似 python 的機器人動作計劃的能力。雖然 ProgPrompt 子產品(例如“find”或“grab”)将字元串(通常是對象名稱)作為輸入,但 VISPROG 程式更為通用。在 VISPROG 程式的每個步驟中,子產品可以接受先前步驟生成的多個參數,包括字元串、數字、算術和邏輯表達式或任意 Python 對象(例如包含邊界框或分段掩碼的 list() 或 dict() 執行個體) 。

在過去的幾年裡,人工智能社群已經為許多視覺和語言任務(例如對象檢測、分割、VQA、字幕和文本到圖像生成)建立了高性能、特定于任務的模型。雖然這些模型中的每一個都解決了一個定義明确但範圍狹窄的問題,但我們通常想要在現實世界中解決的任務往往更廣泛且定義松散。為了解決此類實際任務,人們必須收集一個新的特定于任務的資料集,這可能會很昂貴,或者精心編寫一個調用多個神經模型、圖像處理子例程(例如圖像調整大小、裁剪、過濾和色彩空間轉換)的程式,以及其他計算(例如資料庫查找,或算術和邏輯運算)。為我們每天遇到的無限長尾的複雜任務手動建立這些程式不僅需要程式設計專業知識,而且速度慢、勞動強度大,最終不足以覆寫所有任務的空間。如果可以用自然語言描述任務并讓人工智能系統生成并執行任務無需任何訓練即可對應視覺程式似乎就可以解決問題?

GPT-3 等大型語言模型在上下文中進行了少量輸入和輸出示範後,已表現出卓越的泛化到新樣本的能力。例如,用兩個英語到法語的翻譯示例和一個新的英語短語來提示 GPT-3産生了法語翻譯“bonsoir”。請注意,我們不必微調 GPT-3 來執行第三個短語的翻譯任務。VISPROG 使用 GPT-3 的上下文學習能力來輸出自然語言指令的視覺程式。good morning -> bonjourgood day -> bonne journ ́eegood evening ->與上例中的英語和法語翻譯對類似,我們用指令對和所需的進階程式提示 GPT-3。圖3顯示了這樣一個圖像編輯任務的提示。上下文示例中的程式是手動編寫的,通常可以在沒有随附圖像的情況下建構。VISPROG 程式的每一行或程式步驟均由子產品名稱、子產品的輸入參數名稱及其值以及輸出變量名稱組成。VISPROG 程式通常使用過去步驟的輸出變量作為未來步驟的輸入。我們使用描述性子產品名稱(例如“Select”、“ColorPop”、“Replace”)、參數名稱(例如“image”、“object”、“query”)和變量名稱(例如“IMAGE”、“OBJ”)讓GPT-3了解各個子產品的輸入輸出類型以及功能。在執行期間,輸出變量可用于存儲任意資料類型。例如,“OBJ”是圖像中的對象清單,其中包含與每個對象關聯的蒙版、邊界框和文本(例如類别名稱)。

​基于文本提示就可自動實作複雜計算機視覺任務?

圖 3.VISPROG 中的程式生成。這些上下文示例與新的自然語言指令一起被輸入到 GPT-3 中。在不觀察圖像或其内容的情況下,VISPROG 會生成一個程式(圖 3 底部),該程式可以在輸入圖像上執行以執行所描述的任務。

VISPROG 目前支援 20 個子產品(圖 2),用于實作圖像了解、圖像處理(包括生成)、知識檢索以及執行算術和邏輯運算等功能。在 VISPROG 中,每個子產品都實作為一個 Python 類(代碼 1),該類具有以下方法:(i) 解析該行以提取輸入參數名稱和值以及輸出變量名稱;(ii) 執行可能涉及經過訓練的神經模型的必要計算,并使用輸出變量名稱和值更新程式狀态;(iii) 使用 html 直覺地總結該步驟的計算(稍後用于建立視覺原理)。向 VISPROG 添加新子產品隻需實作并注冊一個子產品類,而使用該子產品的程式的執行則由 VISPROG 解釋器自動處理,這将在下面介紹。      
​基于文本提示就可自動實作複雜計算機視覺任務?

圖 2. VISPROG 目前支援的子產品。紅色子產品使用神經模型(OWL-ViT、DSFD、MaskForme、CLIP、ViLT和 Stable Diffusion)。藍色子產品使用圖像處理和其他 python 子例程。這些子產品在由自然語言指令生成的程式中調用。添加新子產品來擴充 VISPROG 的功能非常簡單(代碼 1)。

class VisProgModule():     def __init__(self):        # load a trained model; move to GPU     def html(self,inputs: List,output: Any):        # return an html string visualizing step I/O             def parse(self,step: str):         # parse step and return list of input values/variable names         # and output variable name              def execute(self,step: str,state: Dict):        inputs,input_var_names,output_var_name = self.parse(step)        # get values of input variables from state         for var_name in input_var_names:             inputs.append(state[var_name])                     # perform computation using the loaded model         output = some_computation(inputs)                 # update state         state[output_var_name] = output                # visual summary of the step computation         step_html = self.html(inputs,output)         return output, step_html      

程式的執行由解釋器處理。解釋器使用輸入初始化程式狀态(将變量名稱映射到其值的字典),并逐行執行程式,同時使用該行中指定的輸入調用正确的子產品。執行每個步驟後,程式狀态将使用該步驟輸出的名稱和值進行更新。

除了執行必要的計算之外,每個子產品類還實作了一個名為 html() 的方法,以直覺地總結 HTML 片段中子產品的輸入和輸出。解釋器隻需将所有程式步驟的 HTML 摘要拼接成可視化原理(圖 4),即可用于分析程式的邏輯正确性以及檢查程式的内部結構的中間輸出。視覺原理還使使用者能夠了解失敗的原因,并盡可能地調整自然語言指令以提高性能。

​基于文本提示就可自動實作複雜計算機視覺任務?

圖 4. VISPROG 生成的視覺原理。這些基本原理直覺地總結了圖像編輯(上)和 NLVR 任務(下)推理期間生成的程式中每個計算步驟的輸入和輸出。

VISPROG 提供了一個靈活的架構,可應用于各種複雜的視覺任務。我們在 4 項任務上評估 VISPROG,這些任務需要空間推理、多圖像推理、知識檢索以及圖像生成和操作等能力。圖 5 總結了用于這些任務的輸入、輸出和子產品。我們現在描述這些任務、它們的評估設定以及上下文示例的選擇。

​基于文本提示就可自動實作複雜計算機視覺任務?

圖 5.我們在一組不同的任務上評估 VISPROG。這些任務涵蓋各種輸入和輸出,并盡可能重用子產品(Loc、FaceDet、VQA)。

VISPROG 是組合式的,這使得它适合組合式、多步驟的視覺問答任務:GQA。GQA 任務的子產品包括用于開放詞彙本地化的子產品、VQA 子產品、給定邊界框坐标或空間介詞(例如上、左等)的裁剪圖像區域的函數、計數框的子產品以及用于計算框數量的子產品。評估 Python 表達式。例如,考慮以下問題:“小卡車是在戴頭盔的人的左邊還是右邊?”。VISPROG 首先定位“戴頭盔的人”,裁剪這些人左側(或右側)的區域,檢查該側是否有“小卡車”,如果有則傳回“左”,否則傳回“右”。VISPROG 使用基于 VILT 的問答子產品,但 VISPROG 不是簡單地将複雜的原始問題傳遞給 VILT,而是調用它來執行更簡單的任務,例如識别部分圖像中的内容。是以,我們生成的 GQA VISPROG 不僅比 VILT 更容易解釋,而且更準确(表 1)。或者,我們可以完全消除對 ViLT 等 QA 模型的需求,并使用 CLIP 和對象檢測器等其他系統,但我們将其留待未來研究。評估。為了限制使用 GPT-3 生成程式所花費的資金,我們建立了一個 GQA 子集用于評估。GQA 中的每個問題都标有問題類型。為了評估不同的問題類型集(∼ 100 個詳細類型),我們從平衡的 val (k = 5) 和 testdev (k = 20) 集中随機抽取每個問題類型最多 k 個樣本。提示。我們使用所需的 VISPROG 程式手動注釋平衡訓練集中的 31 個随機問題。用程式注釋問題很容易,需要寫下回答該特定問題所需的推理鍊。我們向 GPT-3 提供了較小的上下文示例子集,從該清單中随機采樣,以減少回答每個 GQA 問題的成本。

​基于文本提示就可自動實作複雜計算機視覺任務?

表 1.GQA 測試開發結果。我們報告原始 GQA 測試開發集的一個子集的性能

VQA 模型經過訓練可以回答有關單個圖像的問題。在實踐中,人們可能需要一個系統來回答有關圖像集合的問題。例如,使用者可以要求系統解析他們的假期相冊并回答以下問題:“在我們看到埃菲爾鐵塔的第二天,我們參觀了哪個地标?”。我們展示了 VISPROG 使用單圖像 VQA 系統解決涉及多圖像的任務而無需對多圖像示例進行訓練的能力,而不是采集昂貴的資料集并訓練多圖像模型。我們在 NLVRV2基準測試中展示了這種能力,其中涉及驗證有關圖像對的語句。通常,應對 NLVRV2 挑戰需要訓練自定義架構,将圖像對作為 NLVRV2 訓練集的輸入。相反,VISPROG 通過将複雜的語句分解為有關單個圖像的簡單問題和涉及算術和邏輯運算符的 Python 表達式以及圖像級問題的答案來實作此目的。VQA模型VILT-VQA用于擷取圖像級答案,并評估python表達式以驗證該語句。評估。我們通過從 NLVRV2 開發集中抽取 250 個随機樣本來建立一個小型驗證集,以指導提示選擇,并在 NLVRV2 的完整公共測試集上測試泛化。提示。我們針對 NLVRV2 訓練集中的 16 個随機語句對 VISPROG 程式進行采樣和注釋。由于其中一些示例是備援的(類似的程式結構),我們還通過删除 4 個備援示例來建立 12 個示例的精選子集。

我們經常想要識别圖像中我們不知道名字的人和物體。例如,我們可能想要識别名人、政治家、電視節目中的人物、國家國旗、公司徽标、流行汽車及其制造商、生物物種等等。解決這個任務不僅需要定位人、面孔和物體,還需要在外部知識庫中查找事實知識來建構一組類别進行分類,例如電視節目中角色的名字。我們将此任務簡稱為事實知識對象标記或知識标記。為了解決知識标簽問題,VISPROG 使用 GPT-3 作為隐式知識庫,可以通過自然語言提示進行查詢,例如“列出電視節目《生活大爆炸》中的主要角色,用逗号分隔。”然後,CLIP 圖像分類子產品可以使用生成的類别清單,該子產品對定位和人臉檢測子產品生成的圖像區域進行分類。VISPROG 的程式生成器根據自然語言指令中的上下文自動确定是使用面部檢測器還是開放詞彙定位器。VISPROG 還估計檢索到的類别清單的最大大小。例如,“标記前 5 個德國汽車公司的徽标”會生成一個包含 5 個類别的清單,而“标記德國汽車公司的徽标”則會生成一個由 GPT-3 确定的任意長度的清單,截止值為 20這使得使用者可以通過調整指令輕松控制分類過程中的噪聲。評估。為了評估 VISPROG 在此任務上的表現,我們在 46 個圖像中注釋了 100 個标記指令,這些圖像需要外部知識來标記 253 個對象執行個體,包括流行文化、政治、體育和藝術領域的人物,以及各種對象(例如汽車、旗幟、 水果、電器、家具等)。對于每條指令,我們通過精度(正确預測框的分數)和召回率(正确預測的地面實況對象的分數)來衡量定位和标記性能。标記度量要求預測的邊界框和關聯的标簽或類标簽都是正确的,而本地化會忽略标簽。為了确定定位的正确性,我們使用 IoU 門檻值 0.5。我們通過 F1 分數(指令間平均精度和召回率的調和平均值)總結定位和标記性能。提示。我們為此任務建立了 14 個上下文示例。請注意,這些示例的說明是幻覺的,即沒有圖像與這些示例相關聯。

文本到圖像的生成在過去幾年中通過 DALL-E、Parti 和 Stable Diffusion等模型取得了令人印象深刻的進步。然而,這些模型仍然無法處理諸如“用 :p 隐藏 Daniel Craig 的臉部”(去識别化或隐私保護)或“建立 Daniel Craig 的流行顔色并模糊背景”之類的提示(對象突出顯示),盡管使用面部檢測、分割和圖像處理子產品的組合以程式設計方式實作這些相對簡單。實作複雜的編輯,例如“用戴着墨鏡的巴拉克·奧巴馬替換巴拉克·奧巴馬”(對象替換),首先需要識别感興趣的對象,生成要替換的對象的掩模,然後調用圖像修複模型(我們使用穩定擴散) )與原始圖像、指定要替換的像素的掩碼以及要在該位置生成的新像素的描述。當VISPROG配備必要的子產品和示例程式時,可以輕松處理非常複雜的指令。評估。為了測試 VISPROG 的去識别、對象突出顯示和對象替換的圖像編輯指令,我們收集了 65 張圖像中的 107 條指令。我們手動對預測的正确性和報告準确性進行評分。請注意,隻要生成的圖像在語義上正确,我們就不會懲罰使用穩定擴散的對象替換子任務的視覺僞影。提示。與知識标記類似,我們為此任務建立了 10 個沒有關聯圖像的上下文示例。

我們的實驗評估了提示數量對 GQA 和 NLVR 性能的影響(第 5.1 節),比較各種提示政策的 VISPROG 在四個任務上的泛化(第 5.2 節),分析每個任務的錯誤來源(圖 9),并研究視覺原理在診斷錯誤和通過指令調整提高 VISPROG 性能方面的實用性(第 5.3 節)。

圖 6 顯示,随着 GQA 和 NLVR 提示中使用的上下文示例數量的增加,驗證性能逐漸提高。每次運作都會根據随機種子随機選擇帶注釋的上下文示例的子集。我們還發現,對随機種子進行多數投票所帶來的性能始終優于運作中的平均性能。這與數學推理問題的思想鍊推理文獻中的發現是一緻的。在 NLVR 上,VISPROG 的性能在提示數少于 GQA 的情況下達到飽和。我們認為這是因為 NLVRV2 程式比 GQA 需要更少的子產品,是以使用這些子產品的示範也更少。

​基于文本提示就可自動實作複雜計算機視覺任務?

圖 6. GQA 和 NLVRV2 驗證集上的上下文示例數量提高了性能。誤差線代表 5 次運作的 95% 置信區間。來自相同運作的預測用于多數投票。(第 5.1 節)

GQA。在表1中, 我們在 GQA testdev集上評估不同的提示政策。對于在驗證集上評估的最大提示大小(24 個上下文中的示例),我們比較了由 VISPROG 在驗證集上的 5 次運作中選擇的最佳提示組成的随機政策(每次運作從 31 個帶注釋的示例中随機采樣上下文中的示例) )以及多數投票政策,該政策在 5 次運作中對每個問題進行最大共識預測。雖然“随機”提示僅略微優于 VILT-VQA,但投票帶來了 2.7 個百分點的顯着收益。這是因為在多次運作中進行投票,每次運作都有一組不同的上下文示例,有效地增加了每個預測看到的上下文示例的總數。我們還評估了一個手動策劃的提示,其中包含 20 個示例,其中 16 個來自 31 個帶注釋的示例,以及 4 個額外的幻覺示例,旨在更好地覆寫驗證集中觀察到的失敗案例。精心策劃的提示的性能與投票政策一樣好,同時使用的計算量減少了 5 倍,凸顯了提示工程的前景。NLVR。表2 顯示了 VISPROG 在 NLVRV2 測試集上的性能,并比較了随機、投票和策劃的提示政策與 GQA 的效果。雖然 VISPROG 在無需對圖像對進行訓練的情況下零樣本執行 NLVR 任務,但我們報告了 VILT-NLVR,這是一種在 NLVRV2 上進行微調的 VILT 模型,作為性能上限。雖然落後上限幾個點,但 VISPROG 僅使用單圖像 VQA 模型進行圖像了解和 LLM 進行推理,顯示出強大的零樣本性能。請注意,VISPROG 使用 VILT-VQA 作為其 VQA 子產品,該子產品在 VQAV2 單圖像問答任務上進行訓練,而不是在 NLVRV2 上進行訓練。

​基于文本提示就可自動實作複雜計算機視覺任務?

表 2. NLVRV2 測試結果。VISPROG 執行 NLVR 零樣本,即無需在圖像對上訓練任何子產品。VILT-NLVR 是在 NLVRV2 上微調的 VILT 模型,用作上限。Knowledge Tagging。表3 顯示了知識标記任務的本地化和标記性能。此任務的所有指令不僅需要開放詞彙本地化,還需要查詢知識庫以擷取類别來标記本地化對象。這使得僅靠物體檢測器來說這是一項不可能完成的任務。使用原始指令,VISPROG 在标記方面取得了令人印象深刻的 63.7% F1 分數,其中涉及正确本地化和命名對象,僅在本地化方面就取得了 80.6% F1 分數。VISPROG 中的視覺原理允許通過修改指令進一步提高性能。

​基于文本提示就可自動實作複雜計算機視覺任務?

表 3. 知識标記結果。該表顯示了原始指令的性能以及在檢查視覺原理以了解特定于執行個體的錯誤來源後建立的修改指令的性能。Image Editing。表4 顯示了語言引導圖像編輯任務的性能。圖 7 顯示了 VISPROG 中目前子產品集可能進行的廣泛操作,包括面部操作、通過顔色彈出和背景模糊等風格效果突出顯示圖像中的一個或多個對象,以及通過替換關鍵元素來更改場景上下文 在場景中(例如沙漠)。

​基于文本提示就可自動實作複雜計算機視覺任務?

表 4. 圖像編輯結果。我們手動評估每個預測的語義正确性。

​基于文本提示就可自動實作複雜計算機視覺任務?

圖 7. 圖像編輯(頂部)和知識标記任務(底部)的定性結果。

誤差分析。

VISPROG 的可視化原理可以對故障模式進行徹底分析。在圖 9 中,我們檢查每個任務約 100 個樣本的基本原理,以分解錯誤來源。此類分析為提高 VISPROG 在各種任務上的性能提供了明确的途徑。例如,由于不正确的程式是 GQA 錯誤的主要來源,影響了 16% 的樣本,是以可以通過提供更多類似于失敗問題的上下文示例來提高 GQA 的性能。通過将用于實作高錯誤子產品的模型更新為性能更高的子產品,也可以提高性能。例如,用更好的 NLVR VQA 模型替換 VILT-VQA 模型可以将性能提高高達 24%(圖 9)。同樣,改進用于實作“清單”和“選擇”子產品(知識标記和圖像編輯任務的主要錯誤來源)的模型可以顯着減少錯誤。

​基于文本提示就可自動實作複雜計算機視覺任務?

圖 9. VISPROG 中的誤差源。

指令調整。

為了有用,視覺原理最終必須允許使用者提高系統在其任務中的性能。對于知識标記和圖像編輯任務,我們研究視覺原理是否可以幫助使用者修改或調整指令以實作更好的性能。圖 8 顯示了通過視覺原理揭示的本地化錯誤如何使使用者能夠修改指令,以便更好地查詢本地化子產品。修改指令的其他方式包括為知識檢索提供更好的查詢或為選擇子產品提供類别名稱以将搜尋限制到屬于該類别的分段區域。表 3 和表 4 顯示,指令調整可為知識标記和圖像編輯任務帶來顯着收益。

​基于文本提示就可自動實作複雜計算機視覺任務?

圖 8. 使用視覺原理調整指令。通過揭示失敗的原因,VISPROG 允許使用者修改原始指令以提高性能。

VISPROG 提出可視化程式設計作為一種簡單而有效的方式,将LMMs的推理能力用于複雜的視覺任務。VISPROG 展示了強大的性能,同時生成高度可解釋的視覺原理。我們相信,研究整合使用者回報以提高 VISPROG 等神經符号系統性能的新方法是建構下一代通用視覺系統的一個令人興奮的方向。

繼續閱讀